temp add delete all keys
This commit is contained in:
parent
0a72db7771
commit
ad0d2e717f
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@kevisual/code-center-module",
|
||||
"version": "0.0.17",
|
||||
"version": "0.0.18",
|
||||
"description": "",
|
||||
"main": "dist/system.mjs",
|
||||
"module": "dist/system.mjs",
|
||||
|
@ -70,6 +70,7 @@ interface Store<T> {
|
||||
delObject: (value?: T) => Promise<void>;
|
||||
keys: (key?: string) => Promise<string[]>;
|
||||
setToken: (value: { accessToken: string; refreshToken: string; value?: T }, opts?: StoreSetOpts) => Promise<void>;
|
||||
delKeys: (keys: string[]) => Promise<number>;
|
||||
}
|
||||
export class RedisTokenStore implements Store<OauthUser> {
|
||||
private redis: Redis;
|
||||
@ -168,6 +169,11 @@ export class RedisTokenStore implements Store<OauthUser> {
|
||||
await this.set(userPrefix + ':refreshToken:' + refreshToken, refreshToken, refreshTokenExpire);
|
||||
}
|
||||
}
|
||||
async delKeys(keys: string[]) {
|
||||
const prefix = this.prefix;
|
||||
const number = await this.redis.del(keys.map((key) => prefix + key));
|
||||
return number;
|
||||
}
|
||||
}
|
||||
|
||||
export class OAuth<T extends OauthUser> {
|
||||
@ -285,4 +291,39 @@ export class OAuth<T extends OauthUser> {
|
||||
}
|
||||
this.store.delObject(user);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取某一个用户的所有token
|
||||
* @param userId
|
||||
* @returns
|
||||
*/
|
||||
async getUserTokens(userId: string, orgId?: string) {
|
||||
const userPrefix = orgId ? `org:${orgId}:user:${userId}` : `user:${userId}`;
|
||||
const tokens = await this.store.keys(`${userPrefix}:token:*`);
|
||||
return tokens;
|
||||
}
|
||||
/**
|
||||
* 过期某一个用户的所有token
|
||||
* @param userId
|
||||
* @param orgId
|
||||
*/
|
||||
async expireUserTokens(userId: string, orgId?: string) {
|
||||
const userPrefix = orgId ? `org:${orgId}:user:${userId}` : `user:${userId}`;
|
||||
const tokens = await this.store.keys(`${userPrefix}:token:*`);
|
||||
for (const token of tokens) {
|
||||
try {
|
||||
const user = await this.store.getObject(token);
|
||||
this.store.delObject(user);
|
||||
} catch (error) {
|
||||
console.error('expireUserTokens error', userId, orgId, error);
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 过期所有用户的token, 然后重启服务
|
||||
*/
|
||||
async expireAllTokens() {
|
||||
const tokens = await this.store.keys('*');
|
||||
await this.store.delKeys(tokens);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user