@spinajs/rbac 2.0.180 → 2.0.182
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/cjs/interfaces.d.ts
CHANGED
|
@@ -1,260 +1,260 @@
|
|
|
1
|
-
import { User } from './models/User.js';
|
|
2
|
-
import { AsyncService } from '@spinajs/di';
|
|
3
|
-
import { IDeleteQueryBuilder, IModelDescriptor, IQueryBuilder, ISelectQueryBuilder, IUpdateQueryBuilder, ModelBase } from '@spinajs/orm';
|
|
4
|
-
import { DateTime } from 'luxon';
|
|
5
|
-
declare module '@spinajs/orm' {
|
|
6
|
-
interface IModelStatic {
|
|
7
|
-
/**
|
|
8
|
-
*
|
|
9
|
-
* Alters query to check ownership of queried resource. Ensures that query returns/modify/delete only owned user data
|
|
10
|
-
*
|
|
11
|
-
* @param query query to alter
|
|
12
|
-
* @param user user to check againts ownership
|
|
13
|
-
* @param modelDescriptor resource model descriptor
|
|
14
|
-
*/
|
|
15
|
-
ensureOwnership(query: ISelectQueryBuilder<any> | IUpdateQueryBuilder<any> | IDeleteQueryBuilder<any>, user: User): IQueryBuilder;
|
|
16
|
-
/**
|
|
17
|
-
* Checks ownership of retrieved model by user
|
|
18
|
-
* @param model model
|
|
19
|
-
* @param user user to check against ownership
|
|
20
|
-
*/
|
|
21
|
-
checkOwnership<M>(model: ModelBase<M>, user: User): Promise<boolean>;
|
|
22
|
-
/**
|
|
23
|
-
* Checks ownership of model by its primary key
|
|
24
|
-
* @param model primary key to check
|
|
25
|
-
* @param user user to check against ownership
|
|
26
|
-
*/
|
|
27
|
-
checkOwnership<M>(primaryKey: string | number, user: User): Promise<boolean>;
|
|
28
|
-
/**
|
|
29
|
-
* Checks ownership of retrieved model by user
|
|
30
|
-
* @param model model / primary key to check
|
|
31
|
-
* @param user user to check against ownership
|
|
32
|
-
*/
|
|
33
|
-
checkOwnership<M>(modelOrPrimaryKey: ModelBase<M> | string | number, user: User): Promise<boolean>;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
export interface ISession {
|
|
37
|
-
/**
|
|
38
|
-
* Session identifier
|
|
39
|
-
*/
|
|
40
|
-
SessionId: string;
|
|
41
|
-
/**
|
|
42
|
-
* Expiration date. After that date session is invalid
|
|
43
|
-
*/
|
|
44
|
-
Expiration?: DateTime;
|
|
45
|
-
/**
|
|
46
|
-
* Session creation date. After that date session is invalid
|
|
47
|
-
*/
|
|
48
|
-
Creation: DateTime;
|
|
49
|
-
/**
|
|
50
|
-
* Data holds by session
|
|
51
|
-
*/
|
|
52
|
-
Data: Map<string, unknown>;
|
|
53
|
-
/**
|
|
54
|
-
*
|
|
55
|
-
* Extends session lifetime
|
|
56
|
-
*
|
|
57
|
-
* @param seconds - how mutch to extend, if value not provided, default value from config is used
|
|
58
|
-
*/
|
|
59
|
-
extend(seconds?: number): void;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Service used for generating random password & for hash raw string
|
|
63
|
-
*/
|
|
64
|
-
export declare abstract class PasswordProvider {
|
|
65
|
-
/**
|
|
66
|
-
*
|
|
67
|
-
* Checks if hash is valid for given password
|
|
68
|
-
*
|
|
69
|
-
* @param hash - hasth to validate
|
|
70
|
-
* @param password - password to validate
|
|
71
|
-
*/
|
|
72
|
-
abstract verify(hash: string, password: string): Promise<boolean>;
|
|
73
|
-
/**
|
|
74
|
-
*
|
|
75
|
-
* Generate hashed string from user password
|
|
76
|
-
*
|
|
77
|
-
* @param input - string to hash
|
|
78
|
-
*/
|
|
79
|
-
abstract hash(input: string): Promise<string>;
|
|
80
|
-
/**
|
|
81
|
-
* Generates random user password
|
|
82
|
-
*/
|
|
83
|
-
abstract generate(): string;
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Provides standard authentication based on login & password
|
|
87
|
-
*
|
|
88
|
-
* Unlike federated auth providers, it check local db for user,
|
|
89
|
-
* or some kind of other source
|
|
90
|
-
*/
|
|
91
|
-
export declare abstract class AuthProvider<U = User> {
|
|
92
|
-
/**
|
|
93
|
-
*
|
|
94
|
-
* Checks if user is already exists with given email
|
|
95
|
-
*
|
|
96
|
-
* @param emailOrUser - email or user object
|
|
97
|
-
*/
|
|
98
|
-
abstract exists(emailOrUser: U | string): Promise<boolean>;
|
|
99
|
-
/**
|
|
100
|
-
*
|
|
101
|
-
* Authenticate user with login and pass, if succeded auth result contains user object
|
|
102
|
-
*
|
|
103
|
-
* @param login - user login
|
|
104
|
-
* @param password - user password
|
|
105
|
-
*/
|
|
106
|
-
abstract authenticate(login: string, password: string): Promise<IAuthenticationResult<U>>;
|
|
107
|
-
/**
|
|
108
|
-
*
|
|
109
|
-
* Checks if user is banned
|
|
110
|
-
*
|
|
111
|
-
* @param login - user login
|
|
112
|
-
*/
|
|
113
|
-
abstract isBanned(login: string): Promise<boolean>;
|
|
114
|
-
/**
|
|
115
|
-
* Checks if user is active
|
|
116
|
-
*
|
|
117
|
-
* @param login - user login
|
|
118
|
-
*/
|
|
119
|
-
abstract isActive(login: string): Promise<boolean>;
|
|
120
|
-
/**
|
|
121
|
-
*
|
|
122
|
-
* Cheks if user is deleted
|
|
123
|
-
*
|
|
124
|
-
* @param login - user login
|
|
125
|
-
*/
|
|
126
|
-
abstract isDeleted(login: string): Promise<boolean>;
|
|
127
|
-
/**
|
|
128
|
-
*
|
|
129
|
-
* Gets user from auth store
|
|
130
|
-
*
|
|
131
|
-
* @param login - user login
|
|
132
|
-
*/
|
|
133
|
-
abstract getByLogin(login: string): Promise<U>;
|
|
134
|
-
/**
|
|
135
|
-
*
|
|
136
|
-
* Gets user from auth store
|
|
137
|
-
*
|
|
138
|
-
* @param email - user email
|
|
139
|
-
*/
|
|
140
|
-
abstract getByEmail(email: string): Promise<U>;
|
|
141
|
-
/**
|
|
142
|
-
*
|
|
143
|
-
* Gets user from auth store
|
|
144
|
-
*
|
|
145
|
-
* @param uuid - user uuid
|
|
146
|
-
*/
|
|
147
|
-
abstract getByUUID(uuid: string): Promise<U>;
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Used for implementign authentication with external services
|
|
151
|
-
* eg. slack or facebook that uses openid or similar auth
|
|
152
|
-
*
|
|
153
|
-
* NOTE: it should only authorize user, it should not register new one if
|
|
154
|
-
* not exists in use DB.
|
|
155
|
-
*/
|
|
156
|
-
export declare abstract class FederatedAuthProvider<C, U = User> {
|
|
157
|
-
/**
|
|
158
|
-
* Name of strategy
|
|
159
|
-
*/
|
|
160
|
-
abstract get Name(): string;
|
|
161
|
-
/**
|
|
162
|
-
*
|
|
163
|
-
* login service provides Host header for check
|
|
164
|
-
* whitch service is trying to authenticate
|
|
165
|
-
*
|
|
166
|
-
* Base on host adress we choose auth provider
|
|
167
|
-
*
|
|
168
|
-
* @param caller - caller url
|
|
169
|
-
*/
|
|
170
|
-
abstract callerCheck(caller: string): boolean;
|
|
171
|
-
/**
|
|
172
|
-
*
|
|
173
|
-
* Authenticates user based on response from external auth service
|
|
174
|
-
*
|
|
175
|
-
* @param credentials - provided credentials eg. data with token
|
|
176
|
-
*/
|
|
177
|
-
abstract authenticate(credentials: C): Promise<IAuthenticationResult<U>>;
|
|
178
|
-
}
|
|
179
|
-
export declare abstract class SessionProvider<T = ISession> extends AsyncService {
|
|
180
|
-
/**
|
|
181
|
-
*
|
|
182
|
-
* Load session from store. If not exists or expired returns null
|
|
183
|
-
*
|
|
184
|
-
* @param sessionId - session identifier
|
|
185
|
-
*/
|
|
186
|
-
abstract restore(sessionId: string): Promise<T>;
|
|
187
|
-
/**
|
|
188
|
-
*
|
|
189
|
-
* Deletes session from store
|
|
190
|
-
*
|
|
191
|
-
* @param sessionId - session to delete
|
|
192
|
-
*/
|
|
193
|
-
abstract delete(sessionId: string): Promise<void>;
|
|
194
|
-
/**
|
|
195
|
-
*
|
|
196
|
-
* Adds or updates session in store
|
|
197
|
-
*
|
|
198
|
-
* @param session - session to update / insert
|
|
199
|
-
*/
|
|
200
|
-
abstract save(session: ISession): Promise<void>;
|
|
201
|
-
/**
|
|
202
|
-
*
|
|
203
|
-
* Updates session data for given id
|
|
204
|
-
*
|
|
205
|
-
* @param id - session id
|
|
206
|
-
* @param data - key - value pair of data
|
|
207
|
-
*/
|
|
208
|
-
abstract save(id: string, data: object): Promise<void>;
|
|
209
|
-
/**
|
|
210
|
-
*
|
|
211
|
-
* Updates only EXPIRATION TIME of session, not changing other data
|
|
212
|
-
*
|
|
213
|
-
* @param session - session to update
|
|
214
|
-
*/
|
|
215
|
-
abstract touch(session: ISession): Promise<void>;
|
|
216
|
-
/**
|
|
217
|
-
*
|
|
218
|
-
* Deletes all session table data
|
|
219
|
-
*
|
|
220
|
-
*/
|
|
221
|
-
abstract truncate(): Promise<void>;
|
|
222
|
-
}
|
|
223
|
-
export declare enum AthenticationErrorCodes {
|
|
224
|
-
E_USER_BANNED = "E_USER_BANNED",
|
|
225
|
-
E_USER_NOT_ACTIVE = "E_USER_NOT_ACTIVE",
|
|
226
|
-
E_INVALID_CREDENTIALS = "E_INVALID_CREDENTIALS",
|
|
227
|
-
E_LOGIN_ATTEMPTS_EXCEEDED = "E_LOGIN_ATTEMPTS_EXCEEDED"
|
|
228
|
-
}
|
|
229
|
-
export interface IRbacModelDescriptor extends IModelDescriptor {
|
|
230
|
-
RbacResource: string;
|
|
231
|
-
}
|
|
232
|
-
/**
|
|
233
|
-
* Authentication result
|
|
234
|
-
*/
|
|
235
|
-
export interface IAuthenticationResult<U = User> {
|
|
236
|
-
/**
|
|
237
|
-
* If auth is succeded, user field is not null
|
|
238
|
-
*/
|
|
239
|
-
User?: U;
|
|
240
|
-
/**
|
|
241
|
-
* If result failed, Error field is not null
|
|
242
|
-
*/
|
|
243
|
-
Error?: {
|
|
244
|
-
/**
|
|
245
|
-
* Error code eg E_IS_BANNED
|
|
246
|
-
*/
|
|
247
|
-
Code: string | AthenticationErrorCodes;
|
|
248
|
-
/**
|
|
249
|
-
* Optional message
|
|
250
|
-
*/
|
|
251
|
-
Message?: string;
|
|
252
|
-
};
|
|
253
|
-
}
|
|
254
|
-
/**
|
|
255
|
-
* Interface to provide implementation of password rule validation
|
|
256
|
-
*/
|
|
257
|
-
export declare abstract class PasswordValidationProvider {
|
|
258
|
-
abstract check(password: string): boolean;
|
|
259
|
-
}
|
|
1
|
+
import { User } from './models/User.js';
|
|
2
|
+
import { AsyncService } from '@spinajs/di';
|
|
3
|
+
import { IDeleteQueryBuilder, IModelDescriptor, IQueryBuilder, ISelectQueryBuilder, IUpdateQueryBuilder, ModelBase } from '@spinajs/orm';
|
|
4
|
+
import { DateTime } from 'luxon';
|
|
5
|
+
declare module '@spinajs/orm' {
|
|
6
|
+
interface IModelStatic {
|
|
7
|
+
/**
|
|
8
|
+
*
|
|
9
|
+
* Alters query to check ownership of queried resource. Ensures that query returns/modify/delete only owned user data
|
|
10
|
+
*
|
|
11
|
+
* @param query query to alter
|
|
12
|
+
* @param user user to check againts ownership
|
|
13
|
+
* @param modelDescriptor resource model descriptor
|
|
14
|
+
*/
|
|
15
|
+
ensureOwnership(query: ISelectQueryBuilder<any> | IUpdateQueryBuilder<any> | IDeleteQueryBuilder<any>, user: User): IQueryBuilder;
|
|
16
|
+
/**
|
|
17
|
+
* Checks ownership of retrieved model by user
|
|
18
|
+
* @param model model
|
|
19
|
+
* @param user user to check against ownership
|
|
20
|
+
*/
|
|
21
|
+
checkOwnership<M>(model: ModelBase<M>, user: User): Promise<boolean>;
|
|
22
|
+
/**
|
|
23
|
+
* Checks ownership of model by its primary key
|
|
24
|
+
* @param model primary key to check
|
|
25
|
+
* @param user user to check against ownership
|
|
26
|
+
*/
|
|
27
|
+
checkOwnership<M>(primaryKey: string | number, user: User): Promise<boolean>;
|
|
28
|
+
/**
|
|
29
|
+
* Checks ownership of retrieved model by user
|
|
30
|
+
* @param model model / primary key to check
|
|
31
|
+
* @param user user to check against ownership
|
|
32
|
+
*/
|
|
33
|
+
checkOwnership<M>(modelOrPrimaryKey: ModelBase<M> | string | number, user: User): Promise<boolean>;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export interface ISession {
|
|
37
|
+
/**
|
|
38
|
+
* Session identifier
|
|
39
|
+
*/
|
|
40
|
+
SessionId: string;
|
|
41
|
+
/**
|
|
42
|
+
* Expiration date. After that date session is invalid
|
|
43
|
+
*/
|
|
44
|
+
Expiration?: DateTime;
|
|
45
|
+
/**
|
|
46
|
+
* Session creation date. After that date session is invalid
|
|
47
|
+
*/
|
|
48
|
+
Creation: DateTime;
|
|
49
|
+
/**
|
|
50
|
+
* Data holds by session
|
|
51
|
+
*/
|
|
52
|
+
Data: Map<string, unknown>;
|
|
53
|
+
/**
|
|
54
|
+
*
|
|
55
|
+
* Extends session lifetime
|
|
56
|
+
*
|
|
57
|
+
* @param seconds - how mutch to extend, if value not provided, default value from config is used
|
|
58
|
+
*/
|
|
59
|
+
extend(seconds?: number): void;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Service used for generating random password & for hash raw string
|
|
63
|
+
*/
|
|
64
|
+
export declare abstract class PasswordProvider {
|
|
65
|
+
/**
|
|
66
|
+
*
|
|
67
|
+
* Checks if hash is valid for given password
|
|
68
|
+
*
|
|
69
|
+
* @param hash - hasth to validate
|
|
70
|
+
* @param password - password to validate
|
|
71
|
+
*/
|
|
72
|
+
abstract verify(hash: string, password: string): Promise<boolean>;
|
|
73
|
+
/**
|
|
74
|
+
*
|
|
75
|
+
* Generate hashed string from user password
|
|
76
|
+
*
|
|
77
|
+
* @param input - string to hash
|
|
78
|
+
*/
|
|
79
|
+
abstract hash(input: string): Promise<string>;
|
|
80
|
+
/**
|
|
81
|
+
* Generates random user password
|
|
82
|
+
*/
|
|
83
|
+
abstract generate(): string;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Provides standard authentication based on login & password
|
|
87
|
+
*
|
|
88
|
+
* Unlike federated auth providers, it check local db for user,
|
|
89
|
+
* or some kind of other source
|
|
90
|
+
*/
|
|
91
|
+
export declare abstract class AuthProvider<U = User> {
|
|
92
|
+
/**
|
|
93
|
+
*
|
|
94
|
+
* Checks if user is already exists with given email
|
|
95
|
+
*
|
|
96
|
+
* @param emailOrUser - email or user object
|
|
97
|
+
*/
|
|
98
|
+
abstract exists(emailOrUser: U | string): Promise<boolean>;
|
|
99
|
+
/**
|
|
100
|
+
*
|
|
101
|
+
* Authenticate user with login and pass, if succeded auth result contains user object
|
|
102
|
+
*
|
|
103
|
+
* @param login - user login
|
|
104
|
+
* @param password - user password
|
|
105
|
+
*/
|
|
106
|
+
abstract authenticate(login: string, password: string): Promise<IAuthenticationResult<U>>;
|
|
107
|
+
/**
|
|
108
|
+
*
|
|
109
|
+
* Checks if user is banned
|
|
110
|
+
*
|
|
111
|
+
* @param login - user login
|
|
112
|
+
*/
|
|
113
|
+
abstract isBanned(login: string): Promise<boolean>;
|
|
114
|
+
/**
|
|
115
|
+
* Checks if user is active
|
|
116
|
+
*
|
|
117
|
+
* @param login - user login
|
|
118
|
+
*/
|
|
119
|
+
abstract isActive(login: string): Promise<boolean>;
|
|
120
|
+
/**
|
|
121
|
+
*
|
|
122
|
+
* Cheks if user is deleted
|
|
123
|
+
*
|
|
124
|
+
* @param login - user login
|
|
125
|
+
*/
|
|
126
|
+
abstract isDeleted(login: string): Promise<boolean>;
|
|
127
|
+
/**
|
|
128
|
+
*
|
|
129
|
+
* Gets user from auth store
|
|
130
|
+
*
|
|
131
|
+
* @param login - user login
|
|
132
|
+
*/
|
|
133
|
+
abstract getByLogin(login: string): Promise<U>;
|
|
134
|
+
/**
|
|
135
|
+
*
|
|
136
|
+
* Gets user from auth store
|
|
137
|
+
*
|
|
138
|
+
* @param email - user email
|
|
139
|
+
*/
|
|
140
|
+
abstract getByEmail(email: string): Promise<U>;
|
|
141
|
+
/**
|
|
142
|
+
*
|
|
143
|
+
* Gets user from auth store
|
|
144
|
+
*
|
|
145
|
+
* @param uuid - user uuid
|
|
146
|
+
*/
|
|
147
|
+
abstract getByUUID(uuid: string): Promise<U>;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Used for implementign authentication with external services
|
|
151
|
+
* eg. slack or facebook that uses openid or similar auth
|
|
152
|
+
*
|
|
153
|
+
* NOTE: it should only authorize user, it should not register new one if
|
|
154
|
+
* not exists in use DB.
|
|
155
|
+
*/
|
|
156
|
+
export declare abstract class FederatedAuthProvider<C, U = User> {
|
|
157
|
+
/**
|
|
158
|
+
* Name of strategy
|
|
159
|
+
*/
|
|
160
|
+
abstract get Name(): string;
|
|
161
|
+
/**
|
|
162
|
+
*
|
|
163
|
+
* login service provides Host header for check
|
|
164
|
+
* whitch service is trying to authenticate
|
|
165
|
+
*
|
|
166
|
+
* Base on host adress we choose auth provider
|
|
167
|
+
*
|
|
168
|
+
* @param caller - caller url
|
|
169
|
+
*/
|
|
170
|
+
abstract callerCheck(caller: string): boolean;
|
|
171
|
+
/**
|
|
172
|
+
*
|
|
173
|
+
* Authenticates user based on response from external auth service
|
|
174
|
+
*
|
|
175
|
+
* @param credentials - provided credentials eg. data with token
|
|
176
|
+
*/
|
|
177
|
+
abstract authenticate(credentials: C): Promise<IAuthenticationResult<U>>;
|
|
178
|
+
}
|
|
179
|
+
export declare abstract class SessionProvider<T = ISession> extends AsyncService {
|
|
180
|
+
/**
|
|
181
|
+
*
|
|
182
|
+
* Load session from store. If not exists or expired returns null
|
|
183
|
+
*
|
|
184
|
+
* @param sessionId - session identifier
|
|
185
|
+
*/
|
|
186
|
+
abstract restore(sessionId: string): Promise<T>;
|
|
187
|
+
/**
|
|
188
|
+
*
|
|
189
|
+
* Deletes session from store
|
|
190
|
+
*
|
|
191
|
+
* @param sessionId - session to delete
|
|
192
|
+
*/
|
|
193
|
+
abstract delete(sessionId: string): Promise<void>;
|
|
194
|
+
/**
|
|
195
|
+
*
|
|
196
|
+
* Adds or updates session in store
|
|
197
|
+
*
|
|
198
|
+
* @param session - session to update / insert
|
|
199
|
+
*/
|
|
200
|
+
abstract save(session: ISession): Promise<void>;
|
|
201
|
+
/**
|
|
202
|
+
*
|
|
203
|
+
* Updates session data for given id
|
|
204
|
+
*
|
|
205
|
+
* @param id - session id
|
|
206
|
+
* @param data - key - value pair of data
|
|
207
|
+
*/
|
|
208
|
+
abstract save(id: string, data: object): Promise<void>;
|
|
209
|
+
/**
|
|
210
|
+
*
|
|
211
|
+
* Updates only EXPIRATION TIME of session, not changing other data
|
|
212
|
+
*
|
|
213
|
+
* @param session - session to update
|
|
214
|
+
*/
|
|
215
|
+
abstract touch(session: ISession): Promise<void>;
|
|
216
|
+
/**
|
|
217
|
+
*
|
|
218
|
+
* Deletes all session table data
|
|
219
|
+
*
|
|
220
|
+
*/
|
|
221
|
+
abstract truncate(): Promise<void>;
|
|
222
|
+
}
|
|
223
|
+
export declare enum AthenticationErrorCodes {
|
|
224
|
+
E_USER_BANNED = "E_USER_BANNED",
|
|
225
|
+
E_USER_NOT_ACTIVE = "E_USER_NOT_ACTIVE",
|
|
226
|
+
E_INVALID_CREDENTIALS = "E_INVALID_CREDENTIALS",
|
|
227
|
+
E_LOGIN_ATTEMPTS_EXCEEDED = "E_LOGIN_ATTEMPTS_EXCEEDED"
|
|
228
|
+
}
|
|
229
|
+
export interface IRbacModelDescriptor extends IModelDescriptor {
|
|
230
|
+
RbacResource: string;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Authentication result
|
|
234
|
+
*/
|
|
235
|
+
export interface IAuthenticationResult<U = User> {
|
|
236
|
+
/**
|
|
237
|
+
* If auth is succeded, user field is not null
|
|
238
|
+
*/
|
|
239
|
+
User?: U;
|
|
240
|
+
/**
|
|
241
|
+
* If result failed, Error field is not null
|
|
242
|
+
*/
|
|
243
|
+
Error?: {
|
|
244
|
+
/**
|
|
245
|
+
* Error code eg E_IS_BANNED
|
|
246
|
+
*/
|
|
247
|
+
Code: string | AthenticationErrorCodes;
|
|
248
|
+
/**
|
|
249
|
+
* Optional message
|
|
250
|
+
*/
|
|
251
|
+
Message?: string;
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Interface to provide implementation of password rule validation
|
|
256
|
+
*/
|
|
257
|
+
export declare abstract class PasswordValidationProvider {
|
|
258
|
+
abstract check(password: string): boolean;
|
|
259
|
+
}
|
|
260
260
|
//# sourceMappingURL=interfaces.d.ts.map
|
package/lib/cjs/interfaces.js
CHANGED
|
@@ -1,46 +1,46 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PasswordValidationProvider = exports.AthenticationErrorCodes = exports.SessionProvider = exports.FederatedAuthProvider = exports.AuthProvider = exports.PasswordProvider = void 0;
|
|
4
|
-
const di_1 = require("@spinajs/di");
|
|
5
|
-
/**
|
|
6
|
-
* Service used for generating random password & for hash raw string
|
|
7
|
-
*/
|
|
8
|
-
class PasswordProvider {
|
|
9
|
-
}
|
|
10
|
-
exports.PasswordProvider = PasswordProvider;
|
|
11
|
-
/**
|
|
12
|
-
* Provides standard authentication based on login & password
|
|
13
|
-
*
|
|
14
|
-
* Unlike federated auth providers, it check local db for user,
|
|
15
|
-
* or some kind of other source
|
|
16
|
-
*/
|
|
17
|
-
class AuthProvider {
|
|
18
|
-
}
|
|
19
|
-
exports.AuthProvider = AuthProvider;
|
|
20
|
-
/**
|
|
21
|
-
* Used for implementign authentication with external services
|
|
22
|
-
* eg. slack or facebook that uses openid or similar auth
|
|
23
|
-
*
|
|
24
|
-
* NOTE: it should only authorize user, it should not register new one if
|
|
25
|
-
* not exists in use DB.
|
|
26
|
-
*/
|
|
27
|
-
class FederatedAuthProvider {
|
|
28
|
-
}
|
|
29
|
-
exports.FederatedAuthProvider = FederatedAuthProvider;
|
|
30
|
-
class SessionProvider extends di_1.AsyncService {
|
|
31
|
-
}
|
|
32
|
-
exports.SessionProvider = SessionProvider;
|
|
33
|
-
var AthenticationErrorCodes;
|
|
34
|
-
(function (AthenticationErrorCodes) {
|
|
35
|
-
AthenticationErrorCodes["E_USER_BANNED"] = "E_USER_BANNED";
|
|
36
|
-
AthenticationErrorCodes["E_USER_NOT_ACTIVE"] = "E_USER_NOT_ACTIVE";
|
|
37
|
-
AthenticationErrorCodes["E_INVALID_CREDENTIALS"] = "E_INVALID_CREDENTIALS";
|
|
38
|
-
AthenticationErrorCodes["E_LOGIN_ATTEMPTS_EXCEEDED"] = "E_LOGIN_ATTEMPTS_EXCEEDED";
|
|
39
|
-
})(AthenticationErrorCodes
|
|
40
|
-
/**
|
|
41
|
-
* Interface to provide implementation of password rule validation
|
|
42
|
-
*/
|
|
43
|
-
class PasswordValidationProvider {
|
|
44
|
-
}
|
|
45
|
-
exports.PasswordValidationProvider = PasswordValidationProvider;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PasswordValidationProvider = exports.AthenticationErrorCodes = exports.SessionProvider = exports.FederatedAuthProvider = exports.AuthProvider = exports.PasswordProvider = void 0;
|
|
4
|
+
const di_1 = require("@spinajs/di");
|
|
5
|
+
/**
|
|
6
|
+
* Service used for generating random password & for hash raw string
|
|
7
|
+
*/
|
|
8
|
+
class PasswordProvider {
|
|
9
|
+
}
|
|
10
|
+
exports.PasswordProvider = PasswordProvider;
|
|
11
|
+
/**
|
|
12
|
+
* Provides standard authentication based on login & password
|
|
13
|
+
*
|
|
14
|
+
* Unlike federated auth providers, it check local db for user,
|
|
15
|
+
* or some kind of other source
|
|
16
|
+
*/
|
|
17
|
+
class AuthProvider {
|
|
18
|
+
}
|
|
19
|
+
exports.AuthProvider = AuthProvider;
|
|
20
|
+
/**
|
|
21
|
+
* Used for implementign authentication with external services
|
|
22
|
+
* eg. slack or facebook that uses openid or similar auth
|
|
23
|
+
*
|
|
24
|
+
* NOTE: it should only authorize user, it should not register new one if
|
|
25
|
+
* not exists in use DB.
|
|
26
|
+
*/
|
|
27
|
+
class FederatedAuthProvider {
|
|
28
|
+
}
|
|
29
|
+
exports.FederatedAuthProvider = FederatedAuthProvider;
|
|
30
|
+
class SessionProvider extends di_1.AsyncService {
|
|
31
|
+
}
|
|
32
|
+
exports.SessionProvider = SessionProvider;
|
|
33
|
+
var AthenticationErrorCodes;
|
|
34
|
+
(function (AthenticationErrorCodes) {
|
|
35
|
+
AthenticationErrorCodes["E_USER_BANNED"] = "E_USER_BANNED";
|
|
36
|
+
AthenticationErrorCodes["E_USER_NOT_ACTIVE"] = "E_USER_NOT_ACTIVE";
|
|
37
|
+
AthenticationErrorCodes["E_INVALID_CREDENTIALS"] = "E_INVALID_CREDENTIALS";
|
|
38
|
+
AthenticationErrorCodes["E_LOGIN_ATTEMPTS_EXCEEDED"] = "E_LOGIN_ATTEMPTS_EXCEEDED";
|
|
39
|
+
})(AthenticationErrorCodes || (exports.AthenticationErrorCodes = AthenticationErrorCodes = {}));
|
|
40
|
+
/**
|
|
41
|
+
* Interface to provide implementation of password rule validation
|
|
42
|
+
*/
|
|
43
|
+
class PasswordValidationProvider {
|
|
44
|
+
}
|
|
45
|
+
exports.PasswordValidationProvider = PasswordValidationProvider;
|
|
46
46
|
//# sourceMappingURL=interfaces.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":";;;AACA,oCAA2C;AAqE3C;;GAEG;AACH,MAAsB,gBAAgB;CAsBrC;AAtBD,4CAsBC;AAED;;;;;GAKG;AACH,MAAsB,YAAY;CAgEjC;AAhED,oCAgEC;AAED;;;;;;GAMG;AACH,MAAsB,qBAAqB;CAwB1C;AAxBD,sDAwBC;AAED,MAAsB,eAA8B,SAAQ,iBAAY;CAgDvE;AAhDD,0CAgDC;AAED,IAAY,uBAKX;AALD,WAAY,uBAAuB;IACjC,0DAA+B,CAAA;IAC/B,kEAAuC,CAAA;IACvC,0EAA+C,CAAA;IAC/C,kFAAuD,CAAA;AACzD,CAAC,EALW,uBAAuB,
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":";;;AACA,oCAA2C;AAqE3C;;GAEG;AACH,MAAsB,gBAAgB;CAsBrC;AAtBD,4CAsBC;AAED;;;;;GAKG;AACH,MAAsB,YAAY;CAgEjC;AAhED,oCAgEC;AAED;;;;;;GAMG;AACH,MAAsB,qBAAqB;CAwB1C;AAxBD,sDAwBC;AAED,MAAsB,eAA8B,SAAQ,iBAAY;CAgDvE;AAhDD,0CAgDC;AAED,IAAY,uBAKX;AALD,WAAY,uBAAuB;IACjC,0DAA+B,CAAA;IAC/B,kEAAuC,CAAA;IACvC,0EAA+C,CAAA;IAC/C,kFAAuD,CAAA;AACzD,CAAC,EALW,uBAAuB,uCAAvB,uBAAuB,QAKlC;AA+BD;;GAEG;AACH,MAAsB,0BAA0B;CAE/C;AAFD,gEAEC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { Log } from '@spinajs/log';
|
|
2
|
-
import { QueueService, QueueJob } from '@spinajs/queue';
|
|
3
|
-
export declare class UnbanUser extends QueueJob {
|
|
4
|
-
UserUUID: string;
|
|
5
|
-
protected Log: Log;
|
|
6
|
-
protected Queue: QueueService;
|
|
7
|
-
constructor(UserUUID: string);
|
|
8
|
-
execute(): Promise<void>;
|
|
9
|
-
}
|
|
1
|
+
import { Log } from '@spinajs/log';
|
|
2
|
+
import { QueueService, QueueJob } from '@spinajs/queue';
|
|
3
|
+
export declare class UnbanUser extends QueueJob {
|
|
4
|
+
UserUUID: string;
|
|
5
|
+
protected Log: Log;
|
|
6
|
+
protected Queue: QueueService;
|
|
7
|
+
constructor(UserUUID: string);
|
|
8
|
+
execute(): Promise<void>;
|
|
9
|
+
}
|
|
10
10
|
//# sourceMappingURL=UnbanUser.d.ts.map
|