Skip to content

Commit 16c4907

Browse files
committed
feat: add permission rewriter for app by name
1 parent f6a4413 commit 16c4907

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed

packages/backend/src/services/ProtectedAppService.js

+17-1
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,28 @@
11
const { get_app } = require("../helpers");
22
const { UserActorType } = require("./auth/Actor");
3-
const { PermissionImplicator, PermissionUtil } = require("./auth/PermissionService");
3+
const { PermissionImplicator, PermissionUtil, PermissionRewriter } = require("./auth/PermissionService");
44
const BaseService = require("./BaseService");
55

66
class ProtectedAppService extends BaseService {
77
async _init () {
88
const svc_permission = this.services.get('permission');
99

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+
1026
// track: object description in comment
1127
// Owner of procted app has implicit permission to access it
1228
svc_permission.register_implicator(PermissionImplicator.create({

0 commit comments

Comments
 (0)