UNPKG

better-auth

Version:

The most comprehensive authentication library for TypeScript.

73 lines (69 loc) 1.99 kB
'use strict'; const index = require('../../shared/better-auth.ANpbi45u.cjs'); function role(statements) { return { authorize(request, connector = "AND") { let success = false; for (const [requestedResource, requestedActions] of Object.entries( request )) { const allowedActions = statements[requestedResource]; if (!allowedActions) { return { success: false, error: `You are not allowed to access resource: ${requestedResource}` }; } if (Array.isArray(requestedActions)) { success = requestedActions.every( (requestedAction) => allowedActions.includes(requestedAction) ); } else { if (typeof requestedActions === "object") { const actions = requestedActions; if (actions.connector === "OR") { success = actions.actions.some( (requestedAction) => allowedActions.includes(requestedAction) ); } else { success = actions.actions.every( (requestedAction) => allowedActions.includes(requestedAction) ); } } else { throw new index.BetterAuthError("Invalid access control request"); } } if (success && connector === "OR") { return { success }; } if (!success && connector === "AND") { return { success: false, error: `unauthorized to access resource "${requestedResource}"` }; } } if (success) { return { success }; } return { success: false, error: "Not authorized" }; }, statements }; } function createAccessControl(s) { return { newRole(statements) { return role(statements); }, statements: s }; } exports.createAccessControl = createAccessControl; exports.role = role;