@@ -177,7 +177,7 @@ export default class PermissionVerify {
177177 if ( ! model ) {
178178 // 允许通配
179179 if ( confirm . wildcard ) {
180- model = await this . permissionDAO . findByKey ( request . uuid , confirm . permission , confirm . permissionValue || " ") ;
180+ model = await this . permissionDAO . findByKey ( request . uuid , confirm . permission , "* ") ;
181181 }
182182 }
183183 return Promise . resolve ( model ) ;
@@ -315,11 +315,9 @@ export default class PermissionVerify {
315315 const oldConfirm = await this . permissionDAO . findByKey ( data . uuid , data . permission , data . permissionValue ) ;
316316 if ( ! oldConfirm ) {
317317 throw new Error ( "permission not found" ) ;
318- } else {
319- await this . permissionDAO . delete ( this . permissionDAO . key ( oldConfirm ) ) ;
320- // 删除缓存
321- Cache . getInstance ( ) . del ( CacheKey . permissionConfirm ( data . uuid , oldConfirm ) ) ;
322318 }
319+ await this . permissionDAO . delete ( this . permissionDAO . key ( oldConfirm ) ) ;
320+ this . clearCache ( data . uuid ) ;
323321 }
324322
325323 getScriptPermissions ( uuid : string ) {
@@ -330,7 +328,7 @@ export default class PermissionVerify {
330328 // 添加权限
331329 async addPermission ( permission : Permission ) {
332330 await this . permissionDAO . save ( permission ) ;
333- Cache . getInstance ( ) . del ( CacheKey . permissionConfirm ( permission . uuid , permission ) ) ;
331+ this . clearCache ( permission . uuid ) ;
334332 }
335333
336334 // 重置权限
@@ -339,8 +337,24 @@ export default class PermissionVerify {
339337 const permissions = await this . permissionDAO . find ( ( key , item ) => item . uuid === uuid ) ;
340338 permissions . forEach ( ( item ) => {
341339 this . permissionDAO . delete ( this . permissionDAO . key ( item ) ) ;
342- Cache . getInstance ( ) . del ( CacheKey . permissionConfirm ( uuid , item ) ) ;
343340 } ) ;
341+ this . clearCache ( uuid ) ;
342+ }
343+
344+ clearCache ( uuid : string ) {
345+ return Cache . getInstance ( )
346+ . list ( )
347+ . then ( ( keys ) => {
348+ // 删除所有以permission:uuid:开头的缓存
349+ return Promise . all (
350+ keys . map ( ( key ) => {
351+ if ( key . startsWith ( `permission:${ uuid } :` ) ) {
352+ return Cache . getInstance ( ) . del ( key ) ;
353+ }
354+ return Promise . resolve ( ) ;
355+ } )
356+ ) ;
357+ } ) ;
344358 }
345359
346360 init ( ) {
@@ -349,7 +363,7 @@ export default class PermissionVerify {
349363 this . group . on ( "getInfo" , this . getInfo . bind ( this ) ) ;
350364 this . group . on ( "deletePermission" , this . deletePermission . bind ( this ) ) ;
351365 this . group . on ( "getScriptPermissions" , this . getScriptPermissions . bind ( this ) ) ;
352- this . group . on ( "addPermission" , this . getInfo . bind ( this ) ) ;
366+ this . group . on ( "addPermission" , this . addPermission . bind ( this ) ) ;
353367 this . group . on ( "resetPermission" , this . resetPermission . bind ( this ) ) ;
354368
355369 subscribeScriptDelete ( this . mq , ( data ) => {
0 commit comments