@arikajs/authorization 0.0.4 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/README.md +173 -78
  2. package/dist/AuthResponse.d.ts +23 -0
  3. package/dist/AuthResponse.d.ts.map +1 -0
  4. package/dist/AuthResponse.js +40 -0
  5. package/dist/AuthResponse.js.map +1 -0
  6. package/dist/AuthorizationContext.d.ts +31 -0
  7. package/dist/AuthorizationContext.d.ts.map +1 -0
  8. package/dist/AuthorizationContext.js +87 -0
  9. package/dist/AuthorizationContext.js.map +1 -0
  10. package/dist/AuthorizationManager.d.ts +15 -7
  11. package/dist/AuthorizationManager.d.ts.map +1 -1
  12. package/dist/AuthorizationManager.js +46 -12
  13. package/dist/AuthorizationManager.js.map +1 -1
  14. package/dist/Exceptions/AuthorizationException.d.ts +2 -1
  15. package/dist/Exceptions/AuthorizationException.d.ts.map +1 -1
  16. package/dist/Exceptions/AuthorizationException.js +2 -1
  17. package/dist/Exceptions/AuthorizationException.js.map +1 -1
  18. package/dist/Gate.d.ts +39 -3
  19. package/dist/Gate.d.ts.map +1 -1
  20. package/dist/Gate.js +121 -14
  21. package/dist/Gate.js.map +1 -1
  22. package/dist/Middleware/Authorize.d.ts +5 -4
  23. package/dist/Middleware/Authorize.d.ts.map +1 -1
  24. package/dist/Middleware/Authorize.js +24 -6
  25. package/dist/Middleware/Authorize.js.map +1 -1
  26. package/dist/PolicyResolver.d.ts +7 -2
  27. package/dist/PolicyResolver.d.ts.map +1 -1
  28. package/dist/PolicyResolver.js +26 -4
  29. package/dist/PolicyResolver.js.map +1 -1
  30. package/dist/RolePermission.d.ts +36 -0
  31. package/dist/RolePermission.d.ts.map +1 -0
  32. package/dist/RolePermission.js +59 -0
  33. package/dist/RolePermission.js.map +1 -0
  34. package/dist/index.d.ts +3 -0
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +3 -0
  37. package/dist/index.js.map +1 -1
  38. package/dist/src/AuthResponse.d.ts +23 -0
  39. package/dist/src/AuthResponse.d.ts.map +1 -0
  40. package/dist/src/AuthResponse.js +40 -0
  41. package/dist/src/AuthResponse.js.map +1 -0
  42. package/dist/src/AuthorizationContext.d.ts +31 -0
  43. package/dist/src/AuthorizationContext.d.ts.map +1 -0
  44. package/dist/src/AuthorizationContext.js +87 -0
  45. package/dist/src/AuthorizationContext.js.map +1 -0
  46. package/dist/src/AuthorizationManager.d.ts +25 -0
  47. package/dist/src/AuthorizationManager.d.ts.map +1 -0
  48. package/dist/src/AuthorizationManager.js +64 -0
  49. package/dist/src/AuthorizationManager.js.map +1 -0
  50. package/dist/src/Contracts/Policy.d.ts +4 -0
  51. package/dist/src/Contracts/Policy.d.ts.map +1 -0
  52. package/dist/src/Contracts/Policy.js +3 -0
  53. package/dist/src/Contracts/Policy.js.map +1 -0
  54. package/dist/src/Exceptions/AuthorizationException.d.ts +6 -0
  55. package/dist/src/Exceptions/AuthorizationException.d.ts.map +1 -0
  56. package/dist/src/Exceptions/AuthorizationException.js +13 -0
  57. package/dist/src/Exceptions/AuthorizationException.js.map +1 -0
  58. package/dist/src/Gate.d.ts +76 -0
  59. package/dist/src/Gate.d.ts.map +1 -0
  60. package/dist/src/Gate.js +189 -0
  61. package/dist/src/Gate.js.map +1 -0
  62. package/dist/src/Middleware/Authorize.d.ts +13 -0
  63. package/dist/src/Middleware/Authorize.d.ts.map +1 -0
  64. package/dist/src/Middleware/Authorize.js +51 -0
  65. package/dist/src/Middleware/Authorize.js.map +1 -0
  66. package/dist/src/PolicyResolver.d.ts +21 -0
  67. package/dist/src/PolicyResolver.d.ts.map +1 -0
  68. package/dist/src/PolicyResolver.js +67 -0
  69. package/dist/src/PolicyResolver.js.map +1 -0
  70. package/dist/src/RolePermission.d.ts +36 -0
  71. package/dist/src/RolePermission.d.ts.map +1 -0
  72. package/dist/src/RolePermission.js +59 -0
  73. package/dist/src/RolePermission.js.map +1 -0
  74. package/dist/src/index.d.ts +10 -0
  75. package/dist/src/index.d.ts.map +1 -0
  76. package/dist/src/index.js +26 -0
  77. package/dist/src/index.js.map +1 -0
  78. package/dist/tests/Authorization.test.d.ts +2 -0
  79. package/dist/tests/Authorization.test.d.ts.map +1 -0
  80. package/dist/tests/Authorization.test.js +236 -0
  81. package/dist/tests/Authorization.test.js.map +1 -0
  82. package/package.json +44 -42
@@ -0,0 +1,189 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Gate = void 0;
4
+ const PolicyResolver_1 = require("./PolicyResolver");
5
+ const AuthorizationException_1 = require("./Exceptions/AuthorizationException");
6
+ const AuthResponse_1 = require("./AuthResponse");
7
+ class Gate {
8
+ // ── Gate Definitions ────────────────────────────────────────────
9
+ /**
10
+ * Define a new ability.
11
+ */
12
+ static define(ability, callback) {
13
+ this.abilities.set(ability, callback);
14
+ }
15
+ /**
16
+ * Register a policy for a model.
17
+ */
18
+ static policy(model, policy) {
19
+ this.policyResolver.register(model, policy);
20
+ }
21
+ // ── Before / After Hooks ────────────────────────────────────────
22
+ /**
23
+ * Register a callback to run before all gate checks.
24
+ * Return `true` to allow immediately (super admin bypass).
25
+ * Return `false` to deny immediately.
26
+ * Return `null`/`undefined` to continue to the actual gate check.
27
+ */
28
+ static before(callback) {
29
+ this.beforeCallbacks.push(callback);
30
+ }
31
+ /**
32
+ * Register a callback to run after all gate checks.
33
+ * Useful for logging, auditing decisions, etc.
34
+ */
35
+ static after(callback) {
36
+ this.afterCallbacks.push(callback);
37
+ }
38
+ // ── User Binding ────────────────────────────────────────────────
39
+ /**
40
+ * Set the current user for authorization checks.
41
+ */
42
+ static forUser(user) {
43
+ this.currentUser = user;
44
+ return this;
45
+ }
46
+ // ── Single Ability Checks ───────────────────────────────────────
47
+ /**
48
+ * Determine if the user is authorized for an ability.
49
+ * Returns the AuthResponse for rich deny messages.
50
+ */
51
+ static async inspect(ability, ...args) {
52
+ // 1. Run before hooks
53
+ for (const cb of this.beforeCallbacks) {
54
+ const beforeResult = await cb(this.currentUser, ability, ...args);
55
+ if (beforeResult === true) {
56
+ return AuthResponse_1.AuthResponse.allow();
57
+ }
58
+ if (beforeResult === false) {
59
+ return AuthResponse_1.AuthResponse.deny();
60
+ }
61
+ // null/undefined = continue
62
+ }
63
+ // 2. Check policy before() method
64
+ if (args.length > 0) {
65
+ const resource = args[0];
66
+ const policy = this.policyResolver.resolvePolicy(resource);
67
+ if (policy) {
68
+ const instance = this.policyResolver.getInstance(policy);
69
+ if (typeof instance.before === 'function') {
70
+ const policyBefore = await instance.before(this.currentUser, ability, ...args);
71
+ if (policyBefore === true)
72
+ return AuthResponse_1.AuthResponse.allow();
73
+ if (policyBefore === false)
74
+ return AuthResponse_1.AuthResponse.deny();
75
+ }
76
+ const method = this.policyResolver.getPolicyMethod(policy, ability);
77
+ if (method) {
78
+ const result = await method(this.currentUser, ...args);
79
+ const response = this.normalizeResult(result);
80
+ await this.runAfterCallbacks(ability, response.allowed(), ...args);
81
+ return response;
82
+ }
83
+ }
84
+ }
85
+ // 3. Check direct gate definition
86
+ if (this.abilities.has(ability)) {
87
+ const callback = this.abilities.get(ability);
88
+ const result = await callback(this.currentUser, ...args);
89
+ const response = this.normalizeResult(result);
90
+ await this.runAfterCallbacks(ability, response.allowed(), ...args);
91
+ return response;
92
+ }
93
+ // 4. Default deny
94
+ const response = AuthResponse_1.AuthResponse.deny();
95
+ await this.runAfterCallbacks(ability, false, ...args);
96
+ return response;
97
+ }
98
+ /**
99
+ * Determine if the user is authorized to perform an ability.
100
+ */
101
+ static async allows(ability, ...args) {
102
+ const response = await this.inspect(ability, ...args);
103
+ return response.allowed();
104
+ }
105
+ /**
106
+ * Determine if the user is NOT authorized.
107
+ */
108
+ static async denies(ability, ...args) {
109
+ return !(await this.allows(ability, ...args));
110
+ }
111
+ /**
112
+ * Authorize or throw exception with optional custom message.
113
+ */
114
+ static async authorize(ability, ...args) {
115
+ const response = await this.inspect(ability, ...args);
116
+ if (response.denied()) {
117
+ throw new AuthorizationException_1.AuthorizationException(response.message() || 'This action is unauthorized.', response.code());
118
+ }
119
+ }
120
+ /**
121
+ * Check authorization (alias for allows).
122
+ */
123
+ static async check(ability, ...args) {
124
+ return await this.allows(ability, ...args);
125
+ }
126
+ // ── Bulk Ability Checks ─────────────────────────────────────────
127
+ /**
128
+ * Check if the user can perform ANY of the given abilities.
129
+ */
130
+ static async any(abilities, ...args) {
131
+ for (const ability of abilities) {
132
+ if (await this.allows(ability, ...args)) {
133
+ return true;
134
+ }
135
+ }
136
+ return false;
137
+ }
138
+ /**
139
+ * Check if the user can perform ALL of the given abilities.
140
+ */
141
+ static async every(abilities, ...args) {
142
+ for (const ability of abilities) {
143
+ if (!(await this.allows(ability, ...args))) {
144
+ return false;
145
+ }
146
+ }
147
+ return true;
148
+ }
149
+ /**
150
+ * Check if the user can perform NONE of the given abilities.
151
+ */
152
+ static async none(abilities, ...args) {
153
+ for (const ability of abilities) {
154
+ if (await this.allows(ability, ...args)) {
155
+ return false;
156
+ }
157
+ }
158
+ return true;
159
+ }
160
+ // ── Internals ───────────────────────────────────────────────────
161
+ static normalizeResult(result) {
162
+ if (result instanceof AuthResponse_1.AuthResponse) {
163
+ return result;
164
+ }
165
+ return result ? AuthResponse_1.AuthResponse.allow() : AuthResponse_1.AuthResponse.deny();
166
+ }
167
+ static async runAfterCallbacks(ability, result, ...args) {
168
+ for (const cb of this.afterCallbacks) {
169
+ await cb(this.currentUser, ability, result, ...args);
170
+ }
171
+ }
172
+ /**
173
+ * Reset all gates, policies, and hooks (useful for testing).
174
+ */
175
+ static reset() {
176
+ this.abilities.clear();
177
+ this.policyResolver = new PolicyResolver_1.PolicyResolver();
178
+ this.beforeCallbacks = [];
179
+ this.afterCallbacks = [];
180
+ this.currentUser = null;
181
+ }
182
+ }
183
+ exports.Gate = Gate;
184
+ Gate.abilities = new Map();
185
+ Gate.policyResolver = new PolicyResolver_1.PolicyResolver();
186
+ Gate.beforeCallbacks = [];
187
+ Gate.afterCallbacks = [];
188
+ Gate.currentUser = null;
189
+ //# sourceMappingURL=Gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Gate.js","sourceRoot":"","sources":["../../src/Gate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export declare class Authorize {
2
+ /**
3
+ * Handle authorization middleware.
4
+ *
5
+ * Usage:
6
+ * .middleware('can:edit-post') → Gate check
7
+ * .middleware('can:update,post') → Policy check using req[resourceKey]
8
+ * .middleware('role:admin') → Role check
9
+ * .middleware('permission:edit-posts') → Permission check
10
+ */
11
+ handle(request: any, next: () => Promise<any>, ability: string, resourceKey?: string): Promise<any>;
12
+ }
13
+ //# sourceMappingURL=Authorize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Authorize.d.ts","sourceRoot":"","sources":["../../../src/Middleware/Authorize.ts"],"names":[],"mappings":"AAIA,qBAAa,SAAS;IAClB;;;;;;;;OAQG;IACU,MAAM,CACf,OAAO,EAAE,GAAG,EACZ,IAAI,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,EACxB,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,GAAG,CAAC;CAsClB"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Authorize = void 0;
4
+ const Gate_1 = require("../Gate");
5
+ const AuthorizationException_1 = require("../Exceptions/AuthorizationException");
6
+ const RolePermission_1 = require("../RolePermission");
7
+ class Authorize {
8
+ /**
9
+ * Handle authorization middleware.
10
+ *
11
+ * Usage:
12
+ * .middleware('can:edit-post') → Gate check
13
+ * .middleware('can:update,post') → Policy check using req[resourceKey]
14
+ * .middleware('role:admin') → Role check
15
+ * .middleware('permission:edit-posts') → Permission check
16
+ */
17
+ async handle(request, next, ability, resourceKey) {
18
+ const user = request.user || (request.auth && await request.auth.user());
19
+ if (!user) {
20
+ throw new AuthorizationException_1.AuthorizationException('User not authenticated.');
21
+ }
22
+ // Role-based check: 'role:admin' or 'role:admin,editor'
23
+ if (ability.startsWith('role:')) {
24
+ const roles = ability.substring(5).split(',');
25
+ if (!RolePermission_1.RolePermissionMixin.hasAnyRole(user, roles)) {
26
+ throw new AuthorizationException_1.AuthorizationException(`User does not have the required role.`);
27
+ }
28
+ return next();
29
+ }
30
+ // Permission-based check: 'permission:edit-posts'
31
+ if (ability.startsWith('permission:')) {
32
+ const permissions = ability.substring(11).split(',');
33
+ if (!RolePermission_1.RolePermissionMixin.hasAnyPermission(user, permissions)) {
34
+ throw new AuthorizationException_1.AuthorizationException(`User does not have the required permission.`);
35
+ }
36
+ return next();
37
+ }
38
+ // Standard gate/policy check
39
+ Gate_1.Gate.forUser(user);
40
+ const resource = resourceKey ? request[resourceKey] : null;
41
+ if (resource) {
42
+ await Gate_1.Gate.authorize(ability, resource);
43
+ }
44
+ else {
45
+ await Gate_1.Gate.authorize(ability);
46
+ }
47
+ return next();
48
+ }
49
+ }
50
+ exports.Authorize = Authorize;
51
+ //# sourceMappingURL=Authorize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Authorize.js","sourceRoot":"","sources":["../../../src/Middleware/Authorize.ts"],"names":[],"mappings":";;;AAAA,kCAA+B;AAC/B,iFAA8E;AAC9E,sDAAwD;AAExD,MAAa,SAAS;IAClB;;;;;;;;OAQG;IACI,KAAK,CAAC,MAAM,CACf,OAAY,EACZ,IAAwB,EACxB,OAAe,EACf,WAAoB;QAEpB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAEzE,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,MAAM,IAAI,+CAAsB,CAAC,yBAAyB,CAAC,CAAC;QAChE,CAAC;QAED,wDAAwD;QACxD,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9C,IAAI,CAAC,oCAAmB,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;gBAC/C,MAAM,IAAI,+CAAsB,CAAC,uCAAuC,CAAC,CAAC;YAC9E,CAAC;YACD,OAAO,IAAI,EAAE,CAAC;QAClB,CAAC;QAED,kDAAkD;QAClD,IAAI,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACpC,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrD,IAAI,CAAC,oCAAmB,CAAC,gBAAgB,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC;gBAC3D,MAAM,IAAI,+CAAsB,CAAC,6CAA6C,CAAC,CAAC;YACpF,CAAC;YACD,OAAO,IAAI,EAAE,CAAC;QAClB,CAAC;QAED,6BAA6B;QAC7B,WAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEnB,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAE3D,IAAI,QAAQ,EAAE,CAAC;YACX,MAAM,WAAI,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACJ,MAAM,WAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;QAED,OAAO,IAAI,EAAE,CAAC;IAClB,CAAC;CACJ;AArDD,8BAqDC"}
@@ -0,0 +1,21 @@
1
+ export declare class PolicyResolver {
2
+ private policies;
3
+ private instances;
4
+ /**
5
+ * Register a policy for a given model/class.
6
+ */
7
+ register(model: any, policy: any): void;
8
+ /**
9
+ * Resolve the policy class/constructor for a given resource.
10
+ */
11
+ resolvePolicy(resource: any): any | null;
12
+ /**
13
+ * Get or create a cached instance for a policy class.
14
+ */
15
+ getInstance(policy: any): any;
16
+ /**
17
+ * Get bound policy method for ability.
18
+ */
19
+ getPolicyMethod(policy: any, ability: string): Function | null;
20
+ }
21
+ //# sourceMappingURL=PolicyResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PolicyResolver.d.ts","sourceRoot":"","sources":["../../src/PolicyResolver.ts"],"names":[],"mappings":"AAEA,qBAAa,cAAc;IACvB,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,SAAS,CAA4B;IAE7C;;OAEG;IACI,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,IAAI;IAI9C;;OAEG;IACI,aAAa,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI;IA4B/C;;OAEG;IACI,WAAW,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG;IASpC;;OAEG;IACI,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;CAWxE"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PolicyResolver = void 0;
4
+ class PolicyResolver {
5
+ constructor() {
6
+ this.policies = new Map();
7
+ this.instances = new Map();
8
+ }
9
+ /**
10
+ * Register a policy for a given model/class.
11
+ */
12
+ register(model, policy) {
13
+ this.policies.set(model, policy);
14
+ }
15
+ /**
16
+ * Resolve the policy class/constructor for a given resource.
17
+ */
18
+ resolvePolicy(resource) {
19
+ if (!resource)
20
+ return null;
21
+ // Check by constructor
22
+ const constructor = resource.constructor;
23
+ if (constructor && this.policies.has(constructor)) {
24
+ return this.policies.get(constructor);
25
+ }
26
+ // Direct lookup
27
+ if (this.policies.has(resource)) {
28
+ return this.policies.get(resource);
29
+ }
30
+ // Auto-discovery by naming convention
31
+ if (constructor && constructor.name) {
32
+ const policyName = `${constructor.name}Policy`;
33
+ for (const [, policy] of this.policies) {
34
+ const pName = typeof policy === 'function' ? policy.name : policy.constructor?.name;
35
+ if (pName === policyName) {
36
+ return policy;
37
+ }
38
+ }
39
+ }
40
+ return null;
41
+ }
42
+ /**
43
+ * Get or create a cached instance for a policy class.
44
+ */
45
+ getInstance(policy) {
46
+ if (typeof policy !== 'function')
47
+ return policy;
48
+ if (!this.instances.has(policy)) {
49
+ this.instances.set(policy, new policy());
50
+ }
51
+ return this.instances.get(policy);
52
+ }
53
+ /**
54
+ * Get bound policy method for ability.
55
+ */
56
+ getPolicyMethod(policy, ability) {
57
+ if (!policy)
58
+ return null;
59
+ const instance = this.getInstance(policy);
60
+ if (typeof instance[ability] === 'function') {
61
+ return instance[ability].bind(instance);
62
+ }
63
+ return null;
64
+ }
65
+ }
66
+ exports.PolicyResolver = PolicyResolver;
67
+ //# sourceMappingURL=PolicyResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PolicyResolver.js","sourceRoot":"","sources":["../../src/PolicyResolver.ts"],"names":[],"mappings":";;;AAEA,MAAa,cAAc;IAA3B;QACY,aAAQ,GAAkB,IAAI,GAAG,EAAE,CAAC;QACpC,cAAS,GAAkB,IAAI,GAAG,EAAE,CAAC;IAkEjD,CAAC;IAhEG;;OAEG;IACI,QAAQ,CAAC,KAAU,EAAE,MAAW;QACnC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACI,aAAa,CAAC,QAAa;QAC9B,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE3B,uBAAuB;QACvB,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;QACzC,IAAI,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC;QAED,gBAAgB;QAChB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;QAED,sCAAsC;QACtC,IAAI,WAAW,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,GAAG,WAAW,CAAC,IAAI,QAAQ,CAAC;YAC/C,KAAK,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACrC,MAAM,KAAK,GAAG,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC;gBACpF,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;oBACvB,OAAO,MAAM,CAAC;gBAClB,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,WAAW,CAAC,MAAW;QAC1B,IAAI,OAAO,MAAM,KAAK,UAAU;YAAE,OAAO,MAAM,CAAC;QAEhD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACI,eAAe,CAAC,MAAW,EAAE,OAAe;QAC/C,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAEzB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAE1C,IAAI,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,UAAU,EAAE,CAAC;YAC1C,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AApED,wCAoEC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Contracts for entities that have roles and permissions.
3
+ */
4
+ export interface HasRoles {
5
+ roles?: string[] | {
6
+ name: string;
7
+ }[];
8
+ hasRole(role: string | string[]): boolean;
9
+ hasAnyRole(roles: string[]): boolean;
10
+ hasAllRoles(roles: string[]): boolean;
11
+ }
12
+ export interface HasPermissions {
13
+ permissions?: string[] | {
14
+ name: string;
15
+ }[];
16
+ hasPermission(permission: string): boolean;
17
+ hasAnyPermission(permissions: string[]): boolean;
18
+ hasAllPermissions(permissions: string[]): boolean;
19
+ }
20
+ /**
21
+ * Mixin helper to add Role & Permission checking to any user object.
22
+ * Works with both string arrays and object arrays ({name: string}).
23
+ */
24
+ export declare class RolePermissionMixin {
25
+ /**
26
+ * Normalize roles/permissions to string arrays.
27
+ */
28
+ private static normalize;
29
+ static hasRole(user: any, role: string | string[]): boolean;
30
+ static hasAnyRole(user: any, roles: string[]): boolean;
31
+ static hasAllRoles(user: any, roles: string[]): boolean;
32
+ static hasPermission(user: any, permission: string): boolean;
33
+ static hasAnyPermission(user: any, permissions: string[]): boolean;
34
+ static hasAllPermissions(user: any, permissions: string[]): boolean;
35
+ }
36
+ //# sourceMappingURL=RolePermission.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RolePermission.d.ts","sourceRoot":"","sources":["../../src/RolePermission.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,QAAQ;IACrB,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACtC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC;IAC1C,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACrC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;CACzC;AAED,MAAM,WAAW,cAAc;IAC3B,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC5C,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3C,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACjD,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;CACrD;AAED;;;GAGG;AACH,qBAAa,mBAAmB;IAE5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;WAKV,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO;WAQpD,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO;WAK/C,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO;WAKhD,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO;WAiBrD,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO;WAI3D,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO;CAG7E"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ /**
3
+ * Contracts for entities that have roles and permissions.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.RolePermissionMixin = void 0;
7
+ /**
8
+ * Mixin helper to add Role & Permission checking to any user object.
9
+ * Works with both string arrays and object arrays ({name: string}).
10
+ */
11
+ class RolePermissionMixin {
12
+ /**
13
+ * Normalize roles/permissions to string arrays.
14
+ */
15
+ static normalize(items) {
16
+ if (!items)
17
+ return [];
18
+ return items.map((item) => typeof item === 'string' ? item : item.name);
19
+ }
20
+ static hasRole(user, role) {
21
+ const userRoles = this.normalize(user.roles);
22
+ if (Array.isArray(role)) {
23
+ return role.every(r => userRoles.includes(r));
24
+ }
25
+ return userRoles.includes(role);
26
+ }
27
+ static hasAnyRole(user, roles) {
28
+ const userRoles = this.normalize(user.roles);
29
+ return roles.some(r => userRoles.includes(r));
30
+ }
31
+ static hasAllRoles(user, roles) {
32
+ const userRoles = this.normalize(user.roles);
33
+ return roles.every(r => userRoles.includes(r));
34
+ }
35
+ static hasPermission(user, permission) {
36
+ // Check direct permissions
37
+ const userPerms = this.normalize(user.permissions);
38
+ if (userPerms.includes(permission))
39
+ return true;
40
+ // Check role-based permissions via a role→permissions map if user has rolePermissions
41
+ if (user.rolePermissions && typeof user.rolePermissions === 'object') {
42
+ const userRoles = this.normalize(user.roles);
43
+ for (const role of userRoles) {
44
+ const rolePerms = user.rolePermissions[role] || [];
45
+ if (rolePerms.includes(permission))
46
+ return true;
47
+ }
48
+ }
49
+ return false;
50
+ }
51
+ static hasAnyPermission(user, permissions) {
52
+ return permissions.some(p => this.hasPermission(user, p));
53
+ }
54
+ static hasAllPermissions(user, permissions) {
55
+ return permissions.every(p => this.hasPermission(user, p));
56
+ }
57
+ }
58
+ exports.RolePermissionMixin = RolePermissionMixin;
59
+ //# sourceMappingURL=RolePermission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RolePermission.js","sourceRoot":"","sources":["../../src/RolePermission.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAgBH;;;GAGG;AACH,MAAa,mBAAmB;IAE5B;;OAEG;IACK,MAAM,CAAC,SAAS,CAAC,KAAwB;QAC7C,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjF,CAAC;IAEM,MAAM,CAAC,OAAO,CAAC,IAAS,EAAE,IAAuB;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,IAAS,EAAE,KAAe;QAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;IAEM,MAAM,CAAC,WAAW,CAAC,IAAS,EAAE,KAAe;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,IAAS,EAAE,UAAkB;QACrD,2BAA2B;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnD,IAAI,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAC;QAEhD,sFAAsF;QACtF,IAAI,IAAI,CAAC,eAAe,IAAI,OAAO,IAAI,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;YACnE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;gBAC3B,MAAM,SAAS,GAAa,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC7D,IAAI,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC;oBAAE,OAAO,IAAI,CAAC;YACpD,CAAC;QACL,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAAC,IAAS,EAAE,WAAqB;QAC3D,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC;IAEM,MAAM,CAAC,iBAAiB,CAAC,IAAS,EAAE,WAAqB;QAC5D,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;CACJ;AApDD,kDAoDC"}
@@ -0,0 +1,10 @@
1
+ export * from './Gate';
2
+ export * from './AuthorizationManager';
3
+ export * from './AuthorizationContext';
4
+ export * from './AuthResponse';
5
+ export * from './PolicyResolver';
6
+ export * from './RolePermission';
7
+ export * from './Contracts/Policy';
8
+ export * from './Exceptions/AuthorizationException';
9
+ export * from './Middleware/Authorize';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qCAAqC,CAAC;AACpD,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./Gate"), exports);
18
+ __exportStar(require("./AuthorizationManager"), exports);
19
+ __exportStar(require("./AuthorizationContext"), exports);
20
+ __exportStar(require("./AuthResponse"), exports);
21
+ __exportStar(require("./PolicyResolver"), exports);
22
+ __exportStar(require("./RolePermission"), exports);
23
+ __exportStar(require("./Contracts/Policy"), exports);
24
+ __exportStar(require("./Exceptions/AuthorizationException"), exports);
25
+ __exportStar(require("./Middleware/Authorize"), exports);
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,yDAAuC;AACvC,yDAAuC;AACvC,iDAA+B;AAC/B,mDAAiC;AACjC,mDAAiC;AACjC,qDAAmC;AACnC,sEAAoD;AACpD,yDAAuC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Authorization.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Authorization.test.d.ts","sourceRoot":"","sources":["../../tests/Authorization.test.ts"],"names":[],"mappings":""}