temp add delete all keys
This commit is contained in:
parent
0a72db7771
commit
ad0d2e717f
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@kevisual/code-center-module",
|
"name": "@kevisual/code-center-module",
|
||||||
"version": "0.0.17",
|
"version": "0.0.18",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "dist/system.mjs",
|
"main": "dist/system.mjs",
|
||||||
"module": "dist/system.mjs",
|
"module": "dist/system.mjs",
|
||||||
|
@ -70,6 +70,7 @@ interface Store<T> {
|
|||||||
delObject: (value?: T) => Promise<void>;
|
delObject: (value?: T) => Promise<void>;
|
||||||
keys: (key?: string) => Promise<string[]>;
|
keys: (key?: string) => Promise<string[]>;
|
||||||
setToken: (value: { accessToken: string; refreshToken: string; value?: T }, opts?: StoreSetOpts) => Promise<void>;
|
setToken: (value: { accessToken: string; refreshToken: string; value?: T }, opts?: StoreSetOpts) => Promise<void>;
|
||||||
|
delKeys: (keys: string[]) => Promise<number>;
|
||||||
}
|
}
|
||||||
export class RedisTokenStore implements Store<OauthUser> {
|
export class RedisTokenStore implements Store<OauthUser> {
|
||||||
private redis: Redis;
|
private redis: Redis;
|
||||||
@ -168,6 +169,11 @@ export class RedisTokenStore implements Store<OauthUser> {
|
|||||||
await this.set(userPrefix + ':refreshToken:' + refreshToken, refreshToken, refreshTokenExpire);
|
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> {
|
export class OAuth<T extends OauthUser> {
|
||||||
@ -285,4 +291,39 @@ export class OAuth<T extends OauthUser> {
|
|||||||
}
|
}
|
||||||
this.store.delObject(user);
|
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