diff --git a/src/backend/src/CoreModule.js b/src/backend/src/CoreModule.js index 06238c6e..c9e16441 100644 --- a/src/backend/src/CoreModule.js +++ b/src/backend/src/CoreModule.js @@ -394,6 +394,9 @@ const install = async ({ services, app, useapi, modapi }) => { const { WorkerService } = require('./services/worker/WorkerService'); services.registerService("worker-service", WorkerService) + + const { PermissionShortcutService } = require('./services/auth/PermissionShortcutService'); + services.registerService('permission-shortcut', PermissionShortcutService); } const install_legacy = async ({ services }) => { diff --git a/src/backend/src/services/auth/PermissionShortcutService.js b/src/backend/src/services/auth/PermissionShortcutService.js new file mode 100644 index 00000000..3b6ac744 --- /dev/null +++ b/src/backend/src/services/auth/PermissionShortcutService.js @@ -0,0 +1,30 @@ +const BaseService = require("../BaseService"); +const { PermissionImplicator } = require("./PermissionService"); + +class PermissionShortcutService extends BaseService { + _init () { + const svc_permission = this.services.get('permission'); + + svc_permission.register_implicator(PermissionImplicator.create({ + id: 'kv permissions are easy', + shortcut: true, + matcher: permission => { + return permission === 'service:puter-kvstore:ii:puter-kvstore'; + }, + checker: async ({ actor }) => { + return { + policy: { + "rate-limit": { + max: 3000, + period: 30000, + } + } + }; + } + })); + } +} + +module.exports = { + PermissionShortcutService, +}; \ No newline at end of file