diff --git a/package-lock.json b/package-lock.json index d5cabb5..7bea344 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,6 +30,7 @@ "class-validator": "^0.14.1", "cookie-parser": "^1.4.7", "ejs": "^6.0.1", + "express-ejs-layouts": "^2.5.1", "helmet": "^8.0.0", "ioredis": "^5.5.0", "nestjs-pino": "^4.1.0", @@ -6472,6 +6473,11 @@ "url": "https://opencollective.com/express" } }, + "node_modules/express-ejs-layouts": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/express-ejs-layouts/-/express-ejs-layouts-2.5.1.tgz", + "integrity": "sha512-IXROv9n3xKga7FowT06n1Qn927JR8ZWDn5Dc9CJQoiiaaDqbhW5PDmWShzbpAa2wjWT1vJqaIM1S6vJwwX11gA==" + }, "node_modules/express/node_modules/cookie-signature": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", diff --git a/package.json b/package.json index e5f98ce..0f890d4 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "class-validator": "^0.14.1", "cookie-parser": "^1.4.7", "ejs": "^6.0.1", + "express-ejs-layouts": "^2.5.1", "helmet": "^8.0.0", "ioredis": "^5.5.0", "nestjs-pino": "^4.1.0", diff --git a/src/main.ts b/src/main.ts index c14edb4..5822c44 100644 --- a/src/main.ts +++ b/src/main.ts @@ -4,6 +4,7 @@ import { Logger } from 'nestjs-pino'; import { NestExpressApplication } from '@nestjs/platform-express'; import * as helmet from 'helmet'; import cookieParser from 'cookie-parser'; +import expressLayouts from 'express-ejs-layouts'; import { join } from 'node:path'; import { existsSync } from 'node:fs'; import { AppModule } from './app.module'; @@ -41,6 +42,8 @@ async function bootstrap(): Promise { if (existsSync(viewsPath)) { app.setBaseViewsDir(viewsPath); app.setViewEngine('ejs'); + app.use(expressLayouts); + app.set('layout', 'layouts/main'); } const publicPath = join(process.cwd(), 'public'); diff --git a/src/web/web.controller.ts b/src/web/web.controller.ts index 2ed445e..1f5dc04 100644 --- a/src/web/web.controller.ts +++ b/src/web/web.controller.ts @@ -22,14 +22,14 @@ export class WebController { @Get('login') @Render('auth/login') loginPage() { - return {}; + return { title: 'Login' }; } @Public() @Get('register') @Render('auth/register') registerPage() { - return {}; + return { title: 'Register' }; } @UseGuards(AuthGuard('jwt')) @@ -51,7 +51,7 @@ export class WebController { createdAt: true, }, }); - return { user: profile }; + return { title: 'Profile', user: profile }; } @UseGuards(AuthGuard('jwt'), RolesGuard) @@ -79,6 +79,7 @@ export class WebController { where: { isActive: true }, }); return { + title: 'Admin', user: { email: jwtUser.email, role: jwtUser.role }, users, stats: { users: totalUsers, clients, activeSessions }, @@ -110,6 +111,7 @@ export class WebController { where: { isActive: true }, }); return { + title: 'Admin', user: { email: jwtUser.email, role: jwtUser.role }, users, stats: { users: totalUsers, clients, activeSessions }, @@ -133,6 +135,7 @@ export class WebController { where: { isActive: true }, }); return { + title: 'Admin - OAuth Clients', user: { email: jwtUser.email, role: jwtUser.role }, clients, stats: { users: totalUsers, clients: totalClients, activeSessions }, diff --git a/views/admin/clients.ejs b/views/admin/clients.ejs index 6601962..3b31b2a 100644 --- a/views/admin/clients.ejs +++ b/views/admin/clients.ejs @@ -1,5 +1,3 @@ -<% title = 'Admin - OAuth Clients'; %> -<% include ../layouts/main.ejs %>