Skip to content

Commit 7844d13

Browse files
committed
feat(session): default root session
1 parent 8cf4323 commit 7844d13

File tree

2 files changed

+42
-4
lines changed

2 files changed

+42
-4
lines changed

src/config/config.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,3 +93,8 @@ export const defaultUser = {
9393
.split(',')
9494
.map((role) => role.trim()),
9595
};
96+
97+
export const rootSession = {
98+
key: loadEnv('ROOT_SESSION_KEY'),
99+
expires: '10y',
100+
};

src/session/session.module.ts

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
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';
59
import { SessionController } from './session.controller';
610
import { 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

Comments
 (0)