chyz 1.0.13-rc.8 → 1.1.0-rc.1
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.
- package/BaseChyz.ts +79 -20
- package/Doc/Moel kullanma.md +13 -0
- package/Examples/Controllers/ApiController.ts +22 -22
- package/Examples/Controllers/BasicApiController.ts +121 -0
- package/Examples/Controllers/SiteController.ts +18 -8
- package/Examples/Models/AuthAssignment.ts +50 -0
- package/Examples/Models/AuthItem.ts +59 -0
- package/Examples/Models/AuthItemChild.ts +49 -0
- package/Examples/Models/Categories.ts +4 -0
- package/Examples/Models/KeycloakUser.ts +4 -0
- package/Examples/Models/User.ts +8 -1
- package/Examples/index.ts +22 -2
- package/Examples/log/app.log +14466 -0
- package/Examples/log/errors.log +594 -0
- package/Examples/package.json +5 -2
- package/README.md +265 -12
- package/base/ActionFilter.ts +1 -1
- package/base/BaseError.ts +4 -2
- package/base/DbConnection.ts +9 -5
- package/base/InvalidArgumentException.ts +16 -0
- package/base/Model.ts +231 -34
- package/base/ModelManager.ts +6 -1
- package/base/RestClient.ts +4 -4
- package/base/ValidationHttpException.ts +1 -1
- package/base/index.ts +1 -0
- package/dist/BaseChyz.js +67 -15
- package/dist/BaseChyz.js.map +1 -1
- package/dist/base/ActionFilter.js +1 -1
- package/dist/base/ActionFilter.js.map +1 -1
- package/dist/base/BaseError.js +6 -2
- package/dist/base/BaseError.js.map +1 -1
- package/dist/base/DbConnection.js +1 -0
- package/dist/base/DbConnection.js.map +1 -1
- package/dist/base/InvalidArgumentException.js +18 -0
- package/dist/base/InvalidArgumentException.js.map +1 -0
- package/dist/base/Model.js +192 -4
- package/dist/base/Model.js.map +1 -1
- package/dist/base/ModelManager.js +0 -8
- package/dist/base/ModelManager.js.map +1 -1
- package/dist/base/RestClient.js +4 -4
- package/dist/base/RestClient.js.map +1 -1
- package/dist/base/ValidationHttpException.js +1 -1
- package/dist/base/index.js +1 -0
- package/dist/base/index.js.map +1 -1
- package/dist/filters/AccessControl.js +15 -3
- package/dist/filters/AccessControl.js.map +1 -1
- package/dist/filters/AccessRule.js +99 -38
- package/dist/filters/AccessRule.js.map +1 -1
- package/dist/filters/auth/HttpBasicAuth.js +65 -0
- package/dist/filters/auth/HttpBasicAuth.js.map +1 -1
- package/dist/filters/auth/JwtHttpBearerAuth.js +1 -1
- package/dist/filters/auth/JwtHttpBearerAuth.js.map +1 -1
- package/dist/filters/auth/index.js +1 -0
- package/dist/filters/auth/index.js.map +1 -1
- package/dist/package.json +7 -5
- package/dist/rbac/AuthAssignment.js +45 -0
- package/dist/rbac/AuthAssignment.js.map +1 -0
- package/dist/rbac/AuthItem.js +52 -0
- package/dist/rbac/AuthItem.js.map +1 -0
- package/dist/rbac/AuthItemChild.js +44 -0
- package/dist/rbac/AuthItemChild.js.map +1 -0
- package/dist/rbac/AuthManager.js +359 -0
- package/dist/rbac/AuthManager.js.map +1 -0
- package/dist/requiments/Utils.js +5 -1
- package/dist/requiments/Utils.js.map +1 -1
- package/dist/web/WebUser.js +78 -0
- package/dist/web/WebUser.js.map +1 -1
- package/filters/AccessControl.ts +19 -6
- package/filters/AccessRule.ts +61 -16
- package/filters/auth/HttpBasicAuth.ts +68 -0
- package/filters/auth/JwtHttpBearerAuth.ts +1 -1
- package/filters/auth/index.ts +1 -0
- package/package.json +7 -5
- package/rbac/AuthAssignment.ts +50 -0
- package/rbac/AuthItem.ts +57 -0
- package/rbac/AuthItemChild.ts +50 -0
- package/rbac/AuthManager.ts +398 -0
- package/requiments/Utils.ts +6 -0
- package/web/IdentityInterface.ts +6 -0
- package/web/WebUser.ts +88 -1
|
@@ -5,4 +5,69 @@
|
|
|
5
5
|
* E-mail: cihan@chy.com.tr
|
|
6
6
|
* Github:https://github.com/cihan53/
|
|
7
7
|
*/
|
|
8
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
9
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
10
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
11
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
12
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
13
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
14
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
15
|
+
});
|
|
16
|
+
};
|
|
17
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
18
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
19
|
+
};
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
exports.HttpBasicAuth = void 0;
|
|
22
|
+
const AuthMethod_1 = require("./AuthMethod");
|
|
23
|
+
const base_1 = require("../../base");
|
|
24
|
+
const BaseChyz_1 = __importDefault(require("../../BaseChyz"));
|
|
25
|
+
class HttpBasicAuth extends AuthMethod_1.AuthMethod {
|
|
26
|
+
constructor() {
|
|
27
|
+
super(...arguments);
|
|
28
|
+
/**
|
|
29
|
+
* @var string the HTTP header name
|
|
30
|
+
*/
|
|
31
|
+
this.header = 'Authorization';
|
|
32
|
+
/**
|
|
33
|
+
* @var string a pattern to use to extract the HTTP authentication value
|
|
34
|
+
*/
|
|
35
|
+
this.pattern = /^Basic\s+(.*?)$/;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* @throws InvalidConfigException
|
|
39
|
+
*/
|
|
40
|
+
init() {
|
|
41
|
+
var _a;
|
|
42
|
+
super.init();
|
|
43
|
+
if (!this.pattern) {
|
|
44
|
+
throw new base_1.InvalidConfigException('You must provide pattern to use to extract the HTTP authentication value!');
|
|
45
|
+
}
|
|
46
|
+
this.user = (_a = BaseChyz_1.default.getComponent("user")) !== null && _a !== void 0 ? _a : null;
|
|
47
|
+
}
|
|
48
|
+
authenticate(user, request, response) {
|
|
49
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
50
|
+
let autHeader = this.getHeaderByKey(request.headers, this.header);
|
|
51
|
+
if (autHeader == null || (autHeader = this.patternCheck(autHeader, this.pattern)) == null) {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
let basicauth = autHeader[1].split(":");
|
|
55
|
+
let identity = yield user.loginByAccessToken(basicauth, "HttpBasicAuth");
|
|
56
|
+
if (identity === null) {
|
|
57
|
+
this.challenge(response);
|
|
58
|
+
this.handleFailure(response);
|
|
59
|
+
}
|
|
60
|
+
return identity;
|
|
61
|
+
return null;
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* @throws UnauthorizedHttpException
|
|
66
|
+
*/
|
|
67
|
+
fail(response) {
|
|
68
|
+
this.challenge(response);
|
|
69
|
+
this.handleFailure(response);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.HttpBasicAuth = HttpBasicAuth;
|
|
8
73
|
//# sourceMappingURL=HttpBasicAuth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpBasicAuth.js","sourceRoot":"","sources":["../../../filters/auth/HttpBasicAuth.ts"],"names":[],"mappings":";AAAA;;;;;GAKG"}
|
|
1
|
+
{"version":3,"file":"HttpBasicAuth.js","sourceRoot":"","sources":["../../../filters/auth/HttpBasicAuth.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;AAMH,6CAAwC;AACxC,qCAAkD;AAClD,8DAAsC;AAEtC,MAAa,aAAc,SAAQ,uBAAU;IAA7C;;QAEI;;WAEG;QACI,WAAM,GAAG,eAAe,CAAC;QAGhC;;WAEG;QAEI,YAAO,GAAG,iBAAiB,CAAC;IA+CvC,CAAC;IA5CG;;OAEG;IACI,IAAI;;QACP,KAAK,CAAC,IAAI,EAAE,CAAC;QAEb,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACf,MAAM,IAAI,6BAAsB,CAAC,2EAA2E,CAAC,CAAC;SACjH;QAED,IAAI,CAAC,IAAI,GAAG,MAAA,kBAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,mCAAI,IAAI,CAAC;IACtD,CAAC;IAGK,YAAY,CAAC,IAAa,EAAE,OAAe,EAAE,QAAiB;;YAGhE,IAAI,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;YACjE,IAAI,SAAS,IAAI,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,EAAE;gBACvF,OAAO,IAAI,CAAC;aACf;YAED,IAAI,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAEvC,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;YACzE,IAAI,QAAQ,KAAK,IAAI,EAAE;gBACnB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBACzB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;aAChC;YAED,OAAO,QAAQ,CAAC;YAGhB,OAAO,IAAI,CAAC;QAChB,CAAC;KAAA;IAGD;;OAEG;IACI,IAAI,CAAC,QAAiB;QACzB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QACxB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;CACJ;AA3DD,sCA2DC"}
|
|
@@ -50,7 +50,7 @@ class JwtHttpBearerAuth extends HttpBearerAuth_1.HttpBearerAuth {
|
|
|
50
50
|
if (autHeader == null || (autHeader = this.patternCheck(autHeader, this.pattern)) == null) {
|
|
51
51
|
return null;
|
|
52
52
|
}
|
|
53
|
-
|
|
53
|
+
// BaseChyz.debug("JSON Web Token.",autHeader);
|
|
54
54
|
let identity = null;
|
|
55
55
|
let token = null;
|
|
56
56
|
token = JsonWebToken.decode(autHeader[1], { complete: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JwtHttpBearerAuth.js","sourceRoot":"","sources":["../../../filters/auth/JwtHttpBearerAuth.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA;;;;;GAKG;AACH,8DAAsC;AACtC,qDAAgD;AAChD,8EAAyE;AAKzE,MAAM,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAE7C,MAAa,iBAAkB,SAAQ,+BAAc;IAArD;;QACI;;;WAGG;QACI,QAAG,GAAG,KAAK,CAAA;QACX,SAAI,GAAO,IAAI,CAAC;IA0D3B,CAAC;IAvDG;;OAEG;IACI,IAAI;;QACP,KAAK,CAAC,IAAI,EAAE,CAAC;QAEb,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACf,MAAM,IAAI,+CAAsB,CAAC,2EAA2E,CAAC,CAAC;SACjH;QAED,IAAI,CAAC,IAAI,GAAG,MAAA,kBAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,mCAAI,IAAI,CAAC;IACtD,CAAC;IAGY,YAAY,CAAC,IAAY,EAAE,OAAe,EAAE,QAAiB;;YAGtE,IAAI,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;YACjE,IAAI,SAAS,IAAI,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,EAAE;gBACvF,OAAO,IAAI,CAAC;aACf;YAED
|
|
1
|
+
{"version":3,"file":"JwtHttpBearerAuth.js","sourceRoot":"","sources":["../../../filters/auth/JwtHttpBearerAuth.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA;;;;;GAKG;AACH,8DAAsC;AACtC,qDAAgD;AAChD,8EAAyE;AAKzE,MAAM,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAE7C,MAAa,iBAAkB,SAAQ,+BAAc;IAArD;;QACI;;;WAGG;QACI,QAAG,GAAG,KAAK,CAAA;QACX,SAAI,GAAO,IAAI,CAAC;IA0D3B,CAAC;IAvDG;;OAEG;IACI,IAAI;;QACP,KAAK,CAAC,IAAI,EAAE,CAAC;QAEb,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACf,MAAM,IAAI,+CAAsB,CAAC,2EAA2E,CAAC,CAAC;SACjH;QAED,IAAI,CAAC,IAAI,GAAG,MAAA,kBAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,mCAAI,IAAI,CAAC;IACtD,CAAC;IAGY,YAAY,CAAC,IAAY,EAAE,OAAe,EAAE,QAAiB;;YAGtE,IAAI,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;YACjE,IAAI,SAAS,IAAI,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,EAAE;gBACvF,OAAO,IAAI,CAAC;aACf;YAED,+CAA+C;YAC/C,IAAI,QAAQ,GAAG,IAAI,CAAC;YACpB,IAAI,KAAK,GAAG,IAAI,CAAC;YAEjB,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAA;YAC3D,IAAI,CAAC,KAAK,EAAE;gBACR,kBAAQ,CAAC,OAAO,CAAC,+DAA+D,CAAC,CAAC;gBAClF,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACvB;YAED,IAAI,KAAK,KAAK,IAAI,EAAE;gBAChB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;oBACnB,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;iBAC3C;qBAAM;oBACH,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAA;iBAC9E;aACJ;YAED,IAAI,QAAQ,IAAI,IAAI;gBAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAGzC,OAAO,QAAQ,CAAC;QACpB,CAAC;KAAA;IAGD;;OAEG;IACI,IAAI,CAAC,QAAiB;QACzB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QACxB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;CAEJ;AAhED,8CAgEC"}
|
|
@@ -13,4 +13,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
13
13
|
__exportStar(require("./JwtHttpBearerAuth"), exports);
|
|
14
14
|
__exportStar(require("./HttpBearerAuth"), exports);
|
|
15
15
|
__exportStar(require("./HttpHeaderAuth"), exports);
|
|
16
|
+
__exportStar(require("./HttpBasicAuth"), exports);
|
|
16
17
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../filters/auth/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sDAAmC;AACnC,mDAAgC;AAChC,mDAAgC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../filters/auth/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sDAAmC;AACnC,mDAAgC;AAChC,mDAAgC;AAChC,kDAA+B"}
|
package/dist/package.json
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "chyz",
|
|
3
|
-
"version": " 1.0
|
|
4
|
-
"description": "Nodejs
|
|
5
|
-
"main": "dist/index.js",
|
|
3
|
+
"version": " 1.1.0-rc.1",
|
|
4
|
+
"description": "Nodejs Micro service Framework",
|
|
6
5
|
"scripts": {
|
|
7
6
|
"dev": "nodemon -t --trace-warnings index.ts",
|
|
8
7
|
"debug": "ts-node index.ts",
|
|
9
8
|
"build": "rmdir /S /Q .\\dist && npx tsc && xcopy .\\log .\\dist\\log /e /i /h /Y && copy .\\package.json .\\dist\\package.json",
|
|
10
|
-
"publish": "cd dist && npm publish",
|
|
11
9
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
12
10
|
"postversion": "git push && git push --tags"
|
|
13
11
|
},
|
|
@@ -39,6 +37,7 @@
|
|
|
39
37
|
"pg-hstore": "^2.3.4",
|
|
40
38
|
"reflect-metadata": "^0.1.13",
|
|
41
39
|
"sequelize": "^6.6.5",
|
|
40
|
+
"sequelize-transparent-cache": "^2.3.0",
|
|
42
41
|
"validate.js": "^0.13.1"
|
|
43
42
|
},
|
|
44
43
|
"devDependencies": {
|
|
@@ -52,6 +51,9 @@
|
|
|
52
51
|
"keywords": [
|
|
53
52
|
"Framework",
|
|
54
53
|
"RespAPI",
|
|
55
|
-
"microservice"
|
|
54
|
+
"microservice",
|
|
55
|
+
"micro service",
|
|
56
|
+
"easy configuration",
|
|
57
|
+
"Rbac support"
|
|
56
58
|
]
|
|
57
59
|
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2021. Chy Bilgisayar Bilisim
|
|
4
|
+
* Author: Cihan Ozturk
|
|
5
|
+
* E-mail: cihan@chy.com.tr
|
|
6
|
+
* Github:https://github.com/cihan53/
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.AuthAssignmentClass = void 0;
|
|
10
|
+
const base_1 = require("../base");
|
|
11
|
+
class AuthAssignmentClass extends base_1.Model {
|
|
12
|
+
tableName() {
|
|
13
|
+
return 'auth_assignment';
|
|
14
|
+
}
|
|
15
|
+
attributes() {
|
|
16
|
+
return {
|
|
17
|
+
// Model attributes are defined here
|
|
18
|
+
item_name: {
|
|
19
|
+
type: base_1.DataTypes.STRING,
|
|
20
|
+
primaryKey: true,
|
|
21
|
+
allowNull: false
|
|
22
|
+
},
|
|
23
|
+
user_id: {
|
|
24
|
+
type: base_1.DataTypes.STRING,
|
|
25
|
+
allowNull: false
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
init() {
|
|
30
|
+
super.init();
|
|
31
|
+
this.model().removeAttribute('id');
|
|
32
|
+
}
|
|
33
|
+
relations() {
|
|
34
|
+
return [
|
|
35
|
+
{
|
|
36
|
+
type: "hasMany",
|
|
37
|
+
foreignKey: "name",
|
|
38
|
+
sourceKey: 'item_name',
|
|
39
|
+
model: base_1.ModelManager.AuthItem.model()
|
|
40
|
+
}
|
|
41
|
+
];
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.AuthAssignmentClass = AuthAssignmentClass;
|
|
45
|
+
//# sourceMappingURL=AuthAssignment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthAssignment.js","sourceRoot":"","sources":["../../rbac/AuthAssignment.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,kCAAiE;AAEjE,MAAa,mBAAoB,SAAQ,YAAK;IAG1C,SAAS;QACL,OAAO,iBAAiB,CAAC;IAC7B,CAAC;IACD,UAAU;QACN,OAAO;YAEH,oCAAoC;YACpC,SAAS,EAAE;gBACP,IAAI,EAAE,gBAAS,CAAC,MAAM;gBACtB,UAAU,EAAC,IAAI;gBACf,SAAS,EAAE,KAAK;aACnB;YACD,OAAO,EAAG;gBACN,IAAI,EAAE,gBAAS,CAAC,MAAM;gBACtB,SAAS,EAAE,KAAK;aACnB;SAEJ,CAAA;IACL,CAAC;IAED,IAAI;QACA,KAAK,CAAC,IAAI,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;IACtC,CAAC;IAED,SAAS;QACL,OAAO;YACH;gBACI,IAAI,EAAE,SAAS;gBACf,UAAU,EAAE,MAAM;gBAClB,SAAS,EAAC,WAAW;gBACrB,KAAK,EAAE,mBAAY,CAAC,QAAQ,CAAC,KAAK,EAAE;aACvC;SACJ,CAAA;IACL,CAAC;CAEJ;AAvCD,kDAuCC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2021. Chy Bilgisayar Bilisim
|
|
4
|
+
* Author: Cihan Ozturk
|
|
5
|
+
* E-mail: cihan@chy.com.tr
|
|
6
|
+
* Github:https://github.com/cihan53/
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.AuthItemClass = void 0;
|
|
10
|
+
const base_1 = require("../base");
|
|
11
|
+
class AuthItemClass extends base_1.Model {
|
|
12
|
+
tableName() {
|
|
13
|
+
return 'auth_item';
|
|
14
|
+
}
|
|
15
|
+
attributes() {
|
|
16
|
+
return {
|
|
17
|
+
// Model attributes are defined here
|
|
18
|
+
name: {
|
|
19
|
+
type: base_1.DataTypes.STRING,
|
|
20
|
+
primaryKey: true,
|
|
21
|
+
allowNull: false
|
|
22
|
+
},
|
|
23
|
+
type: {
|
|
24
|
+
type: base_1.DataTypes.INTEGER,
|
|
25
|
+
allowNull: false
|
|
26
|
+
},
|
|
27
|
+
description: {
|
|
28
|
+
type: base_1.DataTypes.STRING,
|
|
29
|
+
allowNull: false
|
|
30
|
+
},
|
|
31
|
+
rule_name: {
|
|
32
|
+
type: base_1.DataTypes.STRING,
|
|
33
|
+
allowNull: false
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
init() {
|
|
38
|
+
super.init();
|
|
39
|
+
this.model().removeAttribute('id');
|
|
40
|
+
}
|
|
41
|
+
relations() {
|
|
42
|
+
return [
|
|
43
|
+
{
|
|
44
|
+
type: "hasOne",
|
|
45
|
+
foreignKey: "item_name",
|
|
46
|
+
model: base_1.ModelManager.AuthAssignment.model()
|
|
47
|
+
}
|
|
48
|
+
];
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.AuthItemClass = AuthItemClass;
|
|
52
|
+
//# sourceMappingURL=AuthItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthItem.js","sourceRoot":"","sources":["../../rbac/AuthItem.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,kCAAiE;AAEjE,MAAa,aAAc,SAAQ,YAAK;IAGpC,SAAS;QACL,OAAO,WAAW,CAAC;IACvB,CAAC;IAED,UAAU;QACN,OAAO;YACH,oCAAoC;YACpC,IAAI,EAAE;gBACF,IAAI,EAAE,gBAAS,CAAC,MAAM;gBACtB,UAAU,EAAC,IAAI;gBACf,SAAS,EAAE,KAAK;aACnB;YACD,IAAI,EAAE;gBACF,IAAI,EAAE,gBAAS,CAAC,OAAO;gBACvB,SAAS,EAAE,KAAK;aACnB;YACD,WAAW,EAAE;gBACT,IAAI,EAAE,gBAAS,CAAC,MAAM;gBACtB,SAAS,EAAE,KAAK;aACnB;YACD,SAAS,EAAE;gBACP,IAAI,EAAE,gBAAS,CAAC,MAAM;gBACtB,SAAS,EAAE,KAAK;aACnB;SAEJ,CAAA;IACL,CAAC;IAED,IAAI;QACA,KAAK,CAAC,IAAI,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;IACtC,CAAC;IAED,SAAS;QACL,OAAO;YACH;gBACI,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,WAAW;gBACvB,KAAK,EAAE,mBAAY,CAAC,cAAc,CAAC,KAAK,EAAE;aAC7C;SACJ,CAAA;IACL,CAAC;CAEJ;AA9CD,sCA8CC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2021. Chy Bilgisayar Bilisim
|
|
4
|
+
* Author: Cihan Ozturk
|
|
5
|
+
* E-mail: cihan@chy.com.tr
|
|
6
|
+
* Github:https://github.com/cihan53/
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.AuthItemChildClass = void 0;
|
|
10
|
+
const base_1 = require("../base");
|
|
11
|
+
class AuthItemChildClass extends base_1.Model {
|
|
12
|
+
tableName() {
|
|
13
|
+
return 'auth_item_child';
|
|
14
|
+
}
|
|
15
|
+
attributes() {
|
|
16
|
+
return {
|
|
17
|
+
// Model attributes are defined here
|
|
18
|
+
parent: {
|
|
19
|
+
type: base_1.DataTypes.STRING,
|
|
20
|
+
primaryKey: true,
|
|
21
|
+
allowNull: false
|
|
22
|
+
},
|
|
23
|
+
child: {
|
|
24
|
+
type: base_1.DataTypes.STRING,
|
|
25
|
+
allowNull: false
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
init() {
|
|
30
|
+
super.init();
|
|
31
|
+
this.model().removeAttribute('id');
|
|
32
|
+
}
|
|
33
|
+
relations() {
|
|
34
|
+
return [
|
|
35
|
+
{
|
|
36
|
+
type: "hasOne",
|
|
37
|
+
foreignKey: "item_name",
|
|
38
|
+
model: base_1.ModelManager.AuthAssignment.model()
|
|
39
|
+
}
|
|
40
|
+
];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.AuthItemChildClass = AuthItemChildClass;
|
|
44
|
+
//# sourceMappingURL=AuthItemChild.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthItemChild.js","sourceRoot":"","sources":["../../rbac/AuthItemChild.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAIH,kCAAiE;AAEjE,MAAa,kBAAmB,SAAQ,YAAK;IAGzC,SAAS;QACL,OAAO,iBAAiB,CAAC;IAC7B,CAAC;IAED,UAAU;QACN,OAAO;YACH,oCAAoC;YACpC,MAAM,EAAE;gBACJ,IAAI,EAAE,gBAAS,CAAC,MAAM;gBACtB,UAAU,EAAC,IAAI;gBACf,SAAS,EAAE,KAAK;aACnB;YACD,KAAK,EAAE;gBACH,IAAI,EAAE,gBAAS,CAAC,MAAM;gBACtB,SAAS,EAAE,KAAK;aACnB;SACJ,CAAA;IACL,CAAC;IAED,IAAI;QACA,KAAK,CAAC,IAAI,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;IACtC,CAAC;IAED,SAAS;QACL,OAAO;YACH;gBACI,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,WAAW;gBACvB,KAAK,EAAE,mBAAY,CAAC,cAAc,CAAC,KAAK,EAAE;aAC7C;SACJ,CAAA;IACL,CAAC;CAEJ;AArCD,gDAqCC"}
|
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.AuthManager = void 0;
|
|
16
|
+
const base_1 = require("../base");
|
|
17
|
+
const index_1 = require("../index");
|
|
18
|
+
const Utils_1 = __importDefault(require("../requiments/Utils"));
|
|
19
|
+
class AuthManager extends base_1.Component {
|
|
20
|
+
constructor() {
|
|
21
|
+
super(...arguments);
|
|
22
|
+
this.checkAccessAssignments = {};
|
|
23
|
+
this.defaultRoles = {};
|
|
24
|
+
}
|
|
25
|
+
init() {
|
|
26
|
+
index_1.BaseChyz.info("Auth Manager init....");
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
*
|
|
30
|
+
*/
|
|
31
|
+
checkAccess(userId, permissionName, params = []) {
|
|
32
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
33
|
+
let assignments;
|
|
34
|
+
if (!this.checkAccessAssignments[userId.toString()]) {
|
|
35
|
+
assignments = yield this.getAssignments(userId);
|
|
36
|
+
this.checkAccessAssignments[userId.toString()] = assignments;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
assignments = this.checkAccessAssignments[userId.toString()];
|
|
40
|
+
}
|
|
41
|
+
// BaseChyz.info("assignments",assignments)
|
|
42
|
+
if (this.hasNoAssignments(assignments)) {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
return yield this.checkAccessRecursive(userId, permissionName, params, assignments);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
checkAccessFromCache() {
|
|
49
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
checkAccessRecursive(user, itemname, params, assignments) {
|
|
53
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
54
|
+
let item = yield this.getItem(itemname);
|
|
55
|
+
if (!item)
|
|
56
|
+
return false;
|
|
57
|
+
/**
|
|
58
|
+
* @todo
|
|
59
|
+
* Rule test edilmeli
|
|
60
|
+
*/
|
|
61
|
+
if (assignments[itemname] || Utils_1.default.find(this.defaultRoles, itemname)) {
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* item child
|
|
66
|
+
*/
|
|
67
|
+
let parents = yield base_1.ModelManager.AuthItemChild.findAll({ attributes: ["parent"], where: { child: itemname } });
|
|
68
|
+
for (const parent of parents) {
|
|
69
|
+
let r = yield this.checkAccessRecursive(user, parent.parent, params, assignments);
|
|
70
|
+
if (r) {
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return false;
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
*
|
|
79
|
+
* @param name
|
|
80
|
+
*/
|
|
81
|
+
getItem(name) {
|
|
82
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
83
|
+
if (!name)
|
|
84
|
+
return null;
|
|
85
|
+
return yield base_1.ModelManager.AuthItem.findOne({ where: { name: name } });
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
getItems(type) {
|
|
89
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
90
|
+
let items = {};
|
|
91
|
+
let _items = yield base_1.ModelManager.AuthItem.findAll({ where: { type: type } });
|
|
92
|
+
if (_items)
|
|
93
|
+
_items.forEach((item) => {
|
|
94
|
+
items[item["name"]] = item.dataValues;
|
|
95
|
+
});
|
|
96
|
+
return items;
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
getRolesByUser(userId) {
|
|
100
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
101
|
+
if (this.isEmptyUserId(userId.toString())) {
|
|
102
|
+
return [];
|
|
103
|
+
}
|
|
104
|
+
let roles = {};
|
|
105
|
+
let items = yield base_1.ModelManager.AuthAssignment.findAll({
|
|
106
|
+
where: {
|
|
107
|
+
user_id: userId.toString(),
|
|
108
|
+
'$AuthItemClasses.type$': AuthManager.TYPE_ROLE
|
|
109
|
+
},
|
|
110
|
+
include: [{
|
|
111
|
+
model: base_1.ModelManager.AuthItem.model()
|
|
112
|
+
}]
|
|
113
|
+
});
|
|
114
|
+
for (const item of items) {
|
|
115
|
+
for (const i of item.AuthItemClasses)
|
|
116
|
+
roles[i["name"]] = i.dataValues;
|
|
117
|
+
}
|
|
118
|
+
return roles;
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
*
|
|
123
|
+
* @param roleName
|
|
124
|
+
*/
|
|
125
|
+
getChildRoles(roleName) {
|
|
126
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
127
|
+
let role = yield this.getRole(roleName);
|
|
128
|
+
if (role === null) {
|
|
129
|
+
throw new index_1.InvalidArgumentException(`Role "${roleName}" not found.`);
|
|
130
|
+
}
|
|
131
|
+
const result = { result: {} };
|
|
132
|
+
yield this.getChildrenRecursive(roleName, yield this.getChildrenList(), result);
|
|
133
|
+
let roles = {};
|
|
134
|
+
roles[roleName] = role;
|
|
135
|
+
let _roles = yield this.getRoles();
|
|
136
|
+
let _r = {};
|
|
137
|
+
Utils_1.default.forEach(_roles, (item) => {
|
|
138
|
+
if (result.result[item.name])
|
|
139
|
+
_r[item.name] = item;
|
|
140
|
+
});
|
|
141
|
+
return Utils_1.default.merge(roles, _r);
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
*
|
|
146
|
+
* @param roleName
|
|
147
|
+
*/
|
|
148
|
+
getPermissionsByRole(roleName) {
|
|
149
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
150
|
+
let childrenList = this.getChildrenList();
|
|
151
|
+
const result = { result: {} };
|
|
152
|
+
let permissions = {};
|
|
153
|
+
yield this.getChildrenRecursive(roleName, childrenList, result);
|
|
154
|
+
if (Utils_1.default.isEmpty(result.result)) {
|
|
155
|
+
return {};
|
|
156
|
+
}
|
|
157
|
+
let itemResult = yield base_1.ModelManager.AuthItem.findAll({
|
|
158
|
+
where: {
|
|
159
|
+
type: AuthManager.TYPE_PERMISSION,
|
|
160
|
+
name: Object.keys(result.result)
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
for (const itemElement of itemResult) {
|
|
164
|
+
permissions[itemElement["name"]] = itemElement.dataValues;
|
|
165
|
+
}
|
|
166
|
+
return permissions;
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
*
|
|
171
|
+
* @param userId
|
|
172
|
+
*/
|
|
173
|
+
getPermissionsByUser(userId) {
|
|
174
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
175
|
+
if (this.isEmptyUserId(userId.toString())) {
|
|
176
|
+
return {};
|
|
177
|
+
}
|
|
178
|
+
let directPermission = yield this.getDirectPermissionsByUser(userId);
|
|
179
|
+
let inheritedPermission = yield this.getInheritedPermissionsByUser(userId);
|
|
180
|
+
return Utils_1.default.merge(directPermission, inheritedPermission);
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Returns all permissions that are directly assigned to user.
|
|
185
|
+
* @return Permission[] all direct permissions that the user has. The array is indexed by the permission names.
|
|
186
|
+
*/
|
|
187
|
+
getDirectPermissionsByUser(userId) {
|
|
188
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
189
|
+
let permissions = {};
|
|
190
|
+
let result = yield base_1.ModelManager.AuthAssignment.findAll({
|
|
191
|
+
where: {
|
|
192
|
+
user_id: userId.toString(),
|
|
193
|
+
'$AuthItemClasses.type$': AuthManager.TYPE_PERMISSION
|
|
194
|
+
},
|
|
195
|
+
include: [
|
|
196
|
+
{
|
|
197
|
+
model: base_1.ModelManager.AuthItem.model()
|
|
198
|
+
}
|
|
199
|
+
]
|
|
200
|
+
});
|
|
201
|
+
for (const resultElement of result) {
|
|
202
|
+
for (const i of resultElement.AuthItemClasses)
|
|
203
|
+
permissions[i["name"]] = i.dataValues;
|
|
204
|
+
}
|
|
205
|
+
return permissions;
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
getInheritedPermissionsByUser(userId) {
|
|
209
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
210
|
+
let userAssignment = yield base_1.ModelManager.AuthAssignment.findAll({ where: { user_id: userId.toString() }, attributes: ["item_name"] });
|
|
211
|
+
let childrenList = yield this.getChildrenList();
|
|
212
|
+
const result = { result: {} };
|
|
213
|
+
let permissions = {};
|
|
214
|
+
for (const userAssignmentElement of userAssignment) {
|
|
215
|
+
this.getChildrenRecursive(userAssignmentElement.item_name, childrenList, result);
|
|
216
|
+
}
|
|
217
|
+
if (Utils_1.default.isEmpty(result.result)) {
|
|
218
|
+
return {};
|
|
219
|
+
}
|
|
220
|
+
let itemResult = yield base_1.ModelManager.AuthItem.findAll({
|
|
221
|
+
where: {
|
|
222
|
+
type: AuthManager.TYPE_PERMISSION,
|
|
223
|
+
name: Object.keys(result.result)
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
for (const itemElement of itemResult) {
|
|
227
|
+
permissions[itemElement["name"]] = itemElement.dataValues;
|
|
228
|
+
}
|
|
229
|
+
return permissions;
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
*
|
|
234
|
+
* @param userId
|
|
235
|
+
*/
|
|
236
|
+
getItemsByUser(userId) {
|
|
237
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
238
|
+
let items = yield base_1.ModelManager.AuthAssignment.findAll({
|
|
239
|
+
where: {
|
|
240
|
+
user_id: userId.toString()
|
|
241
|
+
},
|
|
242
|
+
include: [{
|
|
243
|
+
model: base_1.ModelManager.AuthItem.model()
|
|
244
|
+
}]
|
|
245
|
+
});
|
|
246
|
+
return items;
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Returns all role assignment information for the specified role.
|
|
251
|
+
* @param $roleName
|
|
252
|
+
*/
|
|
253
|
+
getUserIdsByRole(roleName) {
|
|
254
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
255
|
+
if (!roleName)
|
|
256
|
+
return [];
|
|
257
|
+
return yield base_1.ModelManager.AuthAssignment.findAll({ where: { "item_name": roleName }, attributes: ["user_id"] });
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* {@inheritdoc}
|
|
262
|
+
*/
|
|
263
|
+
getRole(name) {
|
|
264
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
265
|
+
let item = yield this.getItem(name);
|
|
266
|
+
return item && item.type == AuthManager.TYPE_ROLE ? item : null;
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* {@inheritdoc}
|
|
271
|
+
*/
|
|
272
|
+
getRoles() {
|
|
273
|
+
return this.getItems(AuthManager.TYPE_ROLE);
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Recursively finds all children and grand children of the specified item.
|
|
277
|
+
* @param string $name the name of the item whose children are to be looked for.
|
|
278
|
+
* @param array $childrenList the child list built via [[getChildrenList()]]
|
|
279
|
+
* @param array $result the children and grand children (in array keys)
|
|
280
|
+
*/
|
|
281
|
+
getChildrenRecursive(name, childrenList, model) {
|
|
282
|
+
if (childrenList[name]) {
|
|
283
|
+
for (const child of childrenList[name]) {
|
|
284
|
+
model.result[child] = true;
|
|
285
|
+
this.getChildrenRecursive(child, childrenList, model);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
*
|
|
291
|
+
* @param roleName
|
|
292
|
+
* @param userId
|
|
293
|
+
*/
|
|
294
|
+
getAssignment(roleName, userId) {
|
|
295
|
+
if (this.isEmptyUserId(userId)) {
|
|
296
|
+
return [];
|
|
297
|
+
}
|
|
298
|
+
return base_1.ModelManager.AuthAssignment.findAll({ where: { user_id: userId, items_name: roleName } });
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
*
|
|
302
|
+
*/
|
|
303
|
+
getAssignments(userId) {
|
|
304
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
305
|
+
if (this.isEmptyUserId(userId.toString())) {
|
|
306
|
+
return {};
|
|
307
|
+
}
|
|
308
|
+
let assignments = {};
|
|
309
|
+
try {
|
|
310
|
+
let as = yield base_1.ModelManager.AuthAssignment.findAll({ where: { user_id: userId.toString() } });
|
|
311
|
+
for (const a of as) {
|
|
312
|
+
assignments[a["item_name"]] = a;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
catch (e) {
|
|
316
|
+
throw new base_1.InvalidConfigException('The user application component must be available to specify roles in AccessRule.');
|
|
317
|
+
}
|
|
318
|
+
return assignments;
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Returns the children for every parent.
|
|
323
|
+
* @return array the children list. Each array key is a parent item name,
|
|
324
|
+
* and the corresponding array value is a list of child item names.
|
|
325
|
+
*/
|
|
326
|
+
getChildrenList() {
|
|
327
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
328
|
+
let items = yield base_1.ModelManager.AuthItemChild.findAll();
|
|
329
|
+
let parents = {};
|
|
330
|
+
for (const item of items) {
|
|
331
|
+
parents[item["parent"]] = Utils_1.default.concat(parents[item["parent"]] || [], [item["child"]]);
|
|
332
|
+
}
|
|
333
|
+
return parents;
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Check whether $userId is empty.
|
|
338
|
+
* @param mixed $userId
|
|
339
|
+
* @return bool
|
|
340
|
+
* @since 2.0.26
|
|
341
|
+
*/
|
|
342
|
+
isEmptyUserId(userId) {
|
|
343
|
+
return !userId || userId === '';
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Checks whether array of $assignments is empty and [[defaultRoles]] property is empty as well.
|
|
347
|
+
*
|
|
348
|
+
* @param Assignment[] $assignments array of user's assignments
|
|
349
|
+
* @return bool whether array of $assignments is empty and [[defaultRoles]] property is empty as well
|
|
350
|
+
* @since 2.0.11
|
|
351
|
+
*/
|
|
352
|
+
hasNoAssignments(assignments) {
|
|
353
|
+
return Utils_1.default.isEmpty(assignments) && Utils_1.default.isEmpty(this.defaultRoles);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
exports.AuthManager = AuthManager;
|
|
357
|
+
AuthManager.TYPE_ROLE = 1;
|
|
358
|
+
AuthManager.TYPE_PERMISSION = 2;
|
|
359
|
+
//# sourceMappingURL=AuthManager.js.map
|