1- import { Module } from '@nestjs/common' ;
2- import { MongooseModule } from '@nestjs/mongoose' ;
1+ import { Module , OnModuleInit } from '@nestjs/common' ;
2+ import { InjectModel , MongooseModule } from '@nestjs/mongoose' ;
3+ import { Model } from 'mongoose' ;
34
4- import { Session , SessionSchema } from './entities/session.entity' ;
5+ import { rootSession } from 'src/config' ;
6+ import { addShortTimeSpan } from 'src/lib/lang/time' ;
7+
8+ import { Session , SessionDocument , SessionSchema } from './entities/session.entity' ;
59import { SessionController } from './session.controller' ;
610import { SessionService } from './session.service' ;
711
@@ -11,4 +15,33 @@ import { SessionService } from './session.service';
1115 providers : [ SessionService ] ,
1216 exports : [ SessionService ] ,
1317} )
14- export class SessionModule { }
18+ export class SessionModule implements OnModuleInit {
19+ constructor ( @InjectModel ( Session . name ) private readonly sessionModel : Model < SessionDocument > ) { }
20+
21+ async onModuleInit ( ) {
22+ // 如果配置了 ROOT_SESSION_KEY,则创建或更新 rootSession
23+ if ( rootSession . key ) {
24+ const key = rootSession . key ;
25+ const subject = 'root' ;
26+ const expireAt = addShortTimeSpan ( rootSession . expires ) ;
27+
28+ await this . sessionModel
29+ . findOneAndUpdate (
30+ { key } ,
31+ {
32+ key,
33+ subject,
34+ expireAt,
35+ type : 'api-key' ,
36+ remark : 'Root session created by system' ,
37+ } ,
38+ { upsert : true , new : true }
39+ )
40+ . exec ( ) ;
41+
42+ console . log (
43+ `Root session initialized: key=${ key } , subject=${ subject } , expireAt=${ expireAt . toISOString ( ) } `
44+ ) ;
45+ }
46+ }
47+ }
0 commit comments