@spinajs/rbac-http 2.0.46 → 2.0.51

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 (123) hide show
  1. package/README.md +11 -11
  2. package/lib/2fa/SpeakEasy2FaToken.d.ts +2 -1
  3. package/lib/2fa/SpeakEasy2FaToken.d.ts.map +1 -0
  4. package/lib/2fa/SpeakEasy2FaToken.js +11 -37
  5. package/lib/2fa/SpeakEasy2FaToken.js.map +1 -1
  6. package/lib/config/rbac-http.d.ts +1 -0
  7. package/lib/config/rbac-http.d.ts.map +1 -0
  8. package/lib/config/rbac-http.js +2 -4
  9. package/lib/config/rbac-http.js.map +1 -1
  10. package/lib/controllers/LoginController.d.ts +7 -6
  11. package/lib/controllers/LoginController.d.ts.map +1 -0
  12. package/lib/controllers/LoginController.js +89 -92
  13. package/lib/controllers/LoginController.js.map +1 -1
  14. package/lib/controllers/TwoFactorAuthController.d.ts +4 -3
  15. package/lib/controllers/TwoFactorAuthController.d.ts.map +1 -0
  16. package/lib/controllers/TwoFactorAuthController.js +31 -34
  17. package/lib/controllers/TwoFactorAuthController.js.map +1 -1
  18. package/lib/controllers/UserAdminController.d.ts +1 -0
  19. package/lib/controllers/UserAdminController.d.ts.map +1 -0
  20. package/lib/controllers/UserAdminController.js +6 -9
  21. package/lib/controllers/UserAdminController.js.map +1 -1
  22. package/lib/controllers/UserController.d.ts +2 -1
  23. package/lib/controllers/UserController.d.ts.map +1 -0
  24. package/lib/controllers/UserController.js +30 -56
  25. package/lib/controllers/UserController.js.map +1 -1
  26. package/lib/controllers/UserMetadata.d.ts +1 -0
  27. package/lib/controllers/UserMetadata.d.ts.map +1 -0
  28. package/lib/controllers/UserMetadata.js +24 -28
  29. package/lib/controllers/UserMetadata.js.map +1 -1
  30. package/lib/decorators.d.ts +2 -1
  31. package/lib/decorators.d.ts.map +1 -0
  32. package/lib/decorators.js +16 -24
  33. package/lib/decorators.js.map +1 -1
  34. package/lib/dto/login-dto.d.ts +1 -0
  35. package/lib/dto/login-dto.d.ts.map +1 -0
  36. package/lib/dto/login-dto.js +4 -7
  37. package/lib/dto/login-dto.js.map +1 -1
  38. package/lib/dto/password-dto.d.ts +1 -0
  39. package/lib/dto/password-dto.d.ts.map +1 -0
  40. package/lib/dto/password-dto.js +4 -7
  41. package/lib/dto/password-dto.js.map +1 -1
  42. package/lib/dto/restore-password-dto.d.ts +1 -0
  43. package/lib/dto/restore-password-dto.d.ts.map +1 -0
  44. package/lib/dto/restore-password-dto.js +4 -7
  45. package/lib/dto/restore-password-dto.js.map +1 -1
  46. package/lib/dto/token-dto.d.ts +1 -0
  47. package/lib/dto/token-dto.d.ts.map +1 -0
  48. package/lib/dto/token-dto.js +4 -7
  49. package/lib/dto/token-dto.js.map +1 -1
  50. package/lib/dto/user-dto.d.ts +1 -0
  51. package/lib/dto/user-dto.d.ts.map +1 -0
  52. package/lib/dto/user-dto.js +4 -7
  53. package/lib/dto/user-dto.js.map +1 -1
  54. package/lib/dto/userLogin-dto.d.ts +1 -0
  55. package/lib/dto/userLogin-dto.d.ts.map +1 -0
  56. package/lib/dto/userLogin-dto.js +4 -7
  57. package/lib/dto/userLogin-dto.js.map +1 -1
  58. package/lib/events/UserLoginFailed.d.ts +1 -0
  59. package/lib/events/UserLoginFailed.d.ts.map +1 -0
  60. package/lib/events/UserLoginFailed.js +4 -7
  61. package/lib/events/UserLoginFailed.js.map +1 -1
  62. package/lib/events/UserLoginSuccess.d.ts +1 -0
  63. package/lib/events/UserLoginSuccess.d.ts.map +1 -0
  64. package/lib/events/UserLoginSuccess.js +4 -7
  65. package/lib/events/UserLoginSuccess.js.map +1 -1
  66. package/lib/events/UserPassordRestore.d.ts +1 -0
  67. package/lib/events/UserPassordRestore.d.ts.map +1 -0
  68. package/lib/events/UserPassordRestore.js +4 -7
  69. package/lib/events/UserPassordRestore.js.map +1 -1
  70. package/lib/fingerprint/FingerprintJs.d.ts +2 -1
  71. package/lib/fingerprint/FingerprintJs.d.ts.map +1 -0
  72. package/lib/fingerprint/FingerprintJs.js +5 -8
  73. package/lib/fingerprint/FingerprintJs.js.map +1 -1
  74. package/lib/index.d.ts +9 -8
  75. package/lib/index.d.ts.map +1 -0
  76. package/lib/index.js +8 -24
  77. package/lib/index.js.map +1 -1
  78. package/lib/interfaces.d.ts +2 -1
  79. package/lib/interfaces.d.ts.map +1 -0
  80. package/lib/interfaces.js +2 -7
  81. package/lib/interfaces.js.map +1 -1
  82. package/lib/middlewares/AttributeFilter.d.ts +1 -0
  83. package/lib/middlewares/AttributeFilter.d.ts.map +1 -0
  84. package/lib/middlewares/AttributeFilter.js +2 -6
  85. package/lib/middlewares/AttributeFilter.js.map +1 -1
  86. package/lib/middlewares.d.ts +1 -0
  87. package/lib/middlewares.d.ts.map +1 -0
  88. package/lib/middlewares.js +13 -39
  89. package/lib/middlewares.js.map +1 -1
  90. package/lib/policies/2FaPolicy.d.ts +2 -1
  91. package/lib/policies/2FaPolicy.d.ts.map +1 -0
  92. package/lib/policies/2FaPolicy.js +6 -10
  93. package/lib/policies/2FaPolicy.js.map +1 -1
  94. package/lib/policies/LoggedPolicy.d.ts +1 -0
  95. package/lib/policies/LoggedPolicy.d.ts.map +1 -0
  96. package/lib/policies/LoggedPolicy.js +4 -8
  97. package/lib/policies/LoggedPolicy.js.map +1 -1
  98. package/lib/policies/NotLoggedPolicy.d.ts +1 -0
  99. package/lib/policies/NotLoggedPolicy.d.ts.map +1 -0
  100. package/lib/policies/NotLoggedPolicy.js +4 -8
  101. package/lib/policies/NotLoggedPolicy.js.map +1 -1
  102. package/lib/policies/RbacPolicy.d.ts +1 -0
  103. package/lib/policies/RbacPolicy.d.ts.map +1 -0
  104. package/lib/policies/RbacPolicy.js +17 -25
  105. package/lib/policies/RbacPolicy.js.map +1 -1
  106. package/lib/policies/captchaPolicy.d.ts +2 -0
  107. package/lib/policies/captchaPolicy.d.ts.map +1 -0
  108. package/lib/policies/captchaPolicy.js +1 -0
  109. package/lib/route-args.d.ts +2 -1
  110. package/lib/route-args.d.ts.map +1 -0
  111. package/lib/route-args.js +9 -12
  112. package/lib/route-args.js.map +1 -1
  113. package/lib/transformers.d.ts +1 -0
  114. package/lib/transformers.d.ts.map +1 -0
  115. package/lib/transformers.js +7 -13
  116. package/lib/transformers.js.map +1 -1
  117. package/package.json +66 -63
  118. package/lib/policies/AuthPolicy.d.ts +0 -9
  119. package/lib/policies/AuthPolicy.js +0 -23
  120. package/lib/policies/AuthPolicy.js.map +0 -1
  121. package/lib/policies.d.ts +0 -12
  122. package/lib/policies.js +0 -57
  123. package/lib/policies.js.map +0 -1
package/package.json CHANGED
@@ -1,63 +1,66 @@
1
- {
2
- "name": "@spinajs/rbac-http",
3
- "version": "2.0.46",
4
- "description": "HTTP API for user session & permissions",
5
- "main": "lib/index.js",
6
- "private": false,
7
- "scripts": {
8
- "build": "npm run clean && npm run compile",
9
- "compile": "tsc -p tsconfig.build.json",
10
- "clean": "",
11
- "test": "ts-mocha -p tsconfig.json test/**/*.test.ts",
12
- "coverage": "nyc npm run test",
13
- "build-docs": "rimraf docs && typedoc --options typedoc.json src/",
14
- "prepare": "npm run build",
15
- "format": "prettier --write \"src/**/*.ts\"",
16
- "lint": "eslint -c .eslintrc.js --ext .ts src --fix",
17
- "prepublishOnly": "npm test && npm run lint",
18
- "preversion": "npm run lint",
19
- "version": "npm run format && git add -A src",
20
- "postversion": "git push && git push --tags"
21
- },
22
- "files": [
23
- "lib/**/*"
24
- ],
25
- "types": "lib",
26
- "repository": {
27
- "type": "git",
28
- "url": "git+https://github.com/spinajs/main.git"
29
- },
30
- "keywords": [
31
- "spinajs",
32
- "rbac"
33
- ],
34
- "author": "SpinaJS <spinajs@coderush.pl> (https://github.com/spinajs/main)",
35
- "license": "MIT",
36
- "bugs": {
37
- "url": "https://github.com/spinajs/main/issues"
38
- },
39
- "homepage": "https://github.com/spinajs/main#readme",
40
- "dependencies": {
41
- "@spinajs/configuration": "^2.0.46",
42
- "@spinajs/di": "^2.0.46",
43
- "@spinajs/exceptions": "^2.0.39",
44
- "@spinajs/http": "^2.0.46",
45
- "@spinajs/log": "^2.0.46",
46
- "@spinajs/orm": "^2.0.46",
47
- "@spinajs/orm-http": "^2.0.46",
48
- "@spinajs/rbac": "^2.0.46",
49
- "@spinajs/reflection": "^2.0.46",
50
- "accesscontrol": "^2.2.1",
51
- "luxon": "^3.2.1",
52
- "qrcode": "^1.5.1",
53
- "speakeasy": "^2.0.0",
54
- "uuid": "^8.3.2"
55
- },
56
- "devDependencies": {
57
- "@spinajs/orm-sqlite": "^2.0.46",
58
- "@types/qrcode": "^1.4.2",
59
- "@types/speakeasy": "^2.0.7",
60
- "@types/uuid": "^8.3.3"
61
- },
62
- "gitHead": "bd560afd6c9a156071102cc6b4f36115b5498e9d"
63
- }
1
+ {
2
+ "name": "@spinajs/rbac-http",
3
+ "version": "2.0.51",
4
+ "description": "HTTP API for user session & permissions",
5
+ "exports": "./lib/index.js",
6
+ "type": "module",
7
+ "private": false,
8
+ "engines": {
9
+ "node": ">=16.11"
10
+ },
11
+ "scripts": {
12
+ "build": "npm run clean && npm run compile",
13
+ "compile": "tsc -b tsconfig.json",
14
+ "rimraf": "./node_modules/rimraf/bin.js",
15
+ "clean": "rimraf lib/ && rimraf tsconfig.tsbuildinfo",
16
+ "test": "ts-mocha -p tsconfig.json test/**/*.test.ts",
17
+ "coverage": "nyc npm run test",
18
+ "build-docs": "rimraf docs && typedoc --options typedoc.json src/",
19
+ "format": "prettier --write \"src/**/*.ts\"",
20
+ "lint": "eslint -c .eslintrc.cjs --ext .ts src --fix",
21
+ "preversion": "npm run lint",
22
+ "version": "npm run format && git add -A src"
23
+
24
+ },
25
+ "files": [
26
+ "lib/**/*"
27
+ ],
28
+ "types": "lib",
29
+ "repository": {
30
+ "type": "git",
31
+ "url": "git+https://github.com/spinajs/main.git"
32
+ },
33
+ "keywords": [
34
+ "spinajs",
35
+ "rbac"
36
+ ],
37
+ "author": "SpinaJS <spinajs@coderush.pl> (https://github.com/spinajs/main)",
38
+ "license": "MIT",
39
+ "bugs": {
40
+ "url": "https://github.com/spinajs/main/issues"
41
+ },
42
+ "homepage": "https://github.com/spinajs/main#readme",
43
+ "dependencies": {
44
+ "@spinajs/configuration": "^2.0.46",
45
+ "@spinajs/di": "^2.0.46",
46
+ "@spinajs/exceptions": "^2.0.39",
47
+ "@spinajs/http": "^2.0.46",
48
+ "@spinajs/log": "^2.0.46",
49
+ "@spinajs/orm": "^2.0.46",
50
+ "@spinajs/orm-http": "^2.0.46",
51
+ "@spinajs/rbac": "^2.0.46",
52
+ "@spinajs/reflection": "^2.0.46",
53
+ "accesscontrol": "^2.2.1",
54
+ "luxon": "^3.2.1",
55
+ "qrcode": "^1.5.1",
56
+ "speakeasy": "^2.0.0",
57
+ "uuid": "^9.0.0"
58
+ },
59
+ "devDependencies": {
60
+ "@spinajs/orm-sqlite": "^2.0.46",
61
+ "@types/qrcode": "^1.5.0",
62
+ "@types/speakeasy": "^2.0.7",
63
+ "@types/uuid": "^9.0.0"
64
+ },
65
+ "gitHead": "002dc553b0ffffd72193d0121ac425a4083bc9ee"
66
+ }
@@ -1,9 +0,0 @@
1
- import { BasePolicy, IController, IRoute, Request as sRequest } from '@spinajs/http';
2
- /**
3
- * Simple policy to only check if user is authorized ( do not check permissions for routes)
4
- * Usefull if we want to give acces for all logged users
5
- */
6
- export declare class AuthPolicy extends BasePolicy {
7
- isEnabled(_action: IRoute, _instance: IController): boolean;
8
- execute(req: sRequest): Promise<void>;
9
- }
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AuthPolicy = void 0;
4
- const http_1 = require("@spinajs/http");
5
- const exceptions_1 = require("@spinajs/exceptions");
6
- /**
7
- * Simple policy to only check if user is authorized ( do not check permissions for routes)
8
- * Usefull if we want to give acces for all logged users
9
- */
10
- class AuthPolicy extends http_1.BasePolicy {
11
- isEnabled(_action, _instance) {
12
- // acl is always on if set
13
- return true;
14
- }
15
- async execute(req) {
16
- if (!req.storage || !req.storage.user || !req.storage.session.Data.get('Authorized')) {
17
- throw new exceptions_1.Forbidden('user not logged or session expired');
18
- }
19
- return Promise.resolve();
20
- }
21
- }
22
- exports.AuthPolicy = AuthPolicy;
23
- //# sourceMappingURL=AuthPolicy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AuthPolicy.js","sourceRoot":"","sources":["../../src/policies/AuthPolicy.ts"],"names":[],"mappings":";;;AAAA,wCAAqF;AACrF,oDAAgD;AAEhD;;;GAGG;AACH,MAAa,UAAW,SAAQ,iBAAU;IACjC,SAAS,CAAC,OAAe,EAAE,SAAsB;QACtD,0BAA0B;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,GAAa;QAChC,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;YACpF,MAAM,IAAI,sBAAS,CAAC,oCAAoC,CAAC,CAAC;SAC3D;QAED,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF;AAbD,gCAaC"}
package/lib/policies.d.ts DELETED
@@ -1,12 +0,0 @@
1
- import { AccessControl, Permission } from 'accesscontrol';
2
- import { BasePolicy, IController, IRoute, Request as sRequest } from '@spinajs/http';
3
- import { User } from '@spinajs/rbac';
4
- export declare class RbacPolicy extends BasePolicy {
5
- protected Ac: AccessControl;
6
- constructor();
7
- isEnabled(_action: IRoute, _instance: IController): boolean;
8
- execute(req: sRequest, action: IRoute, instance: IController): Promise<void>;
9
- }
10
- export declare function checkRbacPermission(role: string | string[], resource: string, permission: string): Permission;
11
- export declare function checkUserPermission(user: User, resource: string, permission: string): Permission;
12
- export declare function checkRoutePermission(req: sRequest, resource: string, permission: string): Permission;
package/lib/policies.js DELETED
@@ -1,57 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.checkRoutePermission = exports.checkUserPermission = exports.checkRbacPermission = exports.RbacPolicy = void 0;
4
- const http_1 = require("@spinajs/http");
5
- const exceptions_1 = require("@spinajs/exceptions");
6
- const decorators_1 = require("./decorators");
7
- const di_1 = require("@spinajs/di");
8
- class RbacPolicy extends http_1.BasePolicy {
9
- constructor() {
10
- super();
11
- this.Ac = di_1.DI.get('AccessControl');
12
- }
13
- isEnabled(_action, _instance) {
14
- // acl is always on if set
15
- return true;
16
- }
17
- async execute(req, action, instance) {
18
- var _a, _b;
19
- const descriptor = Reflect.getMetadata(decorators_1.ACL_CONTROLLER_DESCRIPTOR, instance);
20
- let permission = (_a = descriptor.Permission) !== null && _a !== void 0 ? _a : '';
21
- // check if route has its own permission
22
- if (descriptor.Routes.has(action.Method)) {
23
- permission = (_b = descriptor.Routes.get(action.Method).Permission) !== null && _b !== void 0 ? _b : '';
24
- }
25
- if (!descriptor || !descriptor.Permission) {
26
- throw new exceptions_1.Forbidden(`no route permission or resources assigned`);
27
- }
28
- if (!req.storage || !req.storage.user) {
29
- throw new exceptions_1.Forbidden('user not logger or session expired');
30
- }
31
- if (!checkRoutePermission(req, descriptor.Resource, permission).granted) {
32
- throw new exceptions_1.Forbidden(`role(s) ${req.storage.user.Role} does not have permission ${permission} for resource ${descriptor.Resource}`);
33
- }
34
- }
35
- }
36
- exports.RbacPolicy = RbacPolicy;
37
- function checkRbacPermission(role, resource, permission) {
38
- const ac = di_1.DI.get('AccessControl');
39
- return ac.can(role)[permission](resource);
40
- }
41
- exports.checkRbacPermission = checkRbacPermission;
42
- function checkUserPermission(user, resource, permission) {
43
- const ac = di_1.DI.get('AccessControl');
44
- if (!user) {
45
- return null;
46
- }
47
- return ac.can(user.Role)[permission](resource);
48
- }
49
- exports.checkUserPermission = checkUserPermission;
50
- function checkRoutePermission(req, resource, permission) {
51
- if (!req.storage || !req.storage.user) {
52
- return null;
53
- }
54
- return checkUserPermission(req.storage.user, resource, permission);
55
- }
56
- exports.checkRoutePermission = checkRoutePermission;
57
- //# sourceMappingURL=policies.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"policies.js","sourceRoot":"","sources":["../src/policies.ts"],"names":[],"mappings":";;;AACA,wCAAqF;AACrF,oDAAgD;AAChD,6CAAyD;AAEzD,oCAAiC;AAGjC,MAAa,UAAW,SAAQ,iBAAU;IAGxC;QACE,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,EAAE,GAAG,OAAE,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACpC,CAAC;IAEM,SAAS,CAAC,OAAe,EAAE,SAAsB;QACtD,0BAA0B;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,GAAa,EAAE,MAAc,EAAE,QAAqB;;QACvE,MAAM,UAAU,GAAoB,OAAO,CAAC,WAAW,CAAC,sCAAyB,EAAE,QAAQ,CAAC,CAAC;QAC7F,IAAI,UAAU,GAAG,MAAA,UAAU,CAAC,UAAU,mCAAI,EAAE,CAAC;QAE7C,wCAAwC;QACxC,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;YACxC,UAAU,GAAG,MAAA,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,mCAAI,EAAE,CAAC;SACpE;QAED,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;YACzC,MAAM,IAAI,sBAAS,CAAC,2CAA2C,CAAC,CAAC;SAClE;QAED,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE;YACrC,MAAM,IAAI,sBAAS,CAAC,oCAAoC,CAAC,CAAC;SAC3D;QAED,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,OAAO,EAAE;YACvE,MAAM,IAAI,sBAAS,CAAC,WAAW,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,6BAA6B,UAAU,iBAAiB,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;SACpI;IACH,CAAC;CACF;AAnCD,gCAmCC;AAED,SAAgB,mBAAmB,CAAC,IAAuB,EAAE,QAAgB,EAAE,UAAkB;IAC/F,MAAM,EAAE,GAAG,OAAE,CAAC,GAAG,CAAgB,eAAe,CAAC,CAAC;IAClD,OAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAS,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC;AACrD,CAAC;AAHD,kDAGC;AAED,SAAgB,mBAAmB,CAAC,IAAU,EAAE,QAAgB,EAAE,UAAkB;IAClF,MAAM,EAAE,GAAG,OAAE,CAAC,GAAG,CAAgB,eAAe,CAAC,CAAC;IAElD,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,IAAI,CAAC;KACb;IAED,OAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAS,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC1D,CAAC;AARD,kDAQC;AAED,SAAgB,oBAAoB,CAAC,GAAa,EAAE,QAAgB,EAAE,UAAkB;IACtF,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE;QACrC,OAAO,IAAI,CAAC;KACb;IAED,OAAO,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACrE,CAAC;AAND,oDAMC"}