@spinajs/rbac 2.0.182 → 2.0.183

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.
@@ -7,11 +7,13 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
+ var User_1;
10
11
  import { DateTime } from 'luxon';
11
12
  import { ModelBase, Primary, Connection, Model, CreatedAt, SoftDelete, HasMany, Relation, Uuid, DateTime as DT, OneToManyRelationList, InsertBehaviour } from '@spinajs/orm';
12
13
  import { DI } from '@spinajs/di';
13
14
  import { UserMetadata } from './UserMetadata.js';
14
15
  import { UserAction } from './UserTimeline.js';
16
+ import { v4 as uuidv4 } from 'uuid';
15
17
  class UserMetadataRelation extends OneToManyRelationList {
16
18
  /**
17
19
  *
@@ -21,18 +23,10 @@ class UserMetadataRelation extends OneToManyRelationList {
21
23
  * @returns {true|false}
22
24
  */
23
25
  async exists(key) {
24
- let result = null;
25
- if (key instanceof RegExp) {
26
- result = await UserMetadata.where({
27
- User: this.owner,
28
- }).andWhere('Key', 'rlike', key.source);
29
- }
30
- else {
31
- result = await UserMetadata.where({
32
- User: this.owner,
33
- }).andWhere('Key', key);
34
- }
35
- return result !== null && result !== undefined;
26
+ return await UserMetadata.where({
27
+ User: this.owner,
28
+ Key: key,
29
+ }).resultExists();
36
30
  }
37
31
  /**
38
32
  *
@@ -41,73 +35,66 @@ class UserMetadataRelation extends OneToManyRelationList {
41
35
  * @param key - meta key do delete or regexp
42
36
  */
43
37
  async delete(key) {
44
- if (key instanceof RegExp) {
45
- await UserMetadata.destroy()
46
- .where({
47
- User: this.owner, // TODO FIX THIS !!!!!!!!!!!
48
- })
49
- .andWhere('Key', 'rlike', key.source);
50
- }
51
- else {
52
- await UserMetadata.destroy().where({
53
- Key: key,
54
- User: this.owner,
55
- });
38
+ await UserMetadata.destroy().where({
39
+ Key: key,
40
+ User: this.owner.Id,
41
+ });
42
+ }
43
+ async get(key) {
44
+ const found = this.find((x) => x.Key === key);
45
+ if (found) {
46
+ return found.Value;
56
47
  }
57
- // refresh meta
58
- await this.populate();
48
+ return await UserMetadata.where({
49
+ User: this.owner,
50
+ Key: key,
51
+ })
52
+ .first()
53
+ .then((res) => {
54
+ if (res) {
55
+ return res.Value;
56
+ }
57
+ return null;
58
+ });
59
59
  }
60
60
  }
61
61
  function UserMetadataRelationFactory(model, desc, container) {
62
62
  const repository = container.resolve(UserMetadataRelation, [model, desc.TargetModel, desc, []]);
63
63
  const proxy = {
64
64
  set: (target, prop, value) => {
65
- // if we try to call method or prop that exists return it
66
65
  if (target[prop]) {
67
66
  return (target[prop] = value);
68
67
  }
69
- else {
68
+ return (async () => {
70
69
  const userMeta = new UserMetadata();
71
70
  userMeta.User.Value = model;
72
71
  userMeta.Key = prop;
73
72
  userMeta.Value = value;
74
- UserMetadata.insert(userMeta, InsertBehaviour.InsertOrUpdate);
75
- let meta = target.find((x) => x.Value === prop);
76
- if (meta) {
77
- meta.Value = value;
78
- }
79
- else {
80
- target.push(userMeta);
81
- }
82
- }
83
- return true;
73
+ await UserMetadata.insert(userMeta, InsertBehaviour.InsertOrUpdate);
74
+ })();
84
75
  },
85
76
  get: (target, prop) => {
86
- // if we try to call method or prop that exists return it
87
77
  if (target[prop]) {
88
78
  return target[prop];
89
79
  }
90
- else {
80
+ return (async () => {
91
81
  // check for metadata entries
92
82
  const found = target.find((x) => x.Key === prop);
93
83
  if (found) {
94
84
  return found.Value;
95
85
  }
96
- // if not found try to obtain it
97
- // or return null
98
- return UserMetadata.where({
86
+ return await UserMetadata.where({
99
87
  User: model,
100
88
  Key: prop,
101
89
  })
102
90
  .first()
103
91
  .then((res) => {
104
92
  if (res) {
105
- // add to this repo for cache
106
- target.push(res);
93
+ return res.Value;
107
94
  }
108
- return res;
95
+ return null;
109
96
  });
110
- }
97
+ })();
111
98
  },
112
99
  };
113
100
  return new Proxy(repository, proxy);
@@ -120,17 +107,16 @@ export class UserQueryScopes {
120
107
  */
121
108
  isActiveUser() {
122
109
  return this.where({
123
- IsBanned: false,
124
110
  IsActive: true,
125
111
  DeletedAt: null,
126
112
  });
127
113
  }
128
- byEmail(email) {
114
+ whereEmail(email) {
129
115
  return this.where({
130
116
  Email: email,
131
117
  });
132
118
  }
133
- byLogin(email) {
119
+ whereLogin(email) {
134
120
  return this.where({
135
121
  Email: email,
136
122
  });
@@ -141,13 +127,16 @@ export class UserQueryScopes {
141
127
  *
142
128
  * To add / extend fields simply extend this model and register as default user model in ACL service
143
129
  */
144
- let User = class User extends ModelBase {
145
- constructor() {
146
- super(...arguments);
130
+ let User = User_1 = class User extends ModelBase {
131
+ constructor(data) {
132
+ super(data);
147
133
  this._hidden = ['Password', 'Id'];
134
+ if (this.Uuid === undefined) {
135
+ this.Uuid = uuidv4();
136
+ }
148
137
  }
149
138
  get IsGuest() {
150
- return this.Role.indexOf('guest') !== -1;
139
+ return this.Role.indexOf('guest') !== -1 || this.Role.length === 0;
151
140
  }
152
141
  can(resource, permission) {
153
142
  const ac = DI.get('AccessControl');
@@ -182,6 +171,19 @@ let User = class User extends ModelBase {
182
171
  canCreateOwn(resource) {
183
172
  return this.can(resource, 'createOwn');
184
173
  }
174
+ static getByLogin(login) {
175
+ return User_1.query().whereLogin(login).first();
176
+ }
177
+ static getByEmail(email) {
178
+ return User_1.query().whereEmail(email).first();
179
+ }
180
+ static getByUuid(uuid) {
181
+ return User_1.query()
182
+ .where({
183
+ Uuid: uuid,
184
+ })
185
+ .first();
186
+ }
185
187
  };
186
188
  User._queryScopes = new UserQueryScopes();
187
189
  __decorate([
@@ -218,9 +220,10 @@ __decorate([
218
220
  HasMany(UserAction),
219
221
  __metadata("design:type", Relation)
220
222
  ], User.prototype, "Actions", void 0);
221
- User = __decorate([
223
+ User = User_1 = __decorate([
222
224
  Connection('default'),
223
- Model('users')
225
+ Model('users'),
226
+ __metadata("design:paramtypes", [Object])
224
227
  ], User);
225
228
  export { User };
226
229
  //# sourceMappingURL=User.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"User.js","sourceRoot":"","sources":["../../../src/models/User.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,IAAI,EAAE,EAAE,qBAAqB,EAAmC,eAAe,EAAuB,MAAM,cAAc,CAAC;AAEnO,OAAO,EAAE,EAAE,EAAc,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,MAAM,oBAAqB,SAAQ,qBAAyC;IAC1E;;;;;;OAMG;IACI,KAAK,CAAC,MAAM,CAAC,GAAoB;QACtC,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,IAAI,GAAG,YAAY,MAAM,EAAE;YACzB,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC;gBAChC,IAAI,EAAE,IAAI,CAAC,KAAK;aACjB,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;SACzC;aAAM;YACL,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC;gBAChC,IAAI,EAAE,IAAI,CAAC,KAAK;aACjB,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;SACzB;QAED,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,CAAC;IACjD,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,MAAM,CAAC,GAAoB;QACtC,IAAI,GAAG,YAAY,MAAM,EAAE;YACzB,MAAM,YAAY,CAAC,OAAO,EAAE;iBACzB,KAAK,CAAC;gBACL,IAAI,EAAE,IAAI,CAAC,KAAY,EAAE,4BAA4B;aACtD,CAAC;iBACD,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;SACzC;aAAM;YACL,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC;gBACjC,GAAG,EAAE,GAAG;gBACR,IAAI,EAAE,IAAI,CAAC,KAAY;aACxB,CAAC,CAAC;SACJ;QAED,eAAe;QACf,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;CAGF;AAED,SAAS,2BAA2B,CAAC,KAAsB,EAAE,IAAyB,EAAE,SAAqB;IAC3G,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IAChG,MAAM,KAAK,GAAG;QACZ,GAAG,EAAE,CAAC,MAA4B,EAAE,IAAY,EAAE,KAAU,EAAE,EAAE;YAC9D,yDAAyD;YACzD,IAAK,MAAc,CAAC,IAAI,CAAC,EAAE;gBACzB,OAAO,CAAE,MAAc,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;aACxC;iBAAM;gBACL,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;gBACpC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,KAAa,CAAC;gBACpC,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC;gBACpB,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;gBAEvB,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,eAAe,CAAC,cAAc,CAAC,CAAC;gBAE9D,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;gBAEhD,IAAI,IAAI,EAAE;oBACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;iBACpB;qBAAM;oBACL,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBACvB;aACF;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QACD,GAAG,EAAE,CAAC,MAA4B,EAAE,IAAY,EAAE,EAAE;YAClD,yDAAyD;YACzD,IAAK,MAAc,CAAC,IAAI,CAAC,EAAE;gBACzB,OAAQ,MAAc,CAAC,IAAI,CAAC,CAAC;aAC9B;iBAAM;gBACL,6BAA6B;gBAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;gBAEjD,IAAI,KAAK,EAAE;oBACT,OAAO,KAAK,CAAC,KAAK,CAAC;iBACpB;gBAED,gCAAgC;gBAChC,iBAAiB;gBACjB,OAAO,YAAY,CAAC,KAAK,CAAC;oBACxB,IAAI,EAAE,KAAK;oBACX,GAAG,EAAE,IAAI;iBACV,CAAC;qBACC,KAAK,EAAE;qBACP,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;oBACZ,IAAI,GAAG,EAAE;wBACP,6BAA6B;wBAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;qBAClB;oBACD,OAAO,GAAG,CAAC;gBACb,CAAC,CAAC,CAAC;aACN;QACH,CAAC;KACF,CAAC;IAEF,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,OAAO,eAAe;IAC1B;;;;OAIG;IACI,YAAY;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC;YAChB,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IAEM,OAAO,CAAsD,KAAa;QAC/E,OAAO,IAAI,CAAC,KAAK,CAAC;YAChB,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;IACL,CAAC;IAEM,OAAO,CAAsD,KAAa;QAC/E,OAAO,IAAI,CAAC,KAAK,CAAC;YAChB,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;IACL,CAAC;CACF;AAED;;;;GAIG;AAGI,IAAM,IAAI,GAAV,MAAM,IAAK,SAAQ,SAAS;IAA5B;;QACK,YAAO,GAAa,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IA8GnD,CAAC;IA5CC,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3C,CAAC;IAEM,GAAG,CAAC,QAAgB,EAAE,UAAkB;QAC7C,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAgB,eAAe,CAAC,CAAC;QAClD,OAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAS,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAED;;;;OAIG;IACI,UAAU,CAAC,QAAgB;QAChC,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACvC,CAAC;IACM,UAAU,CAAC,QAAgB;QAChC,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACvC,CAAC;IAEM,YAAY,CAAC,QAAgB;QAClC,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACzC,CAAC;IAEM,YAAY,CAAC,QAAgB;QAClC,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACzC,CAAC;IAEM,YAAY,CAAC,QAAgB;QAClC,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACzC,CAAC;IAEM,YAAY,CAAC,QAAgB;QAClC,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACzC,CAAC;IAEM,YAAY,CAAC,QAAgB;QAClC,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACzC,CAAC;IAEM,YAAY,CAAC,QAAgB;QAClC,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACzC,CAAC;;AA3GsB,iBAAY,GAAoB,IAAI,eAAe,EAAE,AAAzC,CAA0C;AAGtE;IADN,OAAO,EAAE;;gCACQ;AAGX;IADN,IAAI,EAAE;;kCACa;AAuBb;IADN,SAAS,EAAE;8BACM,QAAQ;uCAAC;AAMpB;IADN,EAAE,EAAE;8BACgB,QAAQ;0CAAC;AAMvB;IADN,UAAU,EAAE;8BACK,QAAQ;uCAAC;AAGpB;IADN,EAAE,EAAE;8BACe,QAAQ;yCAAC;AAetB;IAHN,OAAO,CAAC,YAAY,EAAE;QACrB,OAAO,EAAE,2BAA2B;KACrC,CAAC;8BACe,oBAAoB;sCAAC;AAG/B;IADN,OAAO,CAAC,UAAU,CAAC;8BACJ,QAAQ;qCAAmB;AAjEhC,IAAI;IAFhB,UAAU,CAAC,SAAS,CAAC;IACrB,KAAK,CAAC,OAAO,CAAC;GACF,IAAI,CA+GhB"}
1
+ {"version":3,"file":"User.js","sourceRoot":"","sources":["../../../src/models/User.ts"],"names":[],"mappings":"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"}