@spinajs/rbac 2.0.180 → 2.0.181
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/auth.d.ts +15 -15
- package/lib/cjs/auth.js +103 -103
- package/lib/cjs/auth.js.map +1 -1
- package/lib/cjs/cli/ActivateUser.d.ts +8 -8
- package/lib/cjs/cli/ActivateUser.js +47 -47
- package/lib/cjs/cli/ActivateUser.js.map +1 -1
- package/lib/cjs/cli/BanUser.d.ts +8 -8
- package/lib/cjs/cli/BanUser.js +63 -63
- package/lib/cjs/cli/BanUser.js.map +1 -1
- package/lib/cjs/cli/ChangeUserPassword.d.ts +11 -11
- package/lib/cjs/cli/ChangeUserPassword.js +58 -58
- package/lib/cjs/cli/ChangeUserPassword.js.map +1 -1
- package/lib/cjs/cli/ClearUserTimelineSchedule.d.ts +8 -8
- package/lib/cjs/cli/ClearUserTimelineSchedule.js +54 -54
- package/lib/cjs/cli/ClearUserTimelineSchedule.js.map +1 -1
- package/lib/cjs/cli/CreateUser.d.ts +17 -17
- package/lib/cjs/cli/CreateUser.js +69 -69
- package/lib/cjs/cli/CreateUser.js.map +1 -1
- package/lib/cjs/cli/DeleteUser.d.ts +8 -8
- package/lib/cjs/cli/DeleteUser.js +40 -40
- package/lib/cjs/cli/DeleteUser.js.map +1 -1
- package/lib/cjs/cli/FindUser.d.ts +12 -12
- package/lib/cjs/cli/FindUser.js +44 -44
- package/lib/cjs/cli/FindUser.js.map +1 -1
- package/lib/cjs/cli/GrantUserRole.d.ts +8 -8
- package/lib/cjs/cli/GrantUserRole.js +47 -47
- package/lib/cjs/cli/GrantUserRole.js.map +1 -1
- package/lib/cjs/cli/LatestUserEvents.d.ts +6 -6
- package/lib/cjs/cli/LatestUserEvents.js +37 -37
- package/lib/cjs/cli/LatestUserEvents.js.map +1 -1
- package/lib/cjs/cli/RevokeUserRole.d.ts +8 -8
- package/lib/cjs/cli/RevokeUserRole.js +46 -46
- package/lib/cjs/cli/RevokeUserRole.js.map +1 -1
- package/lib/cjs/cli/UnbanUserSchedule.d.ts +8 -8
- package/lib/cjs/cli/UnbanUserSchedule.js +54 -54
- package/lib/cjs/cli/UnbanUserSchedule.js.map +1 -1
- package/lib/cjs/config/rbac.d.ts +115 -115
- package/lib/cjs/config/rbac.js +120 -120
- package/lib/cjs/decorators/Resource.d.ts +8 -8
- package/lib/cjs/decorators/Resource.js +17 -17
- package/lib/cjs/events/NewUser.d.ts +12 -12
- package/lib/cjs/events/NewUser.js +16 -16
- package/lib/cjs/events/NewUser.js.map +1 -1
- package/lib/cjs/events/UserActivated.d.ts +5 -5
- package/lib/cjs/events/UserActivated.js +24 -24
- package/lib/cjs/events/UserActivated.js.map +1 -1
- package/lib/cjs/events/UserBanned.d.ts +6 -6
- package/lib/cjs/events/UserBanned.js +25 -25
- package/lib/cjs/events/UserBanned.js.map +1 -1
- package/lib/cjs/events/UserDeactivated.d.ts +5 -5
- package/lib/cjs/events/UserDeactivated.js +24 -24
- package/lib/cjs/events/UserDeactivated.js.map +1 -1
- package/lib/cjs/events/UserDeleted.d.ts +5 -5
- package/lib/cjs/events/UserDeleted.js +24 -24
- package/lib/cjs/events/UserDeleted.js.map +1 -1
- package/lib/cjs/events/UserMetadataAdded.d.ts +5 -5
- package/lib/cjs/events/UserMetadataAdded.js +24 -24
- package/lib/cjs/events/UserMetadataAdded.js.map +1 -1
- package/lib/cjs/events/UserMetadataChanged.d.ts +5 -5
- package/lib/cjs/events/UserMetadataChanged.js +24 -24
- package/lib/cjs/events/UserMetadataChanged.js.map +1 -1
- package/lib/cjs/events/UserMetadataDeleted.d.ts +5 -5
- package/lib/cjs/events/UserMetadataDeleted.js +24 -24
- package/lib/cjs/events/UserMetadataDeleted.js.map +1 -1
- package/lib/cjs/events/UserPasswordChanged.d.ts +5 -5
- package/lib/cjs/events/UserPasswordChanged.js +24 -24
- package/lib/cjs/events/UserPasswordChanged.js.map +1 -1
- package/lib/cjs/events/UserPropertyChanged.d.ts +7 -7
- package/lib/cjs/events/UserPropertyChanged.js +16 -16
- package/lib/cjs/events/UserPropertyChanged.js.map +1 -1
- package/lib/cjs/events/UserRoleGranted.d.ts +6 -6
- package/lib/cjs/events/UserRoleGranted.js +25 -25
- package/lib/cjs/events/UserRoleGranted.js.map +1 -1
- package/lib/cjs/events/UserRoleRevoked.d.ts +6 -6
- package/lib/cjs/events/UserRoleRevoked.js +25 -25
- package/lib/cjs/events/UserRoleRevoked.js.map +1 -1
- package/lib/cjs/events/UserUnbanned.d.ts +5 -5
- package/lib/cjs/events/UserUnbanned.js +24 -24
- package/lib/cjs/events/UserUnbanned.js.map +1 -1
- package/lib/cjs/events/index.d.ts +13 -13
- package/lib/cjs/events/index.js +29 -29
- package/lib/cjs/index.d.ts +20 -20
- package/lib/cjs/index.js +85 -85
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/interfaces.d.ts +259 -259
- package/lib/cjs/interfaces.js +45 -45
- package/lib/cjs/interfaces.js.map +1 -1
- package/lib/cjs/jobs/UnbanUser.d.ts +9 -9
- package/lib/cjs/jobs/UnbanUser.js +43 -43
- package/lib/cjs/jobs/UnbanUser.js.map +1 -1
- package/lib/cjs/middleware.d.ts +5 -5
- package/lib/cjs/middleware.js +24 -24
- package/lib/cjs/middleware.js.map +1 -1
- package/lib/cjs/migrations/RBACInitial_2022_06_28_01_13_00.d.ts +5 -5
- package/lib/cjs/migrations/RBACInitial_2022_06_28_01_13_00.js +56 -56
- package/lib/cjs/migrations/RBACInitial_2022_06_28_01_13_00.js.map +1 -1
- package/lib/cjs/models/User.d.ts +96 -96
- package/lib/cjs/models/User.js +229 -229
- package/lib/cjs/models/User.js.map +1 -1
- package/lib/cjs/models/UserMetadata.d.ts +9 -9
- package/lib/cjs/models/UserMetadata.js +32 -32
- package/lib/cjs/models/UserMetadata.js.map +1 -1
- package/lib/cjs/models/UserTimeline.d.ts +28 -28
- package/lib/cjs/models/UserTimeline.js +46 -46
- package/lib/cjs/models/UserTimeline.js.map +1 -1
- package/lib/cjs/password.d.ts +25 -25
- package/lib/cjs/password.js +91 -91
- package/lib/cjs/password.js.map +1 -1
- package/lib/cjs/session.d.ts +33 -33
- package/lib/cjs/session.js +100 -100
- package/lib/cjs/session.js.map +1 -1
- package/lib/mjs/auth.d.ts +15 -15
- package/lib/mjs/auth.js +100 -100
- package/lib/mjs/auth.js.map +1 -1
- package/lib/mjs/cli/ActivateUser.d.ts +8 -8
- package/lib/mjs/cli/ActivateUser.js +44 -44
- package/lib/mjs/cli/ActivateUser.js.map +1 -1
- package/lib/mjs/cli/BanUser.d.ts +8 -8
- package/lib/mjs/cli/BanUser.js +60 -60
- package/lib/mjs/cli/BanUser.js.map +1 -1
- package/lib/mjs/cli/ChangeUserPassword.d.ts +11 -11
- package/lib/mjs/cli/ChangeUserPassword.js +55 -55
- package/lib/mjs/cli/ChangeUserPassword.js.map +1 -1
- package/lib/mjs/cli/ClearUserTimelineSchedule.d.ts +8 -8
- package/lib/mjs/cli/ClearUserTimelineSchedule.js +51 -51
- package/lib/mjs/cli/ClearUserTimelineSchedule.js.map +1 -1
- package/lib/mjs/cli/CreateUser.d.ts +17 -17
- package/lib/mjs/cli/CreateUser.js +66 -66
- package/lib/mjs/cli/CreateUser.js.map +1 -1
- package/lib/mjs/cli/DeleteUser.d.ts +8 -8
- package/lib/mjs/cli/DeleteUser.js +37 -37
- package/lib/mjs/cli/DeleteUser.js.map +1 -1
- package/lib/mjs/cli/FindUser.d.ts +12 -12
- package/lib/mjs/cli/FindUser.js +41 -41
- package/lib/mjs/cli/FindUser.js.map +1 -1
- package/lib/mjs/cli/GrantUserRole.d.ts +8 -8
- package/lib/mjs/cli/GrantUserRole.js +41 -41
- package/lib/mjs/cli/GrantUserRole.js.map +1 -1
- package/lib/mjs/cli/LatestUserEvents.d.ts +6 -6
- package/lib/mjs/cli/LatestUserEvents.js +34 -34
- package/lib/mjs/cli/LatestUserEvents.js.map +1 -1
- package/lib/mjs/cli/RevokeUserRole.d.ts +8 -8
- package/lib/mjs/cli/RevokeUserRole.js +40 -40
- package/lib/mjs/cli/RevokeUserRole.js.map +1 -1
- package/lib/mjs/cli/UnbanUserSchedule.d.ts +8 -8
- package/lib/mjs/cli/UnbanUserSchedule.js +51 -51
- package/lib/mjs/cli/UnbanUserSchedule.js.map +1 -1
- package/lib/mjs/config/rbac.d.ts +115 -115
- package/lib/mjs/config/rbac.js +118 -118
- package/lib/mjs/decorators/Resource.d.ts +8 -8
- package/lib/mjs/decorators/Resource.js +13 -13
- package/lib/mjs/events/NewUser.d.ts +12 -12
- package/lib/mjs/events/NewUser.js +13 -13
- package/lib/mjs/events/NewUser.js.map +1 -1
- package/lib/mjs/events/UserActivated.d.ts +5 -5
- package/lib/mjs/events/UserActivated.js +21 -21
- package/lib/mjs/events/UserActivated.js.map +1 -1
- package/lib/mjs/events/UserBanned.d.ts +6 -6
- package/lib/mjs/events/UserBanned.js +22 -22
- package/lib/mjs/events/UserBanned.js.map +1 -1
- package/lib/mjs/events/UserDeactivated.d.ts +5 -5
- package/lib/mjs/events/UserDeactivated.js +21 -21
- package/lib/mjs/events/UserDeactivated.js.map +1 -1
- package/lib/mjs/events/UserDeleted.d.ts +5 -5
- package/lib/mjs/events/UserDeleted.js +21 -21
- package/lib/mjs/events/UserDeleted.js.map +1 -1
- package/lib/mjs/events/UserMetadataAdded.d.ts +5 -5
- package/lib/mjs/events/UserMetadataAdded.js +21 -21
- package/lib/mjs/events/UserMetadataAdded.js.map +1 -1
- package/lib/mjs/events/UserMetadataChanged.d.ts +5 -5
- package/lib/mjs/events/UserMetadataChanged.js +21 -21
- package/lib/mjs/events/UserMetadataChanged.js.map +1 -1
- package/lib/mjs/events/UserMetadataDeleted.d.ts +5 -5
- package/lib/mjs/events/UserMetadataDeleted.js +21 -21
- package/lib/mjs/events/UserMetadataDeleted.js.map +1 -1
- package/lib/mjs/events/UserPasswordChanged.d.ts +5 -5
- package/lib/mjs/events/UserPasswordChanged.js +21 -21
- package/lib/mjs/events/UserPasswordChanged.js.map +1 -1
- package/lib/mjs/events/UserPropertyChanged.d.ts +7 -7
- package/lib/mjs/events/UserPropertyChanged.js +13 -13
- package/lib/mjs/events/UserPropertyChanged.js.map +1 -1
- package/lib/mjs/events/UserRoleGranted.d.ts +6 -6
- package/lib/mjs/events/UserRoleGranted.js +22 -22
- package/lib/mjs/events/UserRoleGranted.js.map +1 -1
- package/lib/mjs/events/UserRoleRevoked.d.ts +6 -6
- package/lib/mjs/events/UserRoleRevoked.js +22 -22
- package/lib/mjs/events/UserRoleRevoked.js.map +1 -1
- package/lib/mjs/events/UserUnbanned.d.ts +5 -5
- package/lib/mjs/events/UserUnbanned.js +21 -21
- package/lib/mjs/events/UserUnbanned.js.map +1 -1
- package/lib/mjs/events/index.d.ts +13 -13
- package/lib/mjs/events/index.js +13 -13
- package/lib/mjs/index.d.ts +20 -20
- package/lib/mjs/index.js +64 -64
- package/lib/mjs/index.js.map +1 -1
- package/lib/mjs/interfaces.d.ts +259 -259
- package/lib/mjs/interfaces.js +37 -37
- package/lib/mjs/interfaces.js.map +1 -1
- package/lib/mjs/jobs/UnbanUser.d.ts +9 -9
- package/lib/mjs/jobs/UnbanUser.js +40 -40
- package/lib/mjs/jobs/UnbanUser.js.map +1 -1
- package/lib/mjs/middleware.d.ts +5 -5
- package/lib/mjs/middleware.js +21 -21
- package/lib/mjs/middleware.js.map +1 -1
- package/lib/mjs/migrations/RBACInitial_2022_06_28_01_13_00.d.ts +5 -5
- package/lib/mjs/migrations/RBACInitial_2022_06_28_01_13_00.js +53 -53
- package/lib/mjs/migrations/RBACInitial_2022_06_28_01_13_00.js.map +1 -1
- package/lib/mjs/models/User.d.ts +96 -96
- package/lib/mjs/models/User.js +225 -225
- package/lib/mjs/models/User.js.map +1 -1
- package/lib/mjs/models/UserMetadata.d.ts +9 -9
- package/lib/mjs/models/UserMetadata.js +29 -29
- package/lib/mjs/models/UserMetadata.js.map +1 -1
- package/lib/mjs/models/UserTimeline.d.ts +28 -28
- package/lib/mjs/models/UserTimeline.js +43 -43
- package/lib/mjs/models/UserTimeline.js.map +1 -1
- package/lib/mjs/password.d.ts +25 -25
- package/lib/mjs/password.js +65 -65
- package/lib/mjs/password.js.map +1 -1
- package/lib/mjs/session.d.ts +33 -33
- package/lib/mjs/session.js +94 -94
- package/lib/mjs/session.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
|
@@ -1,226 +1,226 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
};
|
|
10
|
-
import { DateTime } from 'luxon';
|
|
11
|
-
import { ModelBase, Primary, Connection, Model, CreatedAt, SoftDelete, HasMany, Relation, Uuid, DateTime as DT, OneToManyRelationList, InsertBehaviour } from '@spinajs/orm';
|
|
12
|
-
import { DI } from '@spinajs/di';
|
|
13
|
-
import { UserMetadata } from './UserMetadata.js';
|
|
14
|
-
import { UserAction } from './UserTimeline.js';
|
|
15
|
-
class UserMetadataRelation extends OneToManyRelationList {
|
|
16
|
-
/**
|
|
17
|
-
*
|
|
18
|
-
* Checks if metadata exists, its DB first, it will only check DB for existence
|
|
19
|
-
*
|
|
20
|
-
* @param key - key to find
|
|
21
|
-
* @returns {true|false}
|
|
22
|
-
*/
|
|
23
|
-
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;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
*
|
|
39
|
-
* Deletes meta from DB
|
|
40
|
-
*
|
|
41
|
-
* @param key - meta key do delete or regexp
|
|
42
|
-
*/
|
|
43
|
-
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
|
-
});
|
|
56
|
-
}
|
|
57
|
-
// refresh meta
|
|
58
|
-
await this.populate();
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
function UserMetadataRelationFactory(model, desc, container) {
|
|
62
|
-
const repository = container.resolve(UserMetadataRelation, [model, desc.TargetModel, desc, []]);
|
|
63
|
-
const proxy = {
|
|
64
|
-
set: (target, prop, value) => {
|
|
65
|
-
// if we try to call method or prop that exists return it
|
|
66
|
-
if (target[prop]) {
|
|
67
|
-
return (target[prop] = value);
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
const userMeta = new UserMetadata();
|
|
71
|
-
userMeta.User.Value = model;
|
|
72
|
-
userMeta.Key = prop;
|
|
73
|
-
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;
|
|
84
|
-
},
|
|
85
|
-
get: (target, prop) => {
|
|
86
|
-
// if we try to call method or prop that exists return it
|
|
87
|
-
if (target[prop]) {
|
|
88
|
-
return target[prop];
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
// check for metadata entries
|
|
92
|
-
const found = target.find((x) => x.Key === prop);
|
|
93
|
-
if (found) {
|
|
94
|
-
return found.Value;
|
|
95
|
-
}
|
|
96
|
-
// if not found try to obtain it
|
|
97
|
-
// or return null
|
|
98
|
-
return UserMetadata.where({
|
|
99
|
-
User: model,
|
|
100
|
-
Key: prop,
|
|
101
|
-
})
|
|
102
|
-
.first()
|
|
103
|
-
.then((res) => {
|
|
104
|
-
if (res) {
|
|
105
|
-
// add to this repo for cache
|
|
106
|
-
target.push(res);
|
|
107
|
-
}
|
|
108
|
-
return res;
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
},
|
|
112
|
-
};
|
|
113
|
-
return new Proxy(repository, proxy);
|
|
114
|
-
}
|
|
115
|
-
export class UserQueryScopes {
|
|
116
|
-
/**
|
|
117
|
-
*
|
|
118
|
-
* Fetch users that are not banned, are active & email confirmed, not deleted
|
|
119
|
-
*
|
|
120
|
-
*/
|
|
121
|
-
isActiveUser() {
|
|
122
|
-
return this.where({
|
|
123
|
-
IsBanned: false,
|
|
124
|
-
IsActive: true,
|
|
125
|
-
DeletedAt: null,
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
byEmail(email) {
|
|
129
|
-
return this.where({
|
|
130
|
-
Email: email,
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
byLogin(email) {
|
|
134
|
-
return this.where({
|
|
135
|
-
Email: email,
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Base model for users used by auth and ACL system
|
|
141
|
-
*
|
|
142
|
-
* To add / extend fields simply extend this model and register as default user model in ACL service
|
|
143
|
-
*/
|
|
144
|
-
let User = class User extends ModelBase {
|
|
145
|
-
constructor() {
|
|
146
|
-
super(...arguments);
|
|
147
|
-
this._hidden = ['Password', 'Id'];
|
|
148
|
-
}
|
|
149
|
-
get IsGuest() {
|
|
150
|
-
return this.Role.indexOf('guest') !== -1;
|
|
151
|
-
}
|
|
152
|
-
can(resource, permission) {
|
|
153
|
-
const ac = DI.get('AccessControl');
|
|
154
|
-
return ac.can(this.Role)[permission](resource);
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Shorthand for check if user can read any resource
|
|
158
|
-
* @param resource
|
|
159
|
-
* @returns
|
|
160
|
-
*/
|
|
161
|
-
canReadAny(resource) {
|
|
162
|
-
return this.can(resource, 'readAny');
|
|
163
|
-
}
|
|
164
|
-
canReadOwn(resource) {
|
|
165
|
-
return this.can(resource, 'readOwn');
|
|
166
|
-
}
|
|
167
|
-
canUpdateAny(resource) {
|
|
168
|
-
return this.can(resource, 'updateAny');
|
|
169
|
-
}
|
|
170
|
-
canUpdateOwn(resource) {
|
|
171
|
-
return this.can(resource, 'updateOwn');
|
|
172
|
-
}
|
|
173
|
-
canDeleteAny(resource) {
|
|
174
|
-
return this.can(resource, 'deleteAny');
|
|
175
|
-
}
|
|
176
|
-
canDeleteOwn(resource) {
|
|
177
|
-
return this.can(resource, 'deleteOwn');
|
|
178
|
-
}
|
|
179
|
-
canCreateAny(resource) {
|
|
180
|
-
return this.can(resource, 'createAny');
|
|
181
|
-
}
|
|
182
|
-
canCreateOwn(resource) {
|
|
183
|
-
return this.can(resource, 'createOwn');
|
|
184
|
-
}
|
|
185
|
-
};
|
|
186
|
-
User._queryScopes = new UserQueryScopes();
|
|
187
|
-
__decorate([
|
|
188
|
-
Primary(),
|
|
189
|
-
__metadata("design:type", Number)
|
|
190
|
-
], User.prototype, "Id", void 0);
|
|
191
|
-
__decorate([
|
|
192
|
-
Uuid(),
|
|
193
|
-
__metadata("design:type", String)
|
|
194
|
-
], User.prototype, "Uuid", void 0);
|
|
195
|
-
__decorate([
|
|
196
|
-
CreatedAt(),
|
|
197
|
-
__metadata("design:type", DateTime)
|
|
198
|
-
], User.prototype, "CreatedAt", void 0);
|
|
199
|
-
__decorate([
|
|
200
|
-
DT(),
|
|
201
|
-
__metadata("design:type", DateTime)
|
|
202
|
-
], User.prototype, "RegisteredAt", void 0);
|
|
203
|
-
__decorate([
|
|
204
|
-
SoftDelete(),
|
|
205
|
-
__metadata("design:type", DateTime)
|
|
206
|
-
], User.prototype, "DeletedAt", void 0);
|
|
207
|
-
__decorate([
|
|
208
|
-
DT(),
|
|
209
|
-
__metadata("design:type", DateTime)
|
|
210
|
-
], User.prototype, "LastLoginAt", void 0);
|
|
211
|
-
__decorate([
|
|
212
|
-
HasMany(UserMetadata, {
|
|
213
|
-
factory: UserMetadataRelationFactory,
|
|
214
|
-
}),
|
|
215
|
-
__metadata("design:type", UserMetadataRelation)
|
|
216
|
-
], User.prototype, "Metadata", void 0);
|
|
217
|
-
__decorate([
|
|
218
|
-
HasMany(UserAction),
|
|
219
|
-
__metadata("design:type", Relation)
|
|
220
|
-
], User.prototype, "Actions", void 0);
|
|
221
|
-
User = __decorate([
|
|
222
|
-
Connection('default'),
|
|
223
|
-
Model('users')
|
|
224
|
-
], User);
|
|
225
|
-
export { User };
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { DateTime } from 'luxon';
|
|
11
|
+
import { ModelBase, Primary, Connection, Model, CreatedAt, SoftDelete, HasMany, Relation, Uuid, DateTime as DT, OneToManyRelationList, InsertBehaviour } from '@spinajs/orm';
|
|
12
|
+
import { DI } from '@spinajs/di';
|
|
13
|
+
import { UserMetadata } from './UserMetadata.js';
|
|
14
|
+
import { UserAction } from './UserTimeline.js';
|
|
15
|
+
class UserMetadataRelation extends OneToManyRelationList {
|
|
16
|
+
/**
|
|
17
|
+
*
|
|
18
|
+
* Checks if metadata exists, its DB first, it will only check DB for existence
|
|
19
|
+
*
|
|
20
|
+
* @param key - key to find
|
|
21
|
+
* @returns {true|false}
|
|
22
|
+
*/
|
|
23
|
+
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;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
*
|
|
39
|
+
* Deletes meta from DB
|
|
40
|
+
*
|
|
41
|
+
* @param key - meta key do delete or regexp
|
|
42
|
+
*/
|
|
43
|
+
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
|
+
});
|
|
56
|
+
}
|
|
57
|
+
// refresh meta
|
|
58
|
+
await this.populate();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function UserMetadataRelationFactory(model, desc, container) {
|
|
62
|
+
const repository = container.resolve(UserMetadataRelation, [model, desc.TargetModel, desc, []]);
|
|
63
|
+
const proxy = {
|
|
64
|
+
set: (target, prop, value) => {
|
|
65
|
+
// if we try to call method or prop that exists return it
|
|
66
|
+
if (target[prop]) {
|
|
67
|
+
return (target[prop] = value);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
const userMeta = new UserMetadata();
|
|
71
|
+
userMeta.User.Value = model;
|
|
72
|
+
userMeta.Key = prop;
|
|
73
|
+
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;
|
|
84
|
+
},
|
|
85
|
+
get: (target, prop) => {
|
|
86
|
+
// if we try to call method or prop that exists return it
|
|
87
|
+
if (target[prop]) {
|
|
88
|
+
return target[prop];
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
// check for metadata entries
|
|
92
|
+
const found = target.find((x) => x.Key === prop);
|
|
93
|
+
if (found) {
|
|
94
|
+
return found.Value;
|
|
95
|
+
}
|
|
96
|
+
// if not found try to obtain it
|
|
97
|
+
// or return null
|
|
98
|
+
return UserMetadata.where({
|
|
99
|
+
User: model,
|
|
100
|
+
Key: prop,
|
|
101
|
+
})
|
|
102
|
+
.first()
|
|
103
|
+
.then((res) => {
|
|
104
|
+
if (res) {
|
|
105
|
+
// add to this repo for cache
|
|
106
|
+
target.push(res);
|
|
107
|
+
}
|
|
108
|
+
return res;
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
return new Proxy(repository, proxy);
|
|
114
|
+
}
|
|
115
|
+
export class UserQueryScopes {
|
|
116
|
+
/**
|
|
117
|
+
*
|
|
118
|
+
* Fetch users that are not banned, are active & email confirmed, not deleted
|
|
119
|
+
*
|
|
120
|
+
*/
|
|
121
|
+
isActiveUser() {
|
|
122
|
+
return this.where({
|
|
123
|
+
IsBanned: false,
|
|
124
|
+
IsActive: true,
|
|
125
|
+
DeletedAt: null,
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
byEmail(email) {
|
|
129
|
+
return this.where({
|
|
130
|
+
Email: email,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
byLogin(email) {
|
|
134
|
+
return this.where({
|
|
135
|
+
Email: email,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Base model for users used by auth and ACL system
|
|
141
|
+
*
|
|
142
|
+
* To add / extend fields simply extend this model and register as default user model in ACL service
|
|
143
|
+
*/
|
|
144
|
+
let User = class User extends ModelBase {
|
|
145
|
+
constructor() {
|
|
146
|
+
super(...arguments);
|
|
147
|
+
this._hidden = ['Password', 'Id'];
|
|
148
|
+
}
|
|
149
|
+
get IsGuest() {
|
|
150
|
+
return this.Role.indexOf('guest') !== -1;
|
|
151
|
+
}
|
|
152
|
+
can(resource, permission) {
|
|
153
|
+
const ac = DI.get('AccessControl');
|
|
154
|
+
return ac.can(this.Role)[permission](resource);
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Shorthand for check if user can read any resource
|
|
158
|
+
* @param resource
|
|
159
|
+
* @returns
|
|
160
|
+
*/
|
|
161
|
+
canReadAny(resource) {
|
|
162
|
+
return this.can(resource, 'readAny');
|
|
163
|
+
}
|
|
164
|
+
canReadOwn(resource) {
|
|
165
|
+
return this.can(resource, 'readOwn');
|
|
166
|
+
}
|
|
167
|
+
canUpdateAny(resource) {
|
|
168
|
+
return this.can(resource, 'updateAny');
|
|
169
|
+
}
|
|
170
|
+
canUpdateOwn(resource) {
|
|
171
|
+
return this.can(resource, 'updateOwn');
|
|
172
|
+
}
|
|
173
|
+
canDeleteAny(resource) {
|
|
174
|
+
return this.can(resource, 'deleteAny');
|
|
175
|
+
}
|
|
176
|
+
canDeleteOwn(resource) {
|
|
177
|
+
return this.can(resource, 'deleteOwn');
|
|
178
|
+
}
|
|
179
|
+
canCreateAny(resource) {
|
|
180
|
+
return this.can(resource, 'createAny');
|
|
181
|
+
}
|
|
182
|
+
canCreateOwn(resource) {
|
|
183
|
+
return this.can(resource, 'createOwn');
|
|
184
|
+
}
|
|
185
|
+
};
|
|
186
|
+
User._queryScopes = new UserQueryScopes();
|
|
187
|
+
__decorate([
|
|
188
|
+
Primary(),
|
|
189
|
+
__metadata("design:type", Number)
|
|
190
|
+
], User.prototype, "Id", void 0);
|
|
191
|
+
__decorate([
|
|
192
|
+
Uuid(),
|
|
193
|
+
__metadata("design:type", String)
|
|
194
|
+
], User.prototype, "Uuid", void 0);
|
|
195
|
+
__decorate([
|
|
196
|
+
CreatedAt(),
|
|
197
|
+
__metadata("design:type", DateTime)
|
|
198
|
+
], User.prototype, "CreatedAt", void 0);
|
|
199
|
+
__decorate([
|
|
200
|
+
DT(),
|
|
201
|
+
__metadata("design:type", DateTime)
|
|
202
|
+
], User.prototype, "RegisteredAt", void 0);
|
|
203
|
+
__decorate([
|
|
204
|
+
SoftDelete(),
|
|
205
|
+
__metadata("design:type", DateTime)
|
|
206
|
+
], User.prototype, "DeletedAt", void 0);
|
|
207
|
+
__decorate([
|
|
208
|
+
DT(),
|
|
209
|
+
__metadata("design:type", DateTime)
|
|
210
|
+
], User.prototype, "LastLoginAt", void 0);
|
|
211
|
+
__decorate([
|
|
212
|
+
HasMany(UserMetadata, {
|
|
213
|
+
factory: UserMetadataRelationFactory,
|
|
214
|
+
}),
|
|
215
|
+
__metadata("design:type", UserMetadataRelation)
|
|
216
|
+
], User.prototype, "Metadata", void 0);
|
|
217
|
+
__decorate([
|
|
218
|
+
HasMany(UserAction),
|
|
219
|
+
__metadata("design:type", Relation)
|
|
220
|
+
], User.prototype, "Actions", void 0);
|
|
221
|
+
User = __decorate([
|
|
222
|
+
Connection('default'),
|
|
223
|
+
Model('users')
|
|
224
|
+
], User);
|
|
225
|
+
export { User };
|
|
226
226
|
//# sourceMappingURL=User.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"User.js","sourceRoot":"","sources":["../../../src/models/User.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"User.js","sourceRoot":"","sources":["../../../src/models/User.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { ModelBase, SingleRelation } from '@spinajs/orm';
|
|
2
|
-
import type { User } from './User.js';
|
|
3
|
-
export declare class UserMetadata extends ModelBase {
|
|
4
|
-
Id: number;
|
|
5
|
-
Key: string;
|
|
6
|
-
Type: 'number' | 'float' | 'string' | 'json' | 'boolean' | 'datetime';
|
|
7
|
-
Value: any;
|
|
8
|
-
User: SingleRelation<User>;
|
|
9
|
-
}
|
|
1
|
+
import { ModelBase, SingleRelation } from '@spinajs/orm';
|
|
2
|
+
import type { User } from './User.js';
|
|
3
|
+
export declare class UserMetadata extends ModelBase {
|
|
4
|
+
Id: number;
|
|
5
|
+
Key: string;
|
|
6
|
+
Type: 'number' | 'float' | 'string' | 'json' | 'boolean' | 'datetime';
|
|
7
|
+
Value: any;
|
|
8
|
+
User: SingleRelation<User>;
|
|
9
|
+
}
|
|
10
10
|
//# sourceMappingURL=UserMetadata.d.ts.map
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
};
|
|
10
|
-
import { BelongsTo, Connection, Model, ModelBase, Primary, SingleRelation, UniversalConverter } from '@spinajs/orm';
|
|
11
|
-
let UserMetadata = class UserMetadata extends ModelBase {
|
|
12
|
-
};
|
|
13
|
-
__decorate([
|
|
14
|
-
Primary(),
|
|
15
|
-
__metadata("design:type", Number)
|
|
16
|
-
], UserMetadata.prototype, "Id", void 0);
|
|
17
|
-
__decorate([
|
|
18
|
-
UniversalConverter('Type'),
|
|
19
|
-
__metadata("design:type", Object)
|
|
20
|
-
], UserMetadata.prototype, "Value", void 0);
|
|
21
|
-
__decorate([
|
|
22
|
-
BelongsTo('User'),
|
|
23
|
-
__metadata("design:type", SingleRelation)
|
|
24
|
-
], UserMetadata.prototype, "User", void 0);
|
|
25
|
-
UserMetadata = __decorate([
|
|
26
|
-
Connection('default'),
|
|
27
|
-
Model('users_metadata')
|
|
28
|
-
], UserMetadata);
|
|
29
|
-
export { UserMetadata };
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { BelongsTo, Connection, Model, ModelBase, Primary, SingleRelation, UniversalConverter } from '@spinajs/orm';
|
|
11
|
+
let UserMetadata = class UserMetadata extends ModelBase {
|
|
12
|
+
};
|
|
13
|
+
__decorate([
|
|
14
|
+
Primary(),
|
|
15
|
+
__metadata("design:type", Number)
|
|
16
|
+
], UserMetadata.prototype, "Id", void 0);
|
|
17
|
+
__decorate([
|
|
18
|
+
UniversalConverter('Type'),
|
|
19
|
+
__metadata("design:type", Object)
|
|
20
|
+
], UserMetadata.prototype, "Value", void 0);
|
|
21
|
+
__decorate([
|
|
22
|
+
BelongsTo('User'),
|
|
23
|
+
__metadata("design:type", SingleRelation)
|
|
24
|
+
], UserMetadata.prototype, "User", void 0);
|
|
25
|
+
UserMetadata = __decorate([
|
|
26
|
+
Connection('default'),
|
|
27
|
+
Model('users_metadata')
|
|
28
|
+
], UserMetadata);
|
|
29
|
+
export { UserMetadata };
|
|
30
30
|
//# sourceMappingURL=UserMetadata.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserMetadata.js","sourceRoot":"","sources":["../../../src/models/UserMetadata.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAM7G,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,SAAS;CAa1C,CAAA;
|
|
1
|
+
{"version":3,"file":"UserMetadata.js","sourceRoot":"","sources":["../../../src/models/UserMetadata.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAM7G,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,SAAS;CAa1C,CAAA;AAXQ;IADN,OAAO,EAAE;;wCACQ;AAOX;IADN,kBAAkB,CAAC,MAAM,CAAC;;2CACT;AAGX;IADN,SAAS,CAAC,MAAM,CAAC;8BACL,cAAc;0CAAO;AAZvB,YAAY;IAFxB,UAAU,CAAC,SAAS,CAAC;IACrB,KAAK,CAAC,gBAAgB,CAAC;GACX,YAAY,CAaxB"}
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
import { ModelBase, SingleRelation } from '@spinajs/orm';
|
|
2
|
-
import { DateTime } from 'luxon';
|
|
3
|
-
import type { User } from './User.js';
|
|
4
|
-
/**
|
|
5
|
-
* Timeline table for storing user actions / interactions
|
|
6
|
-
* eg. login attempts, failed logins, resource deletions, alterations etc.
|
|
7
|
-
*/
|
|
8
|
-
export declare class UserAction extends ModelBase<UserAction> {
|
|
9
|
-
Id: number;
|
|
10
|
-
User: SingleRelation<User>;
|
|
11
|
-
Action: string;
|
|
12
|
-
Data: string;
|
|
13
|
-
/**
|
|
14
|
-
* True if this timeline event is persistent
|
|
15
|
-
* eg. we clear out login attempts older than 5 days
|
|
16
|
-
* but we want to save for eg. events related to payments
|
|
17
|
-
*/
|
|
18
|
-
Persistent: boolean;
|
|
19
|
-
/**
|
|
20
|
-
* If action is performed on some kind of resource
|
|
21
|
-
* Here is stored this resource identifier or primary key in db
|
|
22
|
-
*/
|
|
23
|
-
ResourceId: number;
|
|
24
|
-
asNumber(): number;
|
|
25
|
-
asFloat(): number;
|
|
26
|
-
asJsonObject<T = {}>(): T;
|
|
27
|
-
CreatedAt: DateTime;
|
|
28
|
-
}
|
|
1
|
+
import { ModelBase, SingleRelation } from '@spinajs/orm';
|
|
2
|
+
import { DateTime } from 'luxon';
|
|
3
|
+
import type { User } from './User.js';
|
|
4
|
+
/**
|
|
5
|
+
* Timeline table for storing user actions / interactions
|
|
6
|
+
* eg. login attempts, failed logins, resource deletions, alterations etc.
|
|
7
|
+
*/
|
|
8
|
+
export declare class UserAction extends ModelBase<UserAction> {
|
|
9
|
+
Id: number;
|
|
10
|
+
User: SingleRelation<User>;
|
|
11
|
+
Action: string;
|
|
12
|
+
Data: string;
|
|
13
|
+
/**
|
|
14
|
+
* True if this timeline event is persistent
|
|
15
|
+
* eg. we clear out login attempts older than 5 days
|
|
16
|
+
* but we want to save for eg. events related to payments
|
|
17
|
+
*/
|
|
18
|
+
Persistent: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* If action is performed on some kind of resource
|
|
21
|
+
* Here is stored this resource identifier or primary key in db
|
|
22
|
+
*/
|
|
23
|
+
ResourceId: number;
|
|
24
|
+
asNumber(): number;
|
|
25
|
+
asFloat(): number;
|
|
26
|
+
asJsonObject<T = {}>(): T;
|
|
27
|
+
CreatedAt: DateTime;
|
|
28
|
+
}
|
|
29
29
|
//# sourceMappingURL=UserTimeline.d.ts.map
|