chyz 1.0.13-rc.2 → 1.0.13-rc.23

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 (89) hide show
  1. package/BaseChyz.ts +60 -18
  2. package/Doc/Moel kullanma.md +13 -0
  3. package/Examples/Controllers/ApiController.ts +35 -26
  4. package/Examples/Controllers/BasicApiController.ts +121 -0
  5. package/Examples/Controllers/KeyCloakController.ts +4 -4
  6. package/Examples/Controllers/SiteController.ts +18 -8
  7. package/Examples/Models/AuthAssignment.ts +50 -0
  8. package/Examples/Models/AuthItem.ts +59 -0
  9. package/Examples/Models/AuthItemChild.ts +49 -0
  10. package/Examples/Models/Categories.ts +14 -3
  11. package/Examples/Models/Customer.ts +2 -2
  12. package/Examples/Models/KeycloakUser.ts +4 -0
  13. package/Examples/Models/Order.ts +5 -5
  14. package/Examples/Models/OrderItem.ts +2 -2
  15. package/Examples/Models/ProductModels.ts +4 -5
  16. package/Examples/Models/ProductToCategories.ts +15 -4
  17. package/Examples/Models/Products.ts +9 -8
  18. package/Examples/Models/Stocks.ts +2 -2
  19. package/Examples/Models/User.ts +8 -1
  20. package/Examples/Models/UserPermission.ts +2 -2
  21. package/Examples/Models/index.ts +19 -0
  22. package/Examples/index.ts +20 -1
  23. package/Examples/log/app.log +9456 -0
  24. package/Examples/log/errors.log +1904 -0
  25. package/Examples/tsconfig.json +2 -1
  26. package/README.md +267 -16
  27. package/base/ActionFilter.ts +1 -1
  28. package/base/BaseError.ts +4 -2
  29. package/base/InvalidArgumentException.ts +16 -0
  30. package/base/Model.ts +81 -55
  31. package/base/ModelManager.ts +19 -0
  32. package/base/RestClient.ts +4 -4
  33. package/base/ValidationHttpException.ts +1 -1
  34. package/base/index.ts +2 -0
  35. package/dist/BaseChyz.js +48 -9
  36. package/dist/BaseChyz.js.map +1 -1
  37. package/dist/base/ActionFilter.js +1 -1
  38. package/dist/base/ActionFilter.js.map +1 -1
  39. package/dist/base/BaseError.js +6 -2
  40. package/dist/base/BaseError.js.map +1 -1
  41. package/dist/base/InvalidArgumentException.js +18 -0
  42. package/dist/base/InvalidArgumentException.js.map +1 -0
  43. package/dist/base/Model.js +47 -32
  44. package/dist/base/Model.js.map +1 -1
  45. package/dist/base/ModelManager.js +9 -0
  46. package/dist/base/ModelManager.js.map +1 -0
  47. package/dist/base/RestClient.js +4 -4
  48. package/dist/base/RestClient.js.map +1 -1
  49. package/dist/base/ValidationHttpException.js +1 -1
  50. package/dist/base/index.js +2 -0
  51. package/dist/base/index.js.map +1 -1
  52. package/dist/filters/AccessControl.js +15 -3
  53. package/dist/filters/AccessControl.js.map +1 -1
  54. package/dist/filters/AccessRule.js +99 -38
  55. package/dist/filters/AccessRule.js.map +1 -1
  56. package/dist/filters/auth/HttpBasicAuth.js +65 -0
  57. package/dist/filters/auth/HttpBasicAuth.js.map +1 -1
  58. package/dist/filters/auth/JwtHttpBearerAuth.js +1 -1
  59. package/dist/filters/auth/JwtHttpBearerAuth.js.map +1 -1
  60. package/dist/filters/auth/index.js +1 -0
  61. package/dist/filters/auth/index.js.map +1 -1
  62. package/dist/index.js +2 -3
  63. package/dist/index.js.map +1 -1
  64. package/dist/package.json +55 -0
  65. package/dist/rbac/AuthAssignment.js +45 -0
  66. package/dist/rbac/AuthAssignment.js.map +1 -0
  67. package/dist/rbac/AuthItem.js +52 -0
  68. package/dist/rbac/AuthItem.js.map +1 -0
  69. package/dist/rbac/AuthItemChild.js +44 -0
  70. package/dist/rbac/AuthItemChild.js.map +1 -0
  71. package/dist/rbac/AuthManager.js +359 -0
  72. package/dist/rbac/AuthManager.js.map +1 -0
  73. package/dist/web/WebUser.js +78 -0
  74. package/dist/web/WebUser.js.map +1 -1
  75. package/filters/AccessControl.ts +19 -6
  76. package/filters/AccessRule.ts +61 -16
  77. package/filters/auth/HttpBasicAuth.ts +68 -0
  78. package/filters/auth/JwtHttpBearerAuth.ts +1 -1
  79. package/filters/auth/index.ts +1 -0
  80. package/index.ts +2 -2
  81. package/package-lock.json +5259 -0
  82. package/package.json +6 -6
  83. package/rbac/AuthAssignment.ts +50 -0
  84. package/rbac/AuthItem.ts +57 -0
  85. package/rbac/AuthItemChild.ts +50 -0
  86. package/rbac/AuthManager.ts +398 -0
  87. package/web/IdentityInterface.ts +6 -0
  88. package/web/WebUser.ts +88 -1
  89. package/Examples/yarn.lock +0 -2549
@@ -1,25 +1,77 @@
1
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
+ };
2
14
  Object.defineProperty(exports, "__esModule", { value: true });
3
15
  exports.AccessRule = void 0;
4
16
  var _ = require('lodash');
5
17
  const Component_1 = require("../base/Component");
6
18
  const InvalidConfigException_1 = require("../base/InvalidConfigException");
19
+ const Utils_1 = __importDefault(require("../requiments/Utils"));
7
20
  class AccessRule extends Component_1.Component {
21
+ constructor() {
22
+ super(...arguments);
23
+ /**
24
+ * @var array|Closure parameters to pass to the [[User::can()]] function for evaluating
25
+ * user permissions in [[$roles]].
26
+ *
27
+ * If this is an array, it will be passed directly to [[User::can()]]. For example for passing an
28
+ * ID from the current request, you may use the following:
29
+ *
30
+ * ```php
31
+ * ['postId' => Yii::$app->request->get('id')]
32
+ * ```
33
+ *
34
+ * You may also specify a closure that returns an array. This can be used to
35
+ * evaluate the array values only if they are needed, for example when a model needs to be
36
+ * loaded like in the following code:
37
+ *
38
+ * ```php
39
+ * 'rules' => [
40
+ * [
41
+ * 'allow' => true,
42
+ * 'actions' => ['update'],
43
+ * 'roles' => ['updatePost'],
44
+ * 'roleParams' => function($rule) {
45
+ * return ['post' => Post::findOne(Yii::$app->request->get('id'))];
46
+ * },
47
+ * ],
48
+ * ],
49
+ * ```
50
+ *
51
+ * A reference to the [[AccessRule]] instance will be passed to the closure as the first parameter.
52
+ *
53
+ * @see roles
54
+ * @since 2.0.12
55
+ */
56
+ this.roleParams = [];
57
+ }
8
58
  allows(action, user, request) {
9
- if (this.matchAction(action)
10
- && this.matchRole(user)) {
11
- return this.allow;
12
- }
13
- // if (this.matchAction($action)
14
- // && this.matchRole($user)
15
- // && this.matchIP($request->getUserIP())
16
- // && this.matchVerb($request->getMethod())
17
- // && this.matchController($action->controller)
18
- // && this.matchCustom($action)
19
- // ) {
20
- // return $this->allow ? true : false;
21
- // }
22
- return null;
59
+ return __awaiter(this, void 0, void 0, function* () {
60
+ if (this.matchAction(action)
61
+ && (yield this.matchRole(user))) {
62
+ return this.allow;
63
+ }
64
+ // if (this.matchAction($action)
65
+ // && this.matchRole($user)
66
+ // && this.matchIP($request->getUserIP())
67
+ // && this.matchVerb($request->getMethod())
68
+ // && this.matchController($action->controller)
69
+ // && this.matchCustom($action)
70
+ // ) {
71
+ // return $this->allow ? true : false;
72
+ // }
73
+ return null;
74
+ });
23
75
  }
24
76
  /**
25
77
  * @param Action $action the action
@@ -46,33 +98,42 @@ class AccessRule extends Component_1.Component {
46
98
  return false;
47
99
  }
48
100
  matchRole(user) {
49
- let items = _.isEmpty(this.roles) ? [] : this.roles;
50
- if (!_.isEmpty(this.permissions)) {
51
- items = _.merge(items, this.permissions);
52
- }
53
- if (_.isEmpty(items)) {
54
- return true;
55
- }
56
- if (user === false) {
57
- throw new InvalidConfigException_1.InvalidConfigException('The user application component must be available to specify roles in AccessRule.');
58
- }
59
- for (const itemsKey in items) {
60
- let item = items[itemsKey];
61
- if (item === '?') {
62
- if (user.getIsGuest()) {
63
- return true;
64
- }
101
+ return __awaiter(this, void 0, void 0, function* () {
102
+ let items = Utils_1.default.isEmpty(this.roles) ? [] : this.roles;
103
+ if (!Utils_1.default.isEmpty(this.permissions)) {
104
+ items = Utils_1.default.merge(items, this.permissions);
65
105
  }
66
- else if (item === '@') {
67
- if (!user.getIsGuest()) {
68
- return true;
69
- }
106
+ if (Utils_1.default.isEmpty(items)) {
107
+ return true;
70
108
  }
71
- else {
72
- //roleparams
109
+ if (!user) {
110
+ throw new InvalidConfigException_1.InvalidConfigException('The user application component must be available to specify roles in AccessRule.');
73
111
  }
74
- }
75
- return false;
112
+ let roleParams = [];
113
+ for (const itemsKey in items) {
114
+ let item = items[itemsKey];
115
+ if (item === '?') {
116
+ if (user.getIsGuest()) {
117
+ return true;
118
+ }
119
+ }
120
+ else if (item === '@') {
121
+ if (!user.getIsGuest()) {
122
+ return true;
123
+ }
124
+ }
125
+ else {
126
+ //roleparams
127
+ if (!Utils_1.default.isEmpty(this.roleParams)) {
128
+ roleParams = !Utils_1.default.isArray(this.roleParams) ? this.roleParams.apply(this) : this.roleParams;
129
+ }
130
+ if (yield user.can(item, this.roleParams)) {
131
+ return true;
132
+ }
133
+ }
134
+ }
135
+ return false;
136
+ });
76
137
  }
77
138
  }
78
139
  exports.AccessRule = AccessRule;
@@ -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,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"}
1
+ {"version":3,"file":"AccessRule.js","sourceRoot":"","sources":["../../filters/AccessRule.ts"],"names":[],"mappings":"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"}
@@ -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
- BaseChyz_1.default.debug("JSON Web Token.", autHeader);
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,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"}
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/index.js CHANGED
@@ -13,11 +13,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
13
13
  return (mod && mod.__esModule) ? mod : { "default": mod };
14
14
  };
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.BaseChyz = exports.WebUser = exports.JwtHttpBearerAuth = void 0;
16
+ exports.BaseChyz = exports.WebUser = void 0;
17
17
  __exportStar(require("./base"), exports);
18
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; } });
19
+ __exportStar(require("./filters/auth"), exports);
21
20
  __exportStar(require("./decorator"), exports);
22
21
  __exportStar(require("./requiments/Utils"), exports);
23
22
  var WebUser_1 = require("./web/WebUser");
package/dist/index.js.map CHANGED
@@ -1 +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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,yCAAuB;AACvB,4CAA0B;AAC1B,iDAA+B;AAC/B,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"}
@@ -0,0 +1,55 @@
1
+ {
2
+ "name": "chyz",
3
+ "version": " 1.0.13-rc.23",
4
+ "description": "Nodejs Micro service Framework",
5
+ "scripts": {
6
+ "dev": "nodemon -t --trace-warnings index.ts",
7
+ "debug": "ts-node index.ts",
8
+ "build": "rmdir /S /Q .\\dist && npx tsc && xcopy .\\log .\\dist\\log /e /i /h /Y && copy .\\package.json .\\dist\\package.json",
9
+ "test": "echo \"Error: no test specified\" && exit 1",
10
+ "postversion": "git push && git push --tags"
11
+ },
12
+ "repository": {
13
+ "type": "git",
14
+ "url": "git+https://github.com/cihan53/Chy-Nodejs-Framework.git"
15
+ },
16
+ "author": "Cihan Ozturk",
17
+ "license": "MIT",
18
+ "bugs": {
19
+ "url": "https://github.com/cihan53/Chy-Nodejs-Framework/issues"
20
+ },
21
+ "homepage": "https://github.com/cihan53/Chy-Nodejs-Framework#readme",
22
+ "dependencies": {
23
+ "axios": "^0.23.0",
24
+ "babel-plugin-transform-decorators-legacy": "^1.3.5",
25
+ "body-parser": "^1.19.0",
26
+ "dotenv-flow": "^3.2.0",
27
+ "express": "^4.17.1",
28
+ "express-session": "^1.17.2",
29
+ "glob": "^7.1.7",
30
+ "ip": "^1.1.5",
31
+ "jsonwebtoken": "^8.5.1",
32
+ "lodash": "^4.17.21",
33
+ "log4js": "^6.3.0",
34
+ "method-override": "^3.0.0",
35
+ "passport": "^0.4.1",
36
+ "pg": "^8.7.1",
37
+ "pg-hstore": "^2.3.4",
38
+ "reflect-metadata": "^0.1.13",
39
+ "sequelize": "^6.6.5",
40
+ "validate.js": "^0.13.1"
41
+ },
42
+ "devDependencies": {
43
+ "@types/express": "^4.17.13",
44
+ "@types/node": "^16.6.1",
45
+ "@types/validator": "^13.6.3",
46
+ "nodemon": "^2.0.12",
47
+ "ts-node": "^10.2.0",
48
+ "typescript": "^4.3.5"
49
+ },
50
+ "keywords": [
51
+ "Framework",
52
+ "RespAPI",
53
+ "microservice"
54
+ ]
55
+ }
@@ -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"}