File tree 1 file changed +17
-1
lines changed
packages/backend/src/services
1 file changed +17
-1
lines changed Original file line number Diff line number Diff line change 1
1
const { get_app } = require ( "../helpers" ) ;
2
2
const { UserActorType } = require ( "./auth/Actor" ) ;
3
- const { PermissionImplicator, PermissionUtil } = require ( "./auth/PermissionService" ) ;
3
+ const { PermissionImplicator, PermissionUtil, PermissionRewriter } = require ( "./auth/PermissionService" ) ;
4
4
const BaseService = require ( "./BaseService" ) ;
5
5
6
6
class ProtectedAppService extends BaseService {
7
7
async _init ( ) {
8
8
const svc_permission = this . services . get ( 'permission' ) ;
9
9
10
+ svc_permission . register_rewriter ( PermissionRewriter . create ( {
11
+ matcher : permission => {
12
+ if ( ! permission . startsWith ( 'app:' ) ) return false ;
13
+ const [ _ , specifier ] = PermissionUtil . split ( permission ) ;
14
+ if ( specifier . startsWith ( 'uid#' ) ) return false ;
15
+ return true ;
16
+ } ,
17
+ rewriter : async permission => {
18
+ const [ _1 , name , ...rest ] = PermissionUtil . split ( permission ) ;
19
+ const app = await get_app ( { name } ) ;
20
+ return PermissionUtil . join (
21
+ _1 , `uid#${ app . uid } ` , ...rest ,
22
+ ) ;
23
+ } ,
24
+ } ) ) ;
25
+
10
26
// track: object description in comment
11
27
// Owner of procted app has implicit permission to access it
12
28
svc_permission . register_implicator ( PermissionImplicator . create ( {
You can’t perform that action at this time.
0 commit comments