chyz 1.0.12-rc.7 → 1.0.13-rc.2
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 +76 -14
- package/Chyz.ts +0 -3
- package/Examples/Controllers/ApiController.ts +88 -30
- package/Examples/Controllers/KeyCloakController.ts +100 -0
- package/Examples/Controllers/PublicController.ts +5 -7
- package/Examples/Controllers/SiteController.ts +82 -32
- package/Examples/Models/Categories.ts +36 -0
- package/Examples/Models/Customer.ts +115 -0
- package/Examples/Models/KeycloakUser.ts +66 -0
- package/Examples/Models/Order.ts +64 -0
- package/Examples/Models/OrderItem.ts +27 -0
- package/Examples/Models/ProductModels.ts +50 -0
- package/Examples/Models/ProductToCategories.ts +35 -0
- package/Examples/Models/Products.ts +49 -0
- package/Examples/Models/Stocks.ts +60 -0
- package/Examples/Models/User.ts +66 -35
- package/Examples/Models/UserPermission.ts +37 -0
- package/Examples/index-keycloack.ts +78 -0
- package/Examples/index.ts +16 -15
- package/Examples/keycloak.json +7 -0
- package/Examples/log/app.log +903 -1034
- package/Examples/log/errors.log +79 -256
- package/Examples/package.json +46 -44
- package/Examples/tsconfig.json +1 -1
- package/Examples/yarn.lock +2549 -0
- package/README.md +118 -16
- package/base/ActionFilter.ts +2 -2
- package/base/BaseError.ts +2 -2
- package/base/DataErrorDbException.ts +1 -1
- package/base/DbConnection.ts +8 -2
- package/base/ForbiddenHttpException.ts +1 -1
- package/base/InvalidConfigException.ts +1 -1
- package/base/Model.ts +204 -15
- package/base/NotFoundHttpException.ts +1 -1
- package/base/RestClient.ts +28 -0
- package/base/UnauthorizedHttpException.ts +2 -1
- package/base/ValidationHttpException.ts +14 -0
- package/base/db/Exception.ts +14 -0
- package/base/index.ts +2 -0
- package/dist/BaseChyz.js +72 -25
- package/dist/BaseChyz.js.map +1 -1
- package/dist/Chyz.js.map +1 -1
- package/dist/base/ActionFilter.js +2 -2
- package/dist/base/ActionFilter.js.map +1 -1
- package/dist/base/BaseError.js +2 -2
- package/dist/base/BaseError.js.map +1 -1
- package/dist/base/DataErrorDbException.js +1 -1
- package/dist/base/DataErrorDbException.js.map +1 -1
- package/dist/base/DbConnection.js +9 -2
- package/dist/base/DbConnection.js.map +1 -1
- package/dist/base/ForbiddenHttpException.js +1 -1
- package/dist/base/ForbiddenHttpException.js.map +1 -1
- package/dist/base/InvalidConfigException.js +1 -1
- package/dist/base/InvalidConfigException.js.map +1 -1
- package/dist/base/Model.js +181 -13
- package/dist/base/Model.js.map +1 -1
- package/dist/base/NotFoundHttpException.js +1 -1
- package/dist/base/NotFoundHttpException.js.map +1 -1
- package/dist/base/RestClient.js +27 -0
- package/dist/base/RestClient.js.map +1 -0
- package/dist/base/UnauthorizedHttpException.js +1 -1
- package/dist/base/UnauthorizedHttpException.js.map +1 -1
- package/dist/base/ValidationHttpException.js +18 -0
- package/dist/base/ValidationHttpException.js.map +1 -0
- package/dist/base/db/Exception.js +16 -0
- package/dist/base/db/Exception.js.map +1 -0
- package/dist/base/index.js +2 -0
- package/dist/base/index.js.map +1 -1
- package/dist/filters/AccessControl.js +2 -2
- package/dist/filters/AccessControl.js.map +1 -1
- package/dist/filters/AccessRule.js.map +1 -1
- package/dist/filters/auth/AuthMethod.js +2 -2
- package/dist/filters/auth/AuthMethod.js.map +1 -1
- package/dist/filters/auth/HttpHeaderAuth.js.map +1 -1
- package/dist/filters/auth/JwtHttpBearerAuth.js +1 -0
- package/dist/filters/auth/JwtHttpBearerAuth.js.map +1 -1
- package/dist/filters/auth/KeyCloakHttpBearerAuth.js +117 -0
- package/dist/filters/auth/KeyCloakHttpBearerAuth.js.map +1 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/web/{User.js → WebUser.js} +12 -7
- package/dist/web/WebUser.js.map +1 -0
- package/filters/AccessControl.ts +3 -3
- package/filters/AccessRule.ts +2 -2
- package/filters/auth/AuthMethod.ts +4 -4
- package/filters/auth/HttpHeaderAuth.ts +2 -2
- package/filters/auth/JwtHttpBearerAuth.ts +4 -5
- package/filters/auth/KeyCloakHttpBearerAuth.ts +115 -0
- package/index.ts +14 -0
- package/package.json +55 -52
- package/web/{User.ts → WebUser.ts} +10 -6
- package/.idea/Chy-Nodejs-Framework.iml +0 -12
- package/.idea/jsLibraryMappings.xml +0 -6
- package/.idea/modules.xml +0 -8
- package/.idea/vcs.xml +0 -6
- package/dist/web/User.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotFoundHttpException.js","sourceRoot":"","sources":["../../base/NotFoundHttpException.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,2CAAsC;AAEtC,MAAa,qBAAsB,SAAQ,qBAAS;IAChD,YAAqB,OAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"NotFoundHttpException.js","sourceRoot":"","sources":["../../base/NotFoundHttpException.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,2CAAsC;AAEtC,MAAa,qBAAsB,SAAQ,qBAAS;IAChD,YAAqB,OAAe;QAChC,KAAK,CAAC,OAAO,EAAC,GAAG,CAAC,CAAC;QADF,YAAO,GAAP,OAAO,CAAQ;IAEpC,CAAC;CACJ;AAJD,sDAIC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2021.. Chy Bilgisayar Bilisim
|
|
5
|
+
* Author: Cihan Ozturk
|
|
6
|
+
* E-mail: cihan@chy.com.tr
|
|
7
|
+
* Github:https://github.com/cihan53/
|
|
8
|
+
*
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.RestClient = void 0;
|
|
12
|
+
const Component_1 = require("./Component");
|
|
13
|
+
const axios = require('axios');
|
|
14
|
+
class RestClient extends Component_1.Component {
|
|
15
|
+
post(url, args) {
|
|
16
|
+
return axios.post(url, args);
|
|
17
|
+
}
|
|
18
|
+
get(url, args) {
|
|
19
|
+
return axios.post(url, args);
|
|
20
|
+
}
|
|
21
|
+
Rest(params) {
|
|
22
|
+
return axios(params);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.RestClient = RestClient;
|
|
26
|
+
exports.default = new RestClient();
|
|
27
|
+
//# sourceMappingURL=RestClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RestClient.js","sourceRoot":"","sources":["../../base/RestClient.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAGH,2CAAsC;AAEtC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;AAE9B,MAAa,UAAW,SAAQ,qBAAS;IAC9B,IAAI,CAAC,GAAW,EAAE,IAAW;QAChC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAChC,CAAC;IAEM,GAAG,CAAC,GAAW,EAAE,IAAW;QAC/B,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAChC,CAAC;IAEM,IAAI,CAAC,MAAW;QACnB,OAAO,KAAK,CAAC,MAAM,CAAC,CAAA;IACxB,CAAC;CACJ;AAZD,gCAYC;AACD,kBAAe,IAAI,UAAU,EAAE,CAAC"}
|
|
@@ -10,7 +10,7 @@ exports.UnauthorizedHttpException = void 0;
|
|
|
10
10
|
const BaseError_1 = require("./BaseError");
|
|
11
11
|
class UnauthorizedHttpException extends BaseError_1.BaseError {
|
|
12
12
|
constructor(message) {
|
|
13
|
-
super(message);
|
|
13
|
+
super(message, 401);
|
|
14
14
|
this.message = message;
|
|
15
15
|
}
|
|
16
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UnauthorizedHttpException.js","sourceRoot":"","sources":["../../base/UnauthorizedHttpException.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,2CAAsC;AAEtC,MAAa,yBAA0B,SAAQ,qBAAS;IACpD,YAAqB,OAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"UnauthorizedHttpException.js","sourceRoot":"","sources":["../../base/UnauthorizedHttpException.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,2CAAsC;AAEtC,MAAa,yBAA0B,SAAQ,qBAAS;IACpD,YAAqB,OAAe;QAChC,KAAK,CAAC,OAAO,EAAC,GAAG,CAAC,CAAC;QADF,YAAO,GAAP,OAAO,CAAQ;IAEpC,CAAC;CAEJ;AALD,8DAKC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
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.ValidationHttpException = void 0;
|
|
10
|
+
const BaseError_1 = require("./BaseError");
|
|
11
|
+
class ValidationHttpException extends BaseError_1.BaseError {
|
|
12
|
+
constructor(message) {
|
|
13
|
+
super(message, 401);
|
|
14
|
+
this.message = message;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.ValidationHttpException = ValidationHttpException;
|
|
18
|
+
//# sourceMappingURL=ValidationHttpException.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ValidationHttpException.js","sourceRoot":"","sources":["../../base/ValidationHttpException.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,2CAAsC;AAEtC,MAAa,uBAAwB,SAAQ,qBAAS;IAClD,YAAqB,OAAe;QAChC,KAAK,CAAC,OAAO,EAAC,GAAG,CAAC,CAAC;QADF,YAAO,GAAP,OAAO,CAAQ;IAEpC,CAAC;CACJ;AAJD,0DAIC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Exception = void 0;
|
|
4
|
+
const BaseError_1 = require("../BaseError");
|
|
5
|
+
class Exception extends BaseError_1.BaseError {
|
|
6
|
+
constructor(message, errorInfo = [], code = '', previous = null) {
|
|
7
|
+
super(message);
|
|
8
|
+
this.errorInfo = [];
|
|
9
|
+
this.errorInfo = errorInfo;
|
|
10
|
+
this.name = 'Database Exception'; // good practice
|
|
11
|
+
this.code = code; // error code for responding to client
|
|
12
|
+
Error.captureStackTrace(this);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.Exception = Exception;
|
|
16
|
+
//# sourceMappingURL=Exception.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Exception.js","sourceRoot":"","sources":["../../../base/db/Exception.ts"],"names":[],"mappings":";;;AAAA,4CAAuC;AAEvC,MAAa,SAAU,SAAQ,qBAAS;IAIpC,YAAY,OAAe,EAAE,YAAgB,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,QAAQ,GAAG,IAAI;QACvE,KAAK,CAAC,OAAO,CAAC,CAAC;QAJZ,cAAS,GAAG,EAAE,CAAC;QAKlB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAA,CAAC,gBAAgB;QACjD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA,CAAC,sCAAsC;QACvD,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;IACjC,CAAC;CACJ;AAXD,8BAWC"}
|
package/dist/base/index.js
CHANGED
|
@@ -23,5 +23,7 @@ __exportStar(require("./InvalidConfigException"), exports);
|
|
|
23
23
|
__exportStar(require("./NotFoundHttpException"), exports);
|
|
24
24
|
__exportStar(require("./UnauthorizedHttpException"), exports);
|
|
25
25
|
__exportStar(require("./DataErrorDbException"), exports);
|
|
26
|
+
__exportStar(require("./ValidationHttpException"), exports);
|
|
26
27
|
__exportStar(require("./Model"), exports);
|
|
28
|
+
__exportStar(require("./RestClient"), exports);
|
|
27
29
|
//# sourceMappingURL=index.js.map
|
package/dist/base/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../base/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iDAA8B;AAC9B,+CAA4B;AAC5B,8CAA2B;AAC3B,6CAA0B;AAC1B,8CAA2B;AAC3B,iDAA8B;AAC9B,+CAA4B;AAC5B,iDAA8B;AAC9B,2DAAwC;AACxC,2DAAwC;AACxC,0DAAuC;AACvC,8DAA2C;AAC3C,yDAAsC;AACtC,0CAAuB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../base/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iDAA8B;AAC9B,+CAA4B;AAC5B,8CAA2B;AAC3B,6CAA0B;AAC1B,8CAA2B;AAC3B,iDAA8B;AAC9B,+CAA4B;AAC5B,iDAA8B;AAC9B,2DAAwC;AACxC,2DAAwC;AACxC,0DAAuC;AACvC,8DAA2C;AAC3C,yDAAsC;AACtC,4DAAyC;AACzC,0CAAuB;AACvB,+CAA4B"}
|
|
@@ -23,7 +23,7 @@ const BaseChyz_1 = __importDefault(require("../BaseChyz"));
|
|
|
23
23
|
const ForbiddenHttpException_1 = require("../base/ForbiddenHttpException");
|
|
24
24
|
const ActionFilter_1 = require("../base/ActionFilter");
|
|
25
25
|
const AccessRule_1 = require("./AccessRule");
|
|
26
|
-
const
|
|
26
|
+
const WebUser_1 = require("../web/WebUser");
|
|
27
27
|
const Utils_1 = __importDefault(require("../requiments/Utils"));
|
|
28
28
|
var _ = require('lodash');
|
|
29
29
|
class AccessControl extends ActionFilter_1.ActionFilter {
|
|
@@ -35,7 +35,7 @@ class AccessControl extends ActionFilter_1.ActionFilter {
|
|
|
35
35
|
var _a;
|
|
36
36
|
super.init();
|
|
37
37
|
if (this.user == undefined) {
|
|
38
|
-
this.user = (_a = Utils_1.default.cloneDeep(BaseChyz_1.default.getComponent("user"))) !== null && _a !== void 0 ? _a : new
|
|
38
|
+
this.user = (_a = Utils_1.default.cloneDeep(BaseChyz_1.default.getComponent("user"))) !== null && _a !== void 0 ? _a : new WebUser_1.WebUser();
|
|
39
39
|
}
|
|
40
40
|
this.rules.forEach((rule, index) => {
|
|
41
41
|
if (rule === Object(rule)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessControl.js","sourceRoot":"","sources":["../../filters/AccessControl.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA;;;;;GAKG;AACH,2DAAmC;AACnC,2EAAsE;AACtE,uDAAkD;AAClD,6CAAwC;AACxC,
|
|
1
|
+
{"version":3,"file":"AccessControl.js","sourceRoot":"","sources":["../../filters/AccessControl.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA;;;;;GAKG;AACH,2DAAmC;AACnC,2EAAsE;AACtE,uDAAkD;AAClD,6CAAwC;AACxC,4CAAuC;AACvC,gEAAwC;AAGxC,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAG1B,MAAa,aAAc,SAAQ,2BAAY;IAA/C;;QAEW,SAAI,GAAQ,IAAI,CAAC;IA4C5B,CAAC;IAzCU,IAAI;;QACP,KAAK,CAAC,IAAI,EAAE,CAAA;QAEZ,IAAI,IAAI,CAAC,IAAI,IAAI,SAAS,EAAE;YACxB,IAAI,CAAC,IAAI,GAAG,MAAA,eAAK,CAAC,SAAS,CAAC,kBAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,mCAAI,IAAI,iBAAO,EAAE,CAAC;SAC/E;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAQ,EAAE,KAAY,EAAE,EAAE;YAC1C,IAAI,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE;gBACvB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,eAAK,CAAC,YAAY,CAAC,IAAI,uBAAU,EAAE,EAAE,IAAI,CAAC,CAAC;aAClE;QACL,CAAC,CAAC,CAAA;IACN,CAAC;IAGY,YAAY,CAAC,MAAU,EAAE,OAAe;;;YACjD,IAAI,KAAK,CAAC;YACV,aAAa;YACb,IAAI,IAAI,GAAG,MAAA,OAAO,CAAC,IAAI,mCAAI,IAAI,CAAC,IAAI,CAAC;YACrC,aAAa;YACb,IAAI,CAAC,QAAQ,GAAG,MAAA,OAAO,CAAC,QAAQ,mCAAI,IAAI,CAAC;YAEzC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE;gBAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE;oBAC9D,OAAO,IAAI,CAAC;iBACf;qBAAM,IAAI,KAAK,KAAK,KAAK,EAAE;oBACxB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;oBAEtB,OAAO,KAAK,CAAC;iBAChB;aACJ;YACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACtB,OAAO,KAAK,CAAC;;KAChB;IAEM,UAAU,CAAC,IAAa;QAC3B,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACxC,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB;;YAAM,MAAM,IAAI,+CAAsB,CAAC,kBAAQ,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC;IACvG,CAAC;CAEJ;AA9CD,sCA8CC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessRule.js","sourceRoot":"","sources":["../../filters/AccessRule.ts"],"names":[],"mappings":";;;AAQA,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC1B,iDAA4C;AAC5C,2EAAsE;AAGtE,MAAa,UAAW,SAAQ,qBAAS;IAwC9B,MAAM,CAAC,MAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"AccessRule.js","sourceRoot":"","sources":["../../filters/AccessRule.ts"],"names":[],"mappings":";;;AAQA,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC1B,iDAA4C;AAC5C,2EAAsE;AAGtE,MAAa,UAAW,SAAQ,qBAAS;IAwC9B,MAAM,CAAC,MAAU,EAAE,IAAY,EAAE,OAAe;QACnD,IACI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;eACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EACzB;YACE,OAAO,IAAI,CAAC,KAAK,CAAA;SACpB;QACD,oCAAoC;QACpC,mCAAmC;QACnC,yCAAyC;QACzC,2CAA2C;QAC3C,+CAA+C;QAC/C,+BAA+B;QAC/B,MAAM;QACN,0CAA0C;QAC1C,IAAI;QAEJ,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;OAGG;IACO,WAAW,CAAC,MAAU;QAC5B,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC;IAED;;;OAGG;IACO,eAAe,CAAC,UAAc;QACpC,uCAAuC;QACvC,uBAAuB;QACvB,QAAQ;QACR,EAAE;QACF,wCAAwC;QACxC,iDAAiD;QACjD,wDAAwD;QACxD,uBAAuB;QACvB,QAAQ;QACR,IAAI;QAEJ,OAAO,KAAK,CAAC;IACjB,CAAC;IAES,SAAS,CAAC,IAAQ;QACxB,IAAI,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAEpD,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YAC9B,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;SAC5C;QAED,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAClB,OAAO,IAAI,CAAC;SACf;QAGD,IAAI,IAAI,KAAK,KAAK,EAAE;YAChB,MAAM,IAAI,+CAAsB,CAAC,kFAAkF,CAAC,CAAC;SACxH;QAED,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE;YAC1B,IAAI,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC3B,IAAI,IAAI,KAAK,GAAG,EAAE;gBACd,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;oBACnB,OAAO,IAAI,CAAC;iBACf;aACJ;iBAAM,IAAI,IAAI,KAAK,GAAG,EAAE;gBACrB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;oBACpB,OAAO,IAAI,CAAC;iBACf;aACJ;iBAAM;gBACH,YAAY;aACf;SACJ;QAGD,OAAO,KAAK,CAAC;IACjB,CAAC;CAGJ;AA3HD,gCA2HC"}
|
|
@@ -18,7 +18,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
18
18
|
exports.AuthMethod = void 0;
|
|
19
19
|
const ActionFilter_1 = require("../../base/ActionFilter");
|
|
20
20
|
const UnauthorizedHttpException_1 = require("../../base/UnauthorizedHttpException");
|
|
21
|
-
const
|
|
21
|
+
const WebUser_1 = require("../../web/WebUser");
|
|
22
22
|
class AuthMethod extends ActionFilter_1.ActionFilter {
|
|
23
23
|
constructor() {
|
|
24
24
|
super(...arguments);
|
|
@@ -27,7 +27,7 @@ class AuthMethod extends ActionFilter_1.ActionFilter {
|
|
|
27
27
|
beforeAction(action, request, response) {
|
|
28
28
|
var _a;
|
|
29
29
|
return __awaiter(this, void 0, void 0, function* () {
|
|
30
|
-
let identity = yield this.authenticate((_a = this.user) !== null && _a !== void 0 ? _a : new
|
|
30
|
+
let identity = yield this.authenticate((_a = this.user) !== null && _a !== void 0 ? _a : new WebUser_1.WebUser(), request, response);
|
|
31
31
|
// @ts-ignore
|
|
32
32
|
request.identity = identity;
|
|
33
33
|
if (identity !== null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthMethod.js","sourceRoot":"","sources":["../../../filters/auth/AuthMethod.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;AAEH,0DAAqD;AAErD,oFAA+E;AAC/E
|
|
1
|
+
{"version":3,"file":"AuthMethod.js","sourceRoot":"","sources":["../../../filters/auth/AuthMethod.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;AAEH,0DAAqD;AAErD,oFAA+E;AAC/E,+CAA0C;AAG1C,MAAsB,UAAW,SAAQ,2BAAY;IAArD;;QAkBW,aAAQ,GAAG,EAAE,CAAC;IAwDzB,CAAC;IAtDgB,YAAY,CAAC,MAAW,EAAE,OAAgB,EAAE,QAAkB;;;YACvE,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAClC,MAAA,IAAI,CAAC,IAAI,mCAAI,IAAI,iBAAO,EAAE,EAC1B,OAAO,EACP,QAAQ,CACX,CAAA;YAGD,aAAa;YACb,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAE5B,IAAI,QAAQ,KAAK,IAAI,EAAE;gBACnB,OAAO,IAAI,CAAC;aACf;YAED,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACzB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC7B,OAAO,KAAK,CAAC;;KAChB;IAED,YAAY,CAAC,IAAa,EAAE,OAAgB,EAAE,QAAkB;IAEhE,CAAC;IAED,aAAa;IACb,SAAS,CAAC,QAAkB;IAC5B,CAAC;IAED,aAAa;IACb,aAAa,CAAC,QAAkB;QAC5B,MAAM,IAAI,qDAAyB,CAAC,iDAAiD,CAAC,CAAC;IAC3F,CAAC;IAED,cAAc,CAAC,OAAY,EAAE,OAAY;QACrC,IAAI,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;QACvF,IAAI,GAAG,EAAE;YACL,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;SACvB;QAED,OAAO,IAAI,CAAA;IACf,CAAC;IAED,YAAY,CAAC,UAAc,EAAE,OAAc;QACvC,IAAI,OAAO,EAAE;YACT,IAAI,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YACvC,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/B,OAAO,OAAO,CAAC;aAClB;iBAAM;gBACH,OAAO,IAAI,CAAA;aACd;SACJ;QAED,OAAO,IAAI,CAAA;IACf,CAAC;CACJ;AA1ED,gCA0EC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpHeaderAuth.js","sourceRoot":"","sources":["../../../filters/auth/HttpHeaderAuth.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;AAEH,6CAAwC;AAExC,mEAA2C;AAG3C,MAAa,cAAe,SAAQ,uBAAU;IAA9C;;QACI;;WAEG;QACI,WAAM,GAAG,WAAW,CAAC;IAoChC,CAAC;IA1BS,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"HttpHeaderAuth.js","sourceRoot":"","sources":["../../../filters/auth/HttpHeaderAuth.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;AAEH,6CAAwC;AAExC,mEAA2C;AAG3C,MAAa,cAAe,SAAQ,uBAAU;IAA9C;;QACI;;WAEG;QACI,WAAM,GAAG,WAAW,CAAC;IAoChC,CAAC;IA1BS,YAAY,CAAC,IAAa,EAAE,OAAe,EAAE,QAAiB;;YAChE,IAAI,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;YACnG,IAAI,GAAG,EAAE;gBACL,IAAI,UAAU,GAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC1C,IAAI,CAAC,eAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;oBAC5B,IAAI,IAAI,CAAC,OAAO,EAAE;wBACd,YAAY;wBACZ,IAAI,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;wBAC5C,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;4BAC/B,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;yBAC3B;6BAAM;4BACH,OAAO,IAAI,CAAC;yBACf;qBACJ;oBAED,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;oBAC3E,IAAI,QAAQ,KAAK,IAAI,EAAE;wBACnB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;wBACzB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;qBAChC;oBAED,OAAO,QAAQ,CAAC;iBACnB;aACJ;YACD,OAAO,IAAI,CAAC;QAChB,CAAC;KAAA;CACJ;AAxCD,wCAwCC"}
|
|
@@ -50,6 +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
|
+
BaseChyz_1.default.debug("JSON Web Token.", autHeader);
|
|
53
54
|
let identity = null;
|
|
54
55
|
let token = null;
|
|
55
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;
|
|
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,kBAAQ,CAAC,KAAK,CAAC,iBAAiB,EAAC,SAAS,CAAC,CAAC;YAC5C,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"}
|
|
@@ -0,0 +1,117 @@
|
|
|
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.KeyCloakHttpBearerAuth = void 0;
|
|
16
|
+
/*
|
|
17
|
+
* Copyright (c) 2021. Chy Bilgisayar Bilisim
|
|
18
|
+
* Author: Cihan Ozturk
|
|
19
|
+
* E-mail: cihan@chy.com.tr
|
|
20
|
+
* Github:https://github.com/cihan53/
|
|
21
|
+
*/
|
|
22
|
+
const BaseChyz_1 = __importDefault(require("../../BaseChyz"));
|
|
23
|
+
const HttpBearerAuth_1 = require("./HttpBearerAuth");
|
|
24
|
+
const InvalidConfigException_1 = require("../../base/InvalidConfigException");
|
|
25
|
+
const JsonWebToken = require("jsonwebtoken");
|
|
26
|
+
class KeyCloakHttpBearerAuth extends HttpBearerAuth_1.HttpBearerAuth {
|
|
27
|
+
constructor() {
|
|
28
|
+
super(...arguments);
|
|
29
|
+
/**
|
|
30
|
+
* @var string|array<string, mixed>|Jwt application component ID of the JWT handler, configuration array, or JWT handler object
|
|
31
|
+
* itself. By default it's assumes that component of ID "jwt" has been configured.
|
|
32
|
+
*/
|
|
33
|
+
this.jwt = 'jwt';
|
|
34
|
+
this.auth = null;
|
|
35
|
+
this.keycloak = null;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* @throws InvalidConfigException
|
|
39
|
+
*/
|
|
40
|
+
init() {
|
|
41
|
+
var _a, _b;
|
|
42
|
+
super.init();
|
|
43
|
+
if (!this.pattern) {
|
|
44
|
+
throw new InvalidConfigException_1.InvalidConfigException('You must provide pattern to use to extract the HTTP authentication value!');
|
|
45
|
+
}
|
|
46
|
+
this.keycloak = (_a = BaseChyz_1.default.getMiddlewares("keycloak").keycloak) !== null && _a !== void 0 ? _a : null;
|
|
47
|
+
this.user = (_b = BaseChyz_1.default.getComponent("user")) !== null && _b !== void 0 ? _b : null;
|
|
48
|
+
this.auth = this.KeyCloakCheck;
|
|
49
|
+
}
|
|
50
|
+
KeyCloakCheck(token, request, response) {
|
|
51
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
52
|
+
if (this.keycloak == null)
|
|
53
|
+
return false;
|
|
54
|
+
// return await this.keycloak.protect('realm:user')(request, response, () => true /*next*/)
|
|
55
|
+
return yield this.keycloak.protect()(request, response, () => true /*next*/);
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
authenticate(user, request, response) {
|
|
59
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
60
|
+
let identity = null;
|
|
61
|
+
let token = null;
|
|
62
|
+
let autHeader = this.getHeaderByKey(request.headers, this.header);
|
|
63
|
+
if (autHeader == null || (autHeader = this.patternCheck(autHeader, this.pattern)) == null) {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
token = JsonWebToken.decode(autHeader[1], { complete: true });
|
|
67
|
+
if (!token) {
|
|
68
|
+
BaseChyz_1.default.warning("Your request was made with invalid or expired JSON Web Token.");
|
|
69
|
+
this.fail(response);
|
|
70
|
+
}
|
|
71
|
+
if (token !== null) {
|
|
72
|
+
identity = yield this.KeyCloakCheck(autHeader[1], request, response);
|
|
73
|
+
BaseChyz_1.default.debug("KeyCloakCheck Result:", identity);
|
|
74
|
+
}
|
|
75
|
+
if (identity == null || identity == false)
|
|
76
|
+
this.fail(response);
|
|
77
|
+
return identity;
|
|
78
|
+
/* let autHeader = this.getHeaderByKey(request.headers, this.header)
|
|
79
|
+
if (autHeader == null || (autHeader = this.patternCheck(autHeader, this.pattern)) == null) {
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
BaseChyz.debug("JSON Web Token.",autHeader);
|
|
84
|
+
let identity = null;
|
|
85
|
+
let token = null;
|
|
86
|
+
|
|
87
|
+
token = JsonWebToken.decode(autHeader[1], {complete: true})
|
|
88
|
+
if (!token) {
|
|
89
|
+
BaseChyz.warning("Your request was made with invalid or expired JSON Web Token.");
|
|
90
|
+
this.fail(response);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
if (token !== null) {
|
|
94
|
+
if (this.auth != null) {
|
|
95
|
+
identity = await this.auth(autHeader[1])
|
|
96
|
+
} else {
|
|
97
|
+
identity = await user.loginByAccessToken(autHeader[1], "JwtHttpBearerAuth")
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
if (identity == null) this.fail(response)
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
return identity;*/
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* @throws UnauthorizedHttpException
|
|
110
|
+
*/
|
|
111
|
+
fail(response) {
|
|
112
|
+
// this.challenge(response)
|
|
113
|
+
// this.handleFailure(response);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
exports.KeyCloakHttpBearerAuth = KeyCloakHttpBearerAuth;
|
|
117
|
+
//# sourceMappingURL=KeyCloakHttpBearerAuth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KeyCloakHttpBearerAuth.js","sourceRoot":"","sources":["../../../filters/auth/KeyCloakHttpBearerAuth.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA;;;;;GAKG;AACH,8DAAsC;AACtC,qDAAgD;AAChD,8EAAyE;AAKzE,MAAM,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAE7C,MAAa,sBAAuB,SAAQ,+BAAc;IAA1D;;QACI;;;WAGG;QACI,QAAG,GAAG,KAAK,CAAA;QACX,SAAI,GAAQ,IAAI,CAAC;QACjB,aAAQ,GAAQ,IAAI,CAAC;IA4FhC,CAAC;IAzFG;;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,QAAQ,GAAG,MAAA,kBAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,QAAQ,mCAAI,IAAI,CAAC;QACrE,IAAI,CAAC,IAAI,GAAG,MAAA,kBAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,mCAAI,IAAI,CAAC;QAClD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;IAGnC,CAAC;IAEY,aAAa,CAAC,KAAa,EAAE,OAAgB,EAAE,QAAkB;;YAC1E,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI;gBAAE,OAAO,KAAK,CAAC;YACxC,2FAA2F;YAC3F,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjF,CAAC;KAAA;IAGY,YAAY,CAAC,IAAa,EAAE,OAAgB,EAAE,QAAkB;;YAGzE,IAAI,QAAQ,GAAG,IAAI,CAAC;YACpB,IAAI,KAAK,GAAG,IAAI,CAAC;YAEjB,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,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,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;gBACpE,kBAAQ,CAAC,KAAK,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAA;aACpD;YAED,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,IAAI,KAAK;gBAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAE9D,OAAO,QAAQ,CAAC;YAEhB;;;;;;;;;;;;;;;;;;;;;;;;;;;+BA2BmB;QACvB,CAAC;KAAA;IAGD;;OAEG;IACI,IAAI,CAAC,QAAkB;QAC1B,2BAA2B;QAC3B,gCAAgC;IACpC,CAAC;CAEJ;AAnGD,wDAmGC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
13
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
14
|
+
};
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.BaseChyz = exports.WebUser = exports.JwtHttpBearerAuth = void 0;
|
|
17
|
+
__exportStar(require("./base"), exports);
|
|
18
|
+
__exportStar(require("./filters"), exports);
|
|
19
|
+
var auth_1 = require("./filters/auth");
|
|
20
|
+
Object.defineProperty(exports, "JwtHttpBearerAuth", { enumerable: true, get: function () { return auth_1.JwtHttpBearerAuth; } });
|
|
21
|
+
__exportStar(require("./decorator"), exports);
|
|
22
|
+
__exportStar(require("./requiments/Utils"), exports);
|
|
23
|
+
var WebUser_1 = require("./web/WebUser");
|
|
24
|
+
Object.defineProperty(exports, "WebUser", { enumerable: true, get: function () { return WebUser_1.WebUser; } });
|
|
25
|
+
const BaseChyz_1 = __importDefault(require("./BaseChyz"));
|
|
26
|
+
exports.BaseChyz = BaseChyz_1.default;
|
|
27
|
+
const Chyz = new BaseChyz_1.default();
|
|
28
|
+
exports.default = Chyz;
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,yCAAuB;AACvB,4CAA2B;AAC3B,uCAAiD;AAAzC,yGAAA,iBAAiB,OAAA;AACzB,8CAA4B;AAC5B,qDAAmC;AAEnC,yCAAsC;AAA9B,kGAAA,OAAO,OAAA;AAEf,0DAAkC;AAC1B,mBADD,kBAAQ,CACC;AAEhB,MAAM,IAAI,GAAG,IAAI,kBAAQ,EAAE,CAAC;AAC5B,kBAAe,IAAI,CAAC"}
|
|
@@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.
|
|
15
|
+
exports.WebUser = void 0;
|
|
16
16
|
/*
|
|
17
17
|
* Copyright (c) 2021. Chy Bilgisayar Bilisim
|
|
18
18
|
* Author: Cihan Ozturk
|
|
@@ -23,7 +23,7 @@ const BaseChyz_1 = __importDefault(require("../BaseChyz"));
|
|
|
23
23
|
const Component_1 = require("../base/Component");
|
|
24
24
|
const ForbiddenHttpException_1 = require("../base/ForbiddenHttpException");
|
|
25
25
|
const InvalidConfigException_1 = require("../base/InvalidConfigException");
|
|
26
|
-
class
|
|
26
|
+
class WebUser extends Component_1.Component {
|
|
27
27
|
get identity() {
|
|
28
28
|
return this._identity;
|
|
29
29
|
}
|
|
@@ -61,9 +61,14 @@ class User extends Component_1.Component {
|
|
|
61
61
|
loginByAccessToken(token, type = null) {
|
|
62
62
|
return __awaiter(this, void 0, void 0, function* () {
|
|
63
63
|
let $class = this.identityClass;
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
64
|
+
if ($class.findIdentityByAccessToken) {
|
|
65
|
+
this.identity = yield $class.findIdentityByAccessToken(token, type);
|
|
66
|
+
if (this.identity && this.login(this.identity)) {
|
|
67
|
+
return this.identity;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
BaseChyz_1.default.error("WebUser::findIdentityByAccessToken undefined");
|
|
67
72
|
}
|
|
68
73
|
return null;
|
|
69
74
|
});
|
|
@@ -79,5 +84,5 @@ class User extends Component_1.Component {
|
|
|
79
84
|
afterLogin() {
|
|
80
85
|
}
|
|
81
86
|
}
|
|
82
|
-
exports.
|
|
83
|
-
//# sourceMappingURL=
|
|
87
|
+
exports.WebUser = WebUser;
|
|
88
|
+
//# sourceMappingURL=WebUser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebUser.js","sourceRoot":"","sources":["../../web/WebUser.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA;;;;;GAKG;AACH,2DAAmC;AACnC,iDAA4C;AAC5C,2EAAsE;AACtE,2EAAsE;AAGtE,MAAa,OAAQ,SAAQ,qBAAS;IASlC,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,IAAI,QAAQ,CAAC,KAAK;QACd,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IAC3B,CAAC;IAEM,IAAI;QACP,KAAK,CAAC,IAAI,EAAE,CAAC;QAEb,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,EAAE;YAC7B,MAAM,IAAI,+CAAsB,CAAC,kCAAkC,CAAC,CAAC;SACxE;QAGD,IAAI,CAAC,aAAa,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;IAElD,CAAC;IAEM,UAAU;QACb,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC;IACvC,CAAC;IAEM,WAAW,CAAC,SAAS,GAAG,IAAI;QAC/B,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAEM,aAAa;QAEhB,MAAM,IAAI,+CAAsB,CAAC,kBAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACnE,CAAC;IAGD;;;;OAIG;IACO,mBAAmB;IAE7B,CAAC;IAED;;;;OAIG;IACU,kBAAkB,CAAC,KAAU,EAAE,OAAY,IAAI;;YAExD,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;YAChC,IAAI,MAAM,CAAC,yBAAyB,EAAE;gBAClC,IAAI,CAAC,QAAQ,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;gBACnE,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;oBAC5C,OAAO,IAAI,CAAC,QAAQ,CAAC;iBACxB;aACJ;iBAAI;gBACD,kBAAQ,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAA;aACjE;YACD,OAAO,IAAI,CAAC;QAChB,CAAC;KAAA;IAEM,KAAK,CAAC,QAA2B,EAAE,QAAQ,GAAG,CAAC;QAElD,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE;SAEhD;QACD,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAA;IAC7B,CAAC;IAEM,WAAW,CAAC,QAAa,EAAE,WAAoB,EAAE,QAAgB;QAEpE,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,UAAU;IAEjB,CAAC;CACJ;AAvFD,0BAuFC"}
|
package/filters/AccessControl.ts
CHANGED
|
@@ -8,7 +8,7 @@ import BaseChyz from "../BaseChyz";
|
|
|
8
8
|
import {ForbiddenHttpException} from "../base/ForbiddenHttpException";
|
|
9
9
|
import {ActionFilter} from "../base/ActionFilter";
|
|
10
10
|
import {AccessRule} from "./AccessRule";
|
|
11
|
-
import {
|
|
11
|
+
import {WebUser} from "../web/WebUser";
|
|
12
12
|
import Utils from "../requiments/Utils";
|
|
13
13
|
import {NextFunction, Request, Response} from "express";
|
|
14
14
|
|
|
@@ -24,7 +24,7 @@ export class AccessControl extends ActionFilter {
|
|
|
24
24
|
super.init()
|
|
25
25
|
|
|
26
26
|
if (this.user == undefined) {
|
|
27
|
-
this.user = Utils.cloneDeep(BaseChyz.getComponent("user")) ?? new
|
|
27
|
+
this.user = Utils.cloneDeep(BaseChyz.getComponent("user")) ?? new WebUser();
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
this.rules.forEach((rule:any, index:number) => {
|
|
@@ -55,7 +55,7 @@ export class AccessControl extends ActionFilter {
|
|
|
55
55
|
return false;
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
public denyAccess(user:
|
|
58
|
+
public denyAccess(user: WebUser) {
|
|
59
59
|
if (user != undefined && user.getIsGuest()) {
|
|
60
60
|
user.loginRequired();
|
|
61
61
|
} else throw new ForbiddenHttpException(BaseChyz.t('You are not allowed to perform this action.'));
|
package/filters/AccessRule.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* E-mail: cihan@chy.com.tr
|
|
5
5
|
* Github:https://github.com/cihan53/
|
|
6
6
|
*/
|
|
7
|
-
import {
|
|
7
|
+
import {WebUser} from "../web/WebUser";
|
|
8
8
|
|
|
9
9
|
var _ = require('lodash');
|
|
10
10
|
import {Component} from "../base/Component";
|
|
@@ -51,7 +51,7 @@ export class AccessRule extends Component {
|
|
|
51
51
|
public ips:any;
|
|
52
52
|
|
|
53
53
|
|
|
54
|
-
public allows(action:any, user:
|
|
54
|
+
public allows(action:any, user:WebUser, request:Request) {
|
|
55
55
|
if (
|
|
56
56
|
this.matchAction(action)
|
|
57
57
|
&& this.matchRole(user)
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
import {ActionFilter} from "../../base/ActionFilter";
|
|
9
9
|
import {AuthInterface} from "./AuthInterface";
|
|
10
10
|
import {UnauthorizedHttpException} from "../../base/UnauthorizedHttpException";
|
|
11
|
-
import {
|
|
11
|
+
import {WebUser} from "../../web/WebUser";
|
|
12
12
|
import {Request, Response} from "express";
|
|
13
13
|
|
|
14
14
|
export abstract class AuthMethod extends ActionFilter implements AuthInterface {
|
|
@@ -16,7 +16,7 @@ export abstract class AuthMethod extends ActionFilter implements AuthInterface {
|
|
|
16
16
|
/**
|
|
17
17
|
* @var User the user object representing the user authentication status. If not set, the `user` application component will be used.
|
|
18
18
|
*/
|
|
19
|
-
public user:
|
|
19
|
+
public user: WebUser | undefined;
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* @var Request the current request. If not set, the `request` application component will be used.
|
|
@@ -33,7 +33,7 @@ export abstract class AuthMethod extends ActionFilter implements AuthInterface {
|
|
|
33
33
|
|
|
34
34
|
public async beforeAction(action: any, request: Request, response: Response) {
|
|
35
35
|
let identity = await this.authenticate(
|
|
36
|
-
this.user ?? new
|
|
36
|
+
this.user ?? new WebUser(),
|
|
37
37
|
request,
|
|
38
38
|
response
|
|
39
39
|
)
|
|
@@ -51,7 +51,7 @@ export abstract class AuthMethod extends ActionFilter implements AuthInterface {
|
|
|
51
51
|
return false;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
authenticate(user:
|
|
54
|
+
authenticate(user: WebUser, request: Request, response: Response) {
|
|
55
55
|
|
|
56
56
|
}
|
|
57
57
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import {AuthMethod} from "./AuthMethod";
|
|
9
|
-
import {
|
|
9
|
+
import {WebUser} from "../../web/WebUser";
|
|
10
10
|
import Utils from "../../requiments/Utils";
|
|
11
11
|
import {Request, Response} from "express";
|
|
12
12
|
|
|
@@ -24,7 +24,7 @@ export class HttpHeaderAuth extends AuthMethod {
|
|
|
24
24
|
public pattern!: string;
|
|
25
25
|
|
|
26
26
|
|
|
27
|
-
async authenticate(user:
|
|
27
|
+
async authenticate(user: WebUser, request:Request, response:Response) {
|
|
28
28
|
let key = Object.keys(request.headers).find(key => key.toLowerCase() === this.header.toLowerCase())
|
|
29
29
|
if (key) {
|
|
30
30
|
let authHeader:any = request.headers[key];
|
|
@@ -9,7 +9,7 @@ import {HttpBearerAuth} from "./HttpBearerAuth";
|
|
|
9
9
|
import {InvalidConfigException} from "../../base/InvalidConfigException";
|
|
10
10
|
import {UnauthorizedHttpException} from "../../base/UnauthorizedHttpException";
|
|
11
11
|
import {Response,Request} from "express";
|
|
12
|
-
import {
|
|
12
|
+
import {WebUser} from "../../web/WebUser";
|
|
13
13
|
|
|
14
14
|
const JsonWebToken = require("jsonwebtoken");
|
|
15
15
|
|
|
@@ -21,6 +21,7 @@ export class JwtHttpBearerAuth extends HttpBearerAuth {
|
|
|
21
21
|
public jwt = 'jwt'
|
|
22
22
|
public auth:any = null;
|
|
23
23
|
|
|
24
|
+
|
|
24
25
|
/**
|
|
25
26
|
* @throws InvalidConfigException
|
|
26
27
|
*/
|
|
@@ -35,20 +36,18 @@ export class JwtHttpBearerAuth extends HttpBearerAuth {
|
|
|
35
36
|
}
|
|
36
37
|
|
|
37
38
|
|
|
38
|
-
public async authenticate(user:
|
|
39
|
+
public async authenticate(user:WebUser, request:Request, response:Response) // BC signature
|
|
39
40
|
{
|
|
40
41
|
|
|
41
42
|
let autHeader = this.getHeaderByKey(request.headers, this.header)
|
|
42
|
-
|
|
43
43
|
if (autHeader == null || (autHeader = this.patternCheck(autHeader, this.pattern)) == null) {
|
|
44
44
|
return null;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
|
|
47
|
+
BaseChyz.debug("JSON Web Token.",autHeader);
|
|
48
48
|
let identity = null;
|
|
49
49
|
let token = null;
|
|
50
50
|
|
|
51
|
-
|
|
52
51
|
token = JsonWebToken.decode(autHeader[1], {complete: true})
|
|
53
52
|
if (!token) {
|
|
54
53
|
BaseChyz.warning("Your request was made with invalid or expired JSON Web Token.");
|