Release v0.1.6
This commit is contained in:
@@ -1,19 +1,5 @@
|
||||
import type { AuthInfo } from "../types";
|
||||
|
||||
const legacyTenantScopes = [
|
||||
"campaign:read", "campaign:create", "campaign:update", "campaign:copy", "campaign:archive", "campaign:delete", "campaign:share",
|
||||
"campaign:validate", "campaign:build", "campaign:review", "campaign:send_test", "campaign:queue", "campaign:control", "campaign:send", "campaign:retry", "campaign:reconcile",
|
||||
"recipients:read", "recipients:write", "recipients:import", "recipients:export",
|
||||
"files:read", "files:download", "files:upload", "files:organize", "files:share", "files:delete", "files:admin",
|
||||
"reports:read", "reports:export", "reports:send", "audit:read",
|
||||
"mail_servers:read", "mail_servers:use", "mail_servers:test", "mail_servers:mailbox_read", "mail_servers:write", "mail_servers:manage_credentials",
|
||||
"admin:users:read", "admin:users:create", "admin:users:update", "admin:users:suspend",
|
||||
"admin:groups:read", "admin:groups:write", "admin:groups:manage_members",
|
||||
"admin:roles:read", "admin:roles:write", "admin:roles:assign",
|
||||
"admin:api_keys:read", "admin:api_keys:create", "admin:api_keys:revoke",
|
||||
"admin:settings:read", "admin:settings:write", "admin:policies:read", "admin:policies:write"
|
||||
];
|
||||
|
||||
const legacyToModuleScopes: Record<string, string> = {
|
||||
"campaign:read": "campaigns:campaign:read",
|
||||
"campaign:create": "campaigns:campaign:create",
|
||||
@@ -54,9 +40,6 @@ const legacyToModuleScopes: Record<string, string> = {
|
||||
};
|
||||
|
||||
const moduleToLegacyScopes = Object.fromEntries(Object.entries(legacyToModuleScopes).map(([legacy, module]) => [module, legacy]));
|
||||
const moduleTenantScopes = new Set(Object.values(legacyToModuleScopes));
|
||||
const tenantScopes = new Set([...legacyTenantScopes, ...moduleTenantScopes]);
|
||||
const tenantWildcardLegacyScopes = new Set(["attachments:read", "attachments:write"]);
|
||||
|
||||
const legacyAliases: Record<string, string[]> = {
|
||||
"campaign:write": ["campaign:create", "campaign:update", "campaign:copy", "campaign:archive", "campaign:delete", "campaign:share", "recipients:read", "recipients:write", "recipients:import"],
|
||||
@@ -78,8 +61,9 @@ function compatibleScopes(scope: string): string[] {
|
||||
function primitiveScopeGrants(granted: string, required: string): boolean {
|
||||
if (granted === required) return true;
|
||||
if (legacyAliases[granted]?.some((alias) => primitiveScopeGrants(alias, required))) return true;
|
||||
if (granted === "*" || granted === "tenant:*") {
|
||||
return required === "*" || required === "tenant:*" || tenantScopes.has(required) || tenantWildcardLegacyScopes.has(required);
|
||||
if (granted === "*") return true;
|
||||
if (granted === "tenant:*") {
|
||||
return required === "tenant:*" || !required.startsWith("system:");
|
||||
}
|
||||
if (granted === "system:*") return required.startsWith("system:") || required.startsWith("access:");
|
||||
if (granted.endsWith(":*") && required.startsWith(granted.slice(0, -1))) return true;
|
||||
|
||||
Reference in New Issue
Block a user