mirror of
https://github.com/HeyPuter/puter.git
synced 2025-02-02 23:28:39 +08:00
feat: add permission rewriter for app by name
This commit is contained in:
parent
f6a4413411
commit
16c4907be5
@ -1,12 +1,28 @@
|
||||
const { get_app } = require("../helpers");
|
||||
const { UserActorType } = require("./auth/Actor");
|
||||
const { PermissionImplicator, PermissionUtil } = require("./auth/PermissionService");
|
||||
const { PermissionImplicator, PermissionUtil, PermissionRewriter } = require("./auth/PermissionService");
|
||||
const BaseService = require("./BaseService");
|
||||
|
||||
class ProtectedAppService extends BaseService {
|
||||
async _init () {
|
||||
const svc_permission = this.services.get('permission');
|
||||
|
||||
svc_permission.register_rewriter(PermissionRewriter.create({
|
||||
matcher: permission => {
|
||||
if ( ! permission.startsWith('app:') ) return false;
|
||||
const [_, specifier] = PermissionUtil.split(permission);
|
||||
if ( specifier.startsWith('uid#') ) return false;
|
||||
return true;
|
||||
},
|
||||
rewriter: async permission => {
|
||||
const [_1, name, ...rest] = PermissionUtil.split(permission);
|
||||
const app = await get_app({ name });
|
||||
return PermissionUtil.join(
|
||||
_1, `uid#${app.uid}`, ...rest,
|
||||
);
|
||||
},
|
||||
}));
|
||||
|
||||
// track: object description in comment
|
||||
// Owner of procted app has implicit permission to access it
|
||||
svc_permission.register_implicator(PermissionImplicator.create({
|
||||
|
Loading…
Reference in New Issue
Block a user