@spinajs/rbac-http 2.0.179 → 2.0.181

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 (57) hide show
  1. package/lib/cjs/decorators.d.ts +25 -25
  2. package/lib/cjs/decorators.js +85 -85
  3. package/lib/cjs/index.d.ts +6 -6
  4. package/lib/cjs/index.js +22 -22
  5. package/lib/cjs/interfaces.d.ts +65 -65
  6. package/lib/cjs/interfaces.js +9 -9
  7. package/lib/cjs/middlewares/AttributeFilter.d.ts +10 -10
  8. package/lib/cjs/middlewares/AttributeFilter.js +18 -18
  9. package/lib/cjs/middlewares.d.ts +11 -11
  10. package/lib/cjs/middlewares.js +91 -91
  11. package/lib/cjs/middlewares.js.map +1 -1
  12. package/lib/cjs/policies/AllowGuest.d.ts +8 -8
  13. package/lib/cjs/policies/AllowGuest.js +28 -28
  14. package/lib/cjs/policies/BlockGuest.d.ts +8 -8
  15. package/lib/cjs/policies/BlockGuest.js +24 -24
  16. package/lib/cjs/policies/LoggedPolicy.d.ts +9 -9
  17. package/lib/cjs/policies/LoggedPolicy.js +22 -22
  18. package/lib/cjs/policies/NotLoggedPolicy.d.ts +9 -9
  19. package/lib/cjs/policies/NotLoggedPolicy.js +21 -21
  20. package/lib/cjs/policies/RbacPolicy.d.ts +15 -15
  21. package/lib/cjs/policies/RbacPolicy.js +58 -58
  22. package/lib/cjs/route-args.d.ts +16 -16
  23. package/lib/cjs/route-args.js +35 -35
  24. package/lib/cjs/route-args.js.map +1 -1
  25. package/lib/cjs/transformers.d.ts +10 -10
  26. package/lib/cjs/transformers.js +33 -33
  27. package/lib/cjs/transformers.js.map +1 -1
  28. package/lib/mjs/decorators.d.ts +25 -25
  29. package/lib/mjs/decorators.js +77 -77
  30. package/lib/mjs/index.d.ts +6 -6
  31. package/lib/mjs/index.js +6 -6
  32. package/lib/mjs/interfaces.d.ts +65 -65
  33. package/lib/mjs/interfaces.js +4 -4
  34. package/lib/mjs/middlewares/AttributeFilter.d.ts +10 -10
  35. package/lib/mjs/middlewares/AttributeFilter.js +14 -14
  36. package/lib/mjs/middlewares.d.ts +11 -11
  37. package/lib/mjs/middlewares.js +65 -65
  38. package/lib/mjs/middlewares.js.map +1 -1
  39. package/lib/mjs/policies/AllowGuest.d.ts +8 -8
  40. package/lib/mjs/policies/AllowGuest.js +24 -24
  41. package/lib/mjs/policies/BlockGuest.d.ts +8 -8
  42. package/lib/mjs/policies/BlockGuest.js +20 -20
  43. package/lib/mjs/policies/LoggedPolicy.d.ts +9 -9
  44. package/lib/mjs/policies/LoggedPolicy.js +18 -18
  45. package/lib/mjs/policies/NotLoggedPolicy.d.ts +9 -9
  46. package/lib/mjs/policies/NotLoggedPolicy.js +17 -17
  47. package/lib/mjs/policies/RbacPolicy.d.ts +15 -15
  48. package/lib/mjs/policies/RbacPolicy.js +51 -51
  49. package/lib/mjs/route-args.d.ts +16 -16
  50. package/lib/mjs/route-args.js +32 -32
  51. package/lib/mjs/route-args.js.map +1 -1
  52. package/lib/mjs/transformers.d.ts +10 -10
  53. package/lib/mjs/transformers.js +27 -27
  54. package/lib/mjs/transformers.js.map +1 -1
  55. package/lib/tsconfig.cjs.tsbuildinfo +1 -1
  56. package/lib/tsconfig.mjs.tsbuildinfo +1 -1
  57. package/package.json +10 -10
@@ -1,17 +1,17 @@
1
- import { RouteArgs, IRouteParameter, ParameterType, IRouteCall } from '@spinajs/http';
2
- import { Request } from '@spinajs/http';
3
- export declare class UserArg extends RouteArgs {
4
- get SupportedType(): ParameterType;
5
- extract(callData: IRouteCall, _param: IRouteParameter, req: Request): Promise<{
6
- CallData: IRouteCall;
7
- Args: import("@spinajs/rbac").User;
8
- }>;
9
- }
10
- export declare class SessionArg extends RouteArgs {
11
- get SupportedType(): string;
12
- extract(callData: IRouteCall, param: IRouteParameter, req: Request): Promise<{
13
- CallData: IRouteCall;
14
- Args: unknown;
15
- }>;
16
- }
1
+ import { RouteArgs, IRouteParameter, ParameterType, IRouteCall } from '@spinajs/http';
2
+ import { Request } from '@spinajs/http';
3
+ export declare class UserArg extends RouteArgs {
4
+ get SupportedType(): ParameterType;
5
+ extract(callData: IRouteCall, _param: IRouteParameter, req: Request): Promise<{
6
+ CallData: IRouteCall;
7
+ Args: import("@spinajs/rbac").User;
8
+ }>;
9
+ }
10
+ export declare class SessionArg extends RouteArgs {
11
+ get SupportedType(): string;
12
+ extract(callData: IRouteCall, param: IRouteParameter, req: Request): Promise<{
13
+ CallData: IRouteCall;
14
+ Args: unknown;
15
+ }>;
16
+ }
17
17
  //# sourceMappingURL=route-args.d.ts.map
@@ -1,36 +1,36 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.SessionArg = exports.UserArg = void 0;
10
- const http_1 = require("@spinajs/http");
11
- const di_1 = require("@spinajs/di");
12
- let UserArg = class UserArg extends http_1.RouteArgs {
13
- get SupportedType() {
14
- return http_1.ParameterType.Other;
15
- }
16
- async extract(callData, _param, req) {
17
- return { CallData: callData, Args: req.storage.user };
18
- }
19
- };
20
- UserArg = __decorate([
21
- (0, di_1.Injectable)()
22
- ], UserArg);
23
- exports.UserArg = UserArg;
24
- let SessionArg = class SessionArg extends http_1.RouteArgs {
25
- get SupportedType() {
26
- throw new Error('Method not implemented.');
27
- }
28
- async extract(callData, param, req) {
29
- return { CallData: callData, Args: req.storage.session ? req.storage.session.Data.get(param.Name) : undefined };
30
- }
31
- };
32
- SessionArg = __decorate([
33
- (0, di_1.Injectable)()
34
- ], SessionArg);
35
- exports.SessionArg = SessionArg;
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.SessionArg = exports.UserArg = void 0;
10
+ const http_1 = require("@spinajs/http");
11
+ const di_1 = require("@spinajs/di");
12
+ let UserArg = class UserArg extends http_1.RouteArgs {
13
+ get SupportedType() {
14
+ return http_1.ParameterType.Other;
15
+ }
16
+ async extract(callData, _param, req) {
17
+ return { CallData: callData, Args: req.storage.user };
18
+ }
19
+ };
20
+ exports.UserArg = UserArg;
21
+ exports.UserArg = UserArg = __decorate([
22
+ (0, di_1.Injectable)()
23
+ ], UserArg);
24
+ let SessionArg = class SessionArg extends http_1.RouteArgs {
25
+ get SupportedType() {
26
+ throw new Error('Method not implemented.');
27
+ }
28
+ async extract(callData, param, req) {
29
+ return { CallData: callData, Args: req.storage.session ? req.storage.session.Data.get(param.Name) : undefined };
30
+ }
31
+ };
32
+ exports.SessionArg = SessionArg;
33
+ exports.SessionArg = SessionArg = __decorate([
34
+ (0, di_1.Injectable)()
35
+ ], SessionArg);
36
36
  //# sourceMappingURL=route-args.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"route-args.js","sourceRoot":"","sources":["../../src/route-args.ts"],"names":[],"mappings":";;;;;;;;;AAAA,wCAAsF;AACtF,oCAAyC;AAIlC,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,gBAAS;IACpC,IAAW,aAAa;QACtB,OAAO,oBAAa,CAAC,KAAK,CAAC;IAC7B,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAoB,EAAE,MAAuB,EAAE,GAAY;QAC9E,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACxD,CAAC;CACF,CAAA;AARY,OAAO;IADnB,IAAA,eAAU,GAAE;GACA,OAAO,CAQnB;AARY,0BAAO;AAWb,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,gBAAS;IACvC,IAAI,aAAa;QACf,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IACM,KAAK,CAAC,OAAO,CAAC,QAAoB,EAAE,KAAsB,EAAE,GAAY;QAC7E,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IAClH,CAAC;CACF,CAAA;AAPY,UAAU;IADtB,IAAA,eAAU,GAAE;GACA,UAAU,CAOtB;AAPY,gCAAU"}
1
+ {"version":3,"file":"route-args.js","sourceRoot":"","sources":["../../src/route-args.ts"],"names":[],"mappings":";;;;;;;;;AAAA,wCAAsF;AACtF,oCAAyC;AAIlC,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,gBAAS;IACpC,IAAW,aAAa;QACtB,OAAO,oBAAa,CAAC,KAAK,CAAC;IAC7B,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAoB,EAAE,MAAuB,EAAE,GAAY;QAC9E,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACxD,CAAC;CACF,CAAA;AARY,0BAAO;kBAAP,OAAO;IADnB,IAAA,eAAU,GAAE;GACA,OAAO,CAQnB;AAGM,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,gBAAS;IACvC,IAAI,aAAa;QACf,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IACM,KAAK,CAAC,OAAO,CAAC,QAAoB,EAAE,KAAsB,EAAE,GAAY;QAC7E,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IAClH,CAAC;CACF,CAAA;AAPY,gCAAU;qBAAV,UAAU;IADtB,IAAA,eAAU,GAAE;GACA,UAAU,CAOtB"}
@@ -1,11 +1,11 @@
1
- import { DataTransformer } from '@spinajs/http';
2
- import * as express from 'express';
3
- export interface IUserResult {
4
- Data: any;
5
- Total: number;
6
- }
7
- export declare class UserDataTransformer<T> extends DataTransformer<IUserResult, IUserResult | T> {
8
- get Type(): string;
9
- transform(data: IUserResult, _request: express.Request): IUserResult | T;
10
- }
1
+ import { DataTransformer } from '@spinajs/http';
2
+ import * as express from 'express';
3
+ export interface IUserResult {
4
+ Data: any;
5
+ Total: number;
6
+ }
7
+ export declare class UserDataTransformer<T> extends DataTransformer<IUserResult, IUserResult | T> {
8
+ get Type(): string;
9
+ transform(data: IUserResult, _request: express.Request): IUserResult | T;
10
+ }
11
11
  //# sourceMappingURL=transformers.d.ts.map
@@ -1,34 +1,34 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __importDefault = (this && this.__importDefault) || function (mod) {
9
- return (mod && mod.__esModule) ? mod : { "default": mod };
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.UserDataTransformer = void 0;
13
- const http_1 = require("@spinajs/http");
14
- const lodash_1 = __importDefault(require("lodash"));
15
- const di_1 = require("@spinajs/di");
16
- let UserDataTransformer = class UserDataTransformer extends http_1.DataTransformer {
17
- get Type() {
18
- return 'user-model-result';
19
- }
20
- transform(data, _request) {
21
- if (lodash_1.default.isArray(data.Data)) {
22
- data.Data.forEach((x) => delete x.Password);
23
- }
24
- else {
25
- delete data.Data.Password;
26
- }
27
- return data;
28
- }
29
- };
30
- UserDataTransformer = __decorate([
31
- (0, di_1.Injectable)()
32
- ], UserDataTransformer);
33
- exports.UserDataTransformer = UserDataTransformer;
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.UserDataTransformer = void 0;
13
+ const http_1 = require("@spinajs/http");
14
+ const lodash_1 = __importDefault(require("lodash"));
15
+ const di_1 = require("@spinajs/di");
16
+ let UserDataTransformer = class UserDataTransformer extends http_1.DataTransformer {
17
+ get Type() {
18
+ return 'user-model-result';
19
+ }
20
+ transform(data, _request) {
21
+ if (lodash_1.default.isArray(data.Data)) {
22
+ data.Data.forEach((x) => delete x.Password);
23
+ }
24
+ else {
25
+ delete data.Data.Password;
26
+ }
27
+ return data;
28
+ }
29
+ };
30
+ exports.UserDataTransformer = UserDataTransformer;
31
+ exports.UserDataTransformer = UserDataTransformer = __decorate([
32
+ (0, di_1.Injectable)()
33
+ ], UserDataTransformer);
34
34
  //# sourceMappingURL=transformers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transformers.js","sourceRoot":"","sources":["../../src/transformers.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wCAAgD;AAChD,oDAAuB;AACvB,oCAAyC;AASlC,IAAM,mBAAmB,GAAzB,MAAM,mBAAuB,SAAQ,sBAA6C;IACvF,IAAI,IAAI;QACN,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAEM,SAAS,CAAC,IAAiB,EAAE,QAAyB;QAC3D,IAAI,gBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;SAC7C;aAAM;YACL,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;SAC3B;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AAdY,mBAAmB;IAD/B,IAAA,eAAU,GAAE;GACA,mBAAmB,CAc/B;AAdY,kDAAmB"}
1
+ {"version":3,"file":"transformers.js","sourceRoot":"","sources":["../../src/transformers.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wCAAgD;AAChD,oDAAuB;AACvB,oCAAyC;AASlC,IAAM,mBAAmB,GAAzB,MAAM,mBAAuB,SAAQ,sBAA6C;IACvF,IAAI,IAAI;QACN,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAEM,SAAS,CAAC,IAAiB,EAAE,QAAyB;QAC3D,IAAI,gBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;SAC7C;aAAM;YACL,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;SAC3B;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AAdY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,eAAU,GAAE;GACA,mBAAmB,CAc/B"}
@@ -1,26 +1,26 @@
1
- import { IRbacDescriptor, PermissionType } from './interfaces.js';
2
- export declare const ACL_CONTROLLER_DESCRIPTOR: unique symbol;
3
- export declare function setRbacMetadata(target: any, callback: (meta: IRbacDescriptor) => void): void;
4
- /**
5
- * Assign resource for controller
6
- *
7
- * @param resource - name of resource
8
- * @param permission - default permission
9
- */
10
- export declare function Resource(resource: string, permission?: PermissionType): any;
11
- /**
12
- *
13
- * Assigns permission for controller route
14
- *
15
- * @param permission - permission to set
16
- */
17
- export declare function Permission(permission?: PermissionType): any;
18
- /**
19
- * Retrieves user from session if is logged in
20
- */
21
- export declare function User(): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
22
- /**
23
- * Extract args from user session
24
- */
25
- export declare function Session(): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
1
+ import { IRbacDescriptor, PermissionType } from './interfaces.js';
2
+ export declare const ACL_CONTROLLER_DESCRIPTOR: unique symbol;
3
+ export declare function setRbacMetadata(target: any, callback: (meta: IRbacDescriptor) => void): void;
4
+ /**
5
+ * Assign resource for controller
6
+ *
7
+ * @param resource - name of resource
8
+ * @param permission - default permission
9
+ */
10
+ export declare function Resource(resource: string, permission?: PermissionType): any;
11
+ /**
12
+ *
13
+ * Assigns permission for controller route
14
+ *
15
+ * @param permission - permission to set
16
+ */
17
+ export declare function Permission(permission?: PermissionType): any;
18
+ /**
19
+ * Retrieves user from session if is logged in
20
+ */
21
+ export declare function User(): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
22
+ /**
23
+ * Extract args from user session
24
+ */
25
+ export declare function Session(): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
26
26
  //# sourceMappingURL=decorators.d.ts.map
@@ -1,78 +1,78 @@
1
- import { Parameter, Policy, Route } from '@spinajs/http';
2
- import { RbacPolicy } from './policies/RbacPolicy.js';
3
- export const ACL_CONTROLLER_DESCRIPTOR = Symbol('ACL_CONTROLLER_DESCRIPTOR_SYMBOL');
4
- export function setRbacMetadata(target, callback) {
5
- let metadata = Reflect.getMetadata(ACL_CONTROLLER_DESCRIPTOR, target.prototype || target);
6
- if (!metadata) {
7
- metadata = {
8
- Resource: '',
9
- Routes: new Map(),
10
- Permission: 'readOwn',
11
- };
12
- Reflect.defineMetadata(ACL_CONTROLLER_DESCRIPTOR, metadata, target.prototype || target);
13
- }
14
- if (callback) {
15
- callback(metadata);
16
- }
17
- }
18
- function descriptor(callback) {
19
- return (target, propertyKey, indexOrDescriptor) => {
20
- let metadata = Reflect.getMetadata(ACL_CONTROLLER_DESCRIPTOR, target.prototype || target);
21
- if (!metadata) {
22
- metadata = {
23
- Resource: '',
24
- Routes: new Map(),
25
- Permission: 'readOwn',
26
- };
27
- Reflect.defineMetadata(ACL_CONTROLLER_DESCRIPTOR, metadata, target.prototype || target);
28
- }
29
- if (callback) {
30
- callback(metadata, target, propertyKey, indexOrDescriptor);
31
- }
32
- };
33
- }
34
- /**
35
- * Assign resource for controller
36
- *
37
- * @param resource - name of resource
38
- * @param permission - default permission
39
- */
40
- export function Resource(resource, permission = 'readOwn') {
41
- return descriptor((metadata, target) => {
42
- Policy(RbacPolicy)(target, null, null);
43
- metadata.Resource = resource;
44
- metadata.Permission = permission;
45
- });
46
- }
47
- /**
48
- *
49
- * Assigns permission for controller route
50
- *
51
- * @param permission - permission to set
52
- */
53
- export function Permission(permission = 'readOwn') {
54
- return descriptor((metadata, target, propertyKey) => {
55
- if (propertyKey) {
56
- if (!metadata.Routes.has(propertyKey)) {
57
- const route = {
58
- Permission: permission,
59
- };
60
- metadata.Routes.set(propertyKey, route);
61
- }
62
- }
63
- Policy(RbacPolicy)(target, propertyKey, null);
64
- });
65
- }
66
- /**
67
- * Retrieves user from session if is logged in
68
- */
69
- export function User() {
70
- return Route(Parameter('UserArg'));
71
- }
72
- /**
73
- * Extract args from user session
74
- */
75
- export function Session() {
76
- return Route(Parameter('SessionArg'));
77
- }
1
+ import { Parameter, Policy, Route } from '@spinajs/http';
2
+ import { RbacPolicy } from './policies/RbacPolicy.js';
3
+ export const ACL_CONTROLLER_DESCRIPTOR = Symbol('ACL_CONTROLLER_DESCRIPTOR_SYMBOL');
4
+ export function setRbacMetadata(target, callback) {
5
+ let metadata = Reflect.getMetadata(ACL_CONTROLLER_DESCRIPTOR, target.prototype || target);
6
+ if (!metadata) {
7
+ metadata = {
8
+ Resource: '',
9
+ Routes: new Map(),
10
+ Permission: 'readOwn',
11
+ };
12
+ Reflect.defineMetadata(ACL_CONTROLLER_DESCRIPTOR, metadata, target.prototype || target);
13
+ }
14
+ if (callback) {
15
+ callback(metadata);
16
+ }
17
+ }
18
+ function descriptor(callback) {
19
+ return (target, propertyKey, indexOrDescriptor) => {
20
+ let metadata = Reflect.getMetadata(ACL_CONTROLLER_DESCRIPTOR, target.prototype || target);
21
+ if (!metadata) {
22
+ metadata = {
23
+ Resource: '',
24
+ Routes: new Map(),
25
+ Permission: 'readOwn',
26
+ };
27
+ Reflect.defineMetadata(ACL_CONTROLLER_DESCRIPTOR, metadata, target.prototype || target);
28
+ }
29
+ if (callback) {
30
+ callback(metadata, target, propertyKey, indexOrDescriptor);
31
+ }
32
+ };
33
+ }
34
+ /**
35
+ * Assign resource for controller
36
+ *
37
+ * @param resource - name of resource
38
+ * @param permission - default permission
39
+ */
40
+ export function Resource(resource, permission = 'readOwn') {
41
+ return descriptor((metadata, target) => {
42
+ Policy(RbacPolicy)(target, null, null);
43
+ metadata.Resource = resource;
44
+ metadata.Permission = permission;
45
+ });
46
+ }
47
+ /**
48
+ *
49
+ * Assigns permission for controller route
50
+ *
51
+ * @param permission - permission to set
52
+ */
53
+ export function Permission(permission = 'readOwn') {
54
+ return descriptor((metadata, target, propertyKey) => {
55
+ if (propertyKey) {
56
+ if (!metadata.Routes.has(propertyKey)) {
57
+ const route = {
58
+ Permission: permission,
59
+ };
60
+ metadata.Routes.set(propertyKey, route);
61
+ }
62
+ }
63
+ Policy(RbacPolicy)(target, propertyKey, null);
64
+ });
65
+ }
66
+ /**
67
+ * Retrieves user from session if is logged in
68
+ */
69
+ export function User() {
70
+ return Route(Parameter('UserArg'));
71
+ }
72
+ /**
73
+ * Extract args from user session
74
+ */
75
+ export function Session() {
76
+ return Route(Parameter('SessionArg'));
77
+ }
78
78
  //# sourceMappingURL=decorators.js.map
@@ -1,7 +1,7 @@
1
- export * from './decorators.js';
2
- export * from './interfaces.js';
3
- export * from './middlewares.js';
4
- export * from './policies/RbacPolicy.js';
5
- export * from './transformers.js';
6
- export * from './route-args.js';
1
+ export * from './decorators.js';
2
+ export * from './interfaces.js';
3
+ export * from './middlewares.js';
4
+ export * from './policies/RbacPolicy.js';
5
+ export * from './transformers.js';
6
+ export * from './route-args.js';
7
7
  //# sourceMappingURL=index.d.ts.map
package/lib/mjs/index.js CHANGED
@@ -1,7 +1,7 @@
1
- export * from './decorators.js';
2
- export * from './interfaces.js';
3
- export * from './middlewares.js';
4
- export * from './policies/RbacPolicy.js';
5
- export * from './transformers.js';
6
- export * from './route-args.js';
1
+ export * from './decorators.js';
2
+ export * from './interfaces.js';
3
+ export * from './middlewares.js';
4
+ export * from './policies/RbacPolicy.js';
5
+ export * from './transformers.js';
6
+ export * from './route-args.js';
7
7
  //# sourceMappingURL=index.js.map
@@ -1,66 +1,66 @@
1
- import { User, ISession } from '@spinajs/rbac';
2
- export type PermissionType = 'readAny' | 'readOwn' | 'updateAny' | 'updateOwn' | 'deleteAny' | 'deleteOwn' | 'createAny' | 'createOwn';
3
- declare module '@spinajs/http' {
4
- interface IActionLocalStoregeContext {
5
- user: User | null;
6
- session: ISession;
7
- }
8
- }
9
- export interface IRbacDescriptor {
10
- /**
11
- * Resource name
12
- */
13
- Resource: string;
14
- /**
15
- * Assigned permission
16
- *
17
- * '*' means that to acces resource we only need role with assigned resource
18
- */
19
- Permission: PermissionType;
20
- /**
21
- * Per routes permissions
22
- */
23
- Routes: Map<string, IRbacRoutePermissionDescriptor>;
24
- }
25
- export interface IRbacRoutePermissionDescriptor {
26
- /**
27
- * controller route permission. It overrides acl descriptor options
28
- */
29
- Permission: PermissionType;
30
- }
31
- export declare abstract class TwoFactorAuthProvider {
32
- /**
33
- * generate secret key if this provider use is needs it or null
34
- */
35
- abstract initialize(user: User): Promise<any | null>;
36
- /**
37
- * Perform action eg. send sms or email. Some 2fac implementations do nothing eg. google auth or hardware keys
38
- */
39
- abstract execute(user: User): Promise<void>;
40
- /**
41
- * verifies token send by user
42
- */
43
- abstract verifyToken(token: string, user: User): Promise<boolean>;
44
- /**
45
- * Checks if 2fa is enabled for given user
46
- */
47
- abstract isEnabled(user: User): Promise<boolean>;
48
- /**
49
- * Checks if 2fa is initialized eg. some
50
- * 2fa systems requires to generate private software key and pass it
51
- * to user ( like google authenticator)
52
- */
53
- abstract isInitialized(user: User): Promise<boolean>;
54
- }
55
- export declare abstract class FingerprintProvider {
56
- }
57
- export interface TwoFactorAuthConfig {
58
- enabled: boolean;
59
- service: string;
60
- }
61
- export interface FingerpringConfig {
62
- enabled: boolean;
63
- maxDevices: number;
64
- service: string;
65
- }
1
+ import { User, ISession } from '@spinajs/rbac';
2
+ export type PermissionType = 'readAny' | 'readOwn' | 'updateAny' | 'updateOwn' | 'deleteAny' | 'deleteOwn' | 'createAny' | 'createOwn';
3
+ declare module '@spinajs/http' {
4
+ interface IActionLocalStoregeContext {
5
+ user: User | null;
6
+ session: ISession;
7
+ }
8
+ }
9
+ export interface IRbacDescriptor {
10
+ /**
11
+ * Resource name
12
+ */
13
+ Resource: string;
14
+ /**
15
+ * Assigned permission
16
+ *
17
+ * '*' means that to acces resource we only need role with assigned resource
18
+ */
19
+ Permission: PermissionType;
20
+ /**
21
+ * Per routes permissions
22
+ */
23
+ Routes: Map<string, IRbacRoutePermissionDescriptor>;
24
+ }
25
+ export interface IRbacRoutePermissionDescriptor {
26
+ /**
27
+ * controller route permission. It overrides acl descriptor options
28
+ */
29
+ Permission: PermissionType;
30
+ }
31
+ export declare abstract class TwoFactorAuthProvider {
32
+ /**
33
+ * generate secret key if this provider use is needs it or null
34
+ */
35
+ abstract initialize(user: User): Promise<any | null>;
36
+ /**
37
+ * Perform action eg. send sms or email. Some 2fac implementations do nothing eg. google auth or hardware keys
38
+ */
39
+ abstract execute(user: User): Promise<void>;
40
+ /**
41
+ * verifies token send by user
42
+ */
43
+ abstract verifyToken(token: string, user: User): Promise<boolean>;
44
+ /**
45
+ * Checks if 2fa is enabled for given user
46
+ */
47
+ abstract isEnabled(user: User): Promise<boolean>;
48
+ /**
49
+ * Checks if 2fa is initialized eg. some
50
+ * 2fa systems requires to generate private software key and pass it
51
+ * to user ( like google authenticator)
52
+ */
53
+ abstract isInitialized(user: User): Promise<boolean>;
54
+ }
55
+ export declare abstract class FingerprintProvider {
56
+ }
57
+ export interface TwoFactorAuthConfig {
58
+ enabled: boolean;
59
+ service: string;
60
+ }
61
+ export interface FingerpringConfig {
62
+ enabled: boolean;
63
+ maxDevices: number;
64
+ service: string;
65
+ }
66
66
  //# sourceMappingURL=interfaces.d.ts.map
@@ -1,5 +1,5 @@
1
- export class TwoFactorAuthProvider {
2
- }
3
- export class FingerprintProvider {
4
- }
1
+ export class TwoFactorAuthProvider {
2
+ }
3
+ export class FingerprintProvider {
4
+ }
5
5
  //# sourceMappingURL=interfaces.js.map
@@ -1,11 +1,11 @@
1
- import { RouteMiddleware, IController, IRoute } from '@spinajs/http';
2
- /**
3
- * Filters attributes of db models
4
- */
5
- export declare class FilterAttribute extends RouteMiddleware {
6
- onResponse(): Promise<void>;
7
- isEnabled(_action: IRoute, _instance: IController): boolean;
8
- onBefore(): Promise<void>;
9
- onAfter(): Promise<void>;
10
- }
1
+ import { RouteMiddleware, IController, IRoute } from '@spinajs/http';
2
+ /**
3
+ * Filters attributes of db models
4
+ */
5
+ export declare class FilterAttribute extends RouteMiddleware {
6
+ onResponse(): Promise<void>;
7
+ isEnabled(_action: IRoute, _instance: IController): boolean;
8
+ onBefore(): Promise<void>;
9
+ onAfter(): Promise<void>;
10
+ }
11
11
  //# sourceMappingURL=AttributeFilter.d.ts.map
@@ -1,15 +1,15 @@
1
- import { RouteMiddleware } from '@spinajs/http';
2
- /**
3
- * Filters attributes of db models
4
- */
5
- export class FilterAttribute extends RouteMiddleware {
6
- async onResponse() { }
7
- isEnabled(_action, _instance) {
8
- return true;
9
- }
10
- // tslint:disable-next-line: no-empty
11
- async onBefore() { }
12
- // tslint:disable-next-line: no-empty
13
- async onAfter() { }
14
- }
1
+ import { RouteMiddleware } from '@spinajs/http';
2
+ /**
3
+ * Filters attributes of db models
4
+ */
5
+ export class FilterAttribute extends RouteMiddleware {
6
+ async onResponse() { }
7
+ isEnabled(_action, _instance) {
8
+ return true;
9
+ }
10
+ // tslint:disable-next-line: no-empty
11
+ async onBefore() { }
12
+ // tslint:disable-next-line: no-empty
13
+ async onAfter() { }
14
+ }
15
15
  //# sourceMappingURL=AttributeFilter.js.map