From 2305b973649c3045104cd0af75f1b9ecf81ebede Mon Sep 17 00:00:00 2001 From: Evert Prants Date: Sun, 4 Dec 2022 14:24:10 +0200 Subject: [PATCH] some tweaks, split redis from session --- src/app.controller.ts | 2 +- src/app.service.ts | 6 +---- .../api/admin/audit-admin.controller.ts | 2 +- src/modules/redis/redis.module.ts | 10 +++++++ src/modules/redis/redis.providers.ts | 25 ++++++++++++++++++ .../ssr-front-end/session/session.module.ts | 3 ++- .../session/session.providers.ts | 26 +++++-------------- .../well-known/well-known.controller.ts | 5 ++-- 8 files changed, 50 insertions(+), 29 deletions(-) create mode 100644 src/modules/redis/redis.module.ts create mode 100644 src/modules/redis/redis.providers.ts diff --git a/src/app.controller.ts b/src/app.controller.ts index 86b3312..92a17f9 100644 --- a/src/app.controller.ts +++ b/src/app.controller.ts @@ -4,7 +4,7 @@ import { Controller, Get, Redirect } from '@nestjs/common'; export class AppController { @Get() @Redirect('/account/general') - getHello() { + trueURLRedirect() { return; } } diff --git a/src/app.service.ts b/src/app.service.ts index 927d7cc..7263d33 100644 --- a/src/app.service.ts +++ b/src/app.service.ts @@ -1,8 +1,4 @@ import { Injectable } from '@nestjs/common'; @Injectable() -export class AppService { - getHello(): string { - return 'Hello World!'; - } -} +export class AppService {} diff --git a/src/modules/api/admin/audit-admin.controller.ts b/src/modules/api/admin/audit-admin.controller.ts index c4a757e..c85811e 100644 --- a/src/modules/api/admin/audit-admin.controller.ts +++ b/src/modules/api/admin/audit-admin.controller.ts @@ -32,7 +32,7 @@ export class AuditAdminController { @Get('') @Scopes('management') @Privileges('admin', 'admin:audit') - async userList(@Query() search: AuditSearchClause & PageOptions) { + async auditList(@Query() search: AuditSearchClause & PageOptions) { const resultCount = await this._audit.searchForAuditCount(search); const pagination = this._paginate.paginate(search, resultCount); diff --git a/src/modules/redis/redis.module.ts b/src/modules/redis/redis.module.ts new file mode 100644 index 0000000..ed04f6d --- /dev/null +++ b/src/modules/redis/redis.module.ts @@ -0,0 +1,10 @@ +import { Module } from '@nestjs/common'; +import { ConfigurationModule } from '../config/config.module'; +import { redisProviders } from './redis.providers'; + +@Module({ + imports: [ConfigurationModule], + providers: [...redisProviders], + exports: [...redisProviders], +}) +export class RedisModule {} diff --git a/src/modules/redis/redis.providers.ts b/src/modules/redis/redis.providers.ts new file mode 100644 index 0000000..995ee4f --- /dev/null +++ b/src/modules/redis/redis.providers.ts @@ -0,0 +1,25 @@ +import { FactoryProvider } from '@nestjs/common'; +import { ConfigurationService } from '../config/config.service'; +import * as redis from 'redis'; + +export type Redis = ReturnType; + +export const redisProviders = [ + { + provide: 'REDIS_CLIENT', + useFactory: async (config: ConfigurationService): Promise => { + const redisClient = redis.createClient({ + url: + process.env.REDIS_URL || + config.get('app.redis_url') || + 'redis://localhost:6379', + legacyMode: true, + }); + + await redisClient.connect(); + + return redisClient; + }, + inject: [ConfigurationService], + } as FactoryProvider, +]; diff --git a/src/modules/ssr-front-end/session/session.module.ts b/src/modules/ssr-front-end/session/session.module.ts index adda335..dd4b54d 100644 --- a/src/modules/ssr-front-end/session/session.module.ts +++ b/src/modules/ssr-front-end/session/session.module.ts @@ -1,10 +1,11 @@ import { Module } from '@nestjs/common'; import { ConfigurationModule } from 'src/modules/config/config.module'; +import { RedisModule } from 'src/modules/redis/redis.module'; import { sessionProviders } from './session.providers'; @Module({ providers: [...sessionProviders], exports: [...sessionProviders], - imports: [ConfigurationModule], + imports: [ConfigurationModule, RedisModule], }) export class SessionModule {} diff --git a/src/modules/ssr-front-end/session/session.providers.ts b/src/modules/ssr-front-end/session/session.providers.ts index 203e6a5..494cc4e 100644 --- a/src/modules/ssr-front-end/session/session.providers.ts +++ b/src/modules/ssr-front-end/session/session.providers.ts @@ -3,29 +3,17 @@ import { ConfigurationService } from 'src/modules/config/config.service'; import * as session from 'express-session'; import * as connectRedis from 'connect-redis'; -import * as redis from 'redis'; -import { RequestHandler } from 'express'; +import type { RequestHandler } from 'express'; +import type { Redis } from 'src/modules/redis/redis.providers'; + +const RedisStore = connectRedis(session); export const sessionProviders = [ { provide: 'SESSION_STORE', - useFactory: async ( - config: ConfigurationService, - ): Promise => { - const RedisStore = connectRedis(session); - const redisClient = redis.createClient({ - url: - process.env.REDIS_URL || - config.get('app.redis_url') || - 'redis://localhost:6379', - legacyMode: true, - }); - - await redisClient.connect(); - - return new RedisStore({ client: redisClient }); - }, - inject: [ConfigurationService], + useFactory: async (redis: Redis): Promise => + new RedisStore({ client: redis }), + inject: ['REDIS_CLIENT'], } as FactoryProvider, { provide: 'SESSION', diff --git a/src/modules/well-known/well-known.controller.ts b/src/modules/well-known/well-known.controller.ts index d3fb1f1..f04dfd6 100644 --- a/src/modules/well-known/well-known.controller.ts +++ b/src/modules/well-known/well-known.controller.ts @@ -39,7 +39,9 @@ Contact: mailto:evert@lunasqu.ee userinfo_endpoint: `${base}/api/user`, introspection_endpoint: `${base}/oauth2/introspect`, response_types_supported: ['code', 'id_token'], - id_token_signing_alg_values_supported: [this.config.get('jwt.algorithm')], + id_token_signing_alg_values_supported: [ + this.config.get('jwt.algorithm'), + ], subject_types_supported: ['public'], scopes_supported: ['openid', 'profile', 'picture', 'email'], claims_supported: [ @@ -51,7 +53,6 @@ Contact: mailto:evert@lunasqu.ee 'name', 'preferred_username', 'nickname', - 'profile', 'picture', 'updated_at', 'email',