From 02ddfcc567c5b19874077361e5d4eca02e737327 Mon Sep 17 00:00:00 2001 From: KernelDeimos Date: Tue, 4 Mar 2025 14:37:41 -0500 Subject: [PATCH] dev: add puter.perms module to puter.js --- src/puter-js/src/modules/Perms.js | 71 +++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 src/puter-js/src/modules/Perms.js diff --git a/src/puter-js/src/modules/Perms.js b/src/puter-js/src/modules/Perms.js new file mode 100644 index 000000000..27efbe333 --- /dev/null +++ b/src/puter-js/src/modules/Perms.js @@ -0,0 +1,71 @@ +export default class Perms { + setAuthToken (authToken) { + this.authToken = authToken; + } + setAPIOrigin (APIOrigin) { + this.APIOrigin = APIOrigin; + } + async req_ (route, body) { + const resp = await fetch( + this.APIOrigin + route, { + method: 'POST', + headers: { + Authorization: `Bearer ${this.authToken}`, + 'Content-Type': 'application/json', + }, + body: JSON.stringify(body), + } + ); + return await resp.json(); + } + + // Grant Permissions + async grantUser (target_username, permission) { + return await this.req_('/auth/grant-user-user', { + target_username, permission, + }) + } + + async grantGroup (group_uid, permission) { + return await this.req_('/auth/grant-user-group', { + group_uid, permission, + }) + } + + async grantApp (app_uid, permission) { + return await this.req_('/auth/grant-user-app', { + app_uid, permission, + }) + } + + async grantOrigin (origin, permission) { + return await this.req_('/auth/grant-user-app', { + origin, permission, + }) + } + + // Revoke Permissions + async revokeUser (target_username, permission) { + return await this.req_('/auth/revoke-user-user', { + target_username, permission, + }) + } + + async revokeGroup (group_uid, permission) { + return await this.req_('/auth/revoke-user-group', { + group_uid, permission, + }) + } + + async revokeApp (app_uid, permission) { + return await this.req_('/auth/revoke-user-app', { + app_uid, permission, + }) + } + + async revokeOrigin (origin, permission) { + return await this.req_('/auth/revoke-user-app', { + origin, permission, + }) + } +}