@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.
- package/lib/cjs/cli/BanUser.js +3 -3
- package/lib/cjs/cli/BanUser.js.map +1 -1
- package/lib/cjs/index.js +1 -1
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/jobs/UnbanUser.js +1 -1
- package/lib/cjs/jobs/UnbanUser.js.map +1 -1
- package/lib/cjs/models/User.d.ts +10 -5
- package/lib/cjs/models/User.d.ts.map +1 -1
- package/lib/cjs/models/User.js +59 -56
- package/lib/cjs/models/User.js.map +1 -1
- package/lib/mjs/cli/BanUser.js +3 -3
- package/lib/mjs/cli/BanUser.js.map +1 -1
- package/lib/mjs/index.js +1 -1
- package/lib/mjs/index.js.map +1 -1
- package/lib/mjs/jobs/UnbanUser.js +1 -1
- package/lib/mjs/jobs/UnbanUser.js.map +1 -1
- package/lib/mjs/models/User.d.ts +10 -5
- package/lib/mjs/models/User.d.ts.map +1 -1
- package/lib/mjs/models/User.js +59 -56
- package/lib/mjs/models/User.js.map +1 -1
- package/lib/tsconfig.cjs.tsbuildinfo +1 -1
- package/lib/tsconfig.mjs.tsbuildinfo +1 -1
- package/package.json +10 -10
package/lib/mjs/models/User.js
CHANGED
|
@@ -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
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
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
|
-
|
|
58
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
106
|
-
target.push(res);
|
|
93
|
+
return res.Value;
|
|
107
94
|
}
|
|
108
|
-
return
|
|
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
|
-
|
|
114
|
+
whereEmail(email) {
|
|
129
115
|
return this.where({
|
|
130
116
|
Email: email,
|
|
131
117
|
});
|
|
132
118
|
}
|
|
133
|
-
|
|
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(
|
|
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":"
|
|
1
|
+
{"version":3,"file":"User.js","sourceRoot":"","sources":["../../../src/models/User.ts"],"names":[],"mappings":"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"}
|