@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.
Files changed (225) hide show
  1. package/lib/cjs/auth.d.ts +15 -15
  2. package/lib/cjs/auth.js +103 -103
  3. package/lib/cjs/auth.js.map +1 -1
  4. package/lib/cjs/cli/ActivateUser.d.ts +8 -8
  5. package/lib/cjs/cli/ActivateUser.js +47 -47
  6. package/lib/cjs/cli/ActivateUser.js.map +1 -1
  7. package/lib/cjs/cli/BanUser.d.ts +8 -8
  8. package/lib/cjs/cli/BanUser.js +63 -63
  9. package/lib/cjs/cli/BanUser.js.map +1 -1
  10. package/lib/cjs/cli/ChangeUserPassword.d.ts +11 -11
  11. package/lib/cjs/cli/ChangeUserPassword.js +58 -58
  12. package/lib/cjs/cli/ChangeUserPassword.js.map +1 -1
  13. package/lib/cjs/cli/ClearUserTimelineSchedule.d.ts +8 -8
  14. package/lib/cjs/cli/ClearUserTimelineSchedule.js +54 -54
  15. package/lib/cjs/cli/ClearUserTimelineSchedule.js.map +1 -1
  16. package/lib/cjs/cli/CreateUser.d.ts +17 -17
  17. package/lib/cjs/cli/CreateUser.js +69 -69
  18. package/lib/cjs/cli/CreateUser.js.map +1 -1
  19. package/lib/cjs/cli/DeleteUser.d.ts +8 -8
  20. package/lib/cjs/cli/DeleteUser.js +40 -40
  21. package/lib/cjs/cli/DeleteUser.js.map +1 -1
  22. package/lib/cjs/cli/FindUser.d.ts +12 -12
  23. package/lib/cjs/cli/FindUser.js +44 -44
  24. package/lib/cjs/cli/FindUser.js.map +1 -1
  25. package/lib/cjs/cli/GrantUserRole.d.ts +8 -8
  26. package/lib/cjs/cli/GrantUserRole.js +47 -47
  27. package/lib/cjs/cli/GrantUserRole.js.map +1 -1
  28. package/lib/cjs/cli/LatestUserEvents.d.ts +6 -6
  29. package/lib/cjs/cli/LatestUserEvents.js +37 -37
  30. package/lib/cjs/cli/LatestUserEvents.js.map +1 -1
  31. package/lib/cjs/cli/RevokeUserRole.d.ts +8 -8
  32. package/lib/cjs/cli/RevokeUserRole.js +46 -46
  33. package/lib/cjs/cli/RevokeUserRole.js.map +1 -1
  34. package/lib/cjs/cli/UnbanUserSchedule.d.ts +8 -8
  35. package/lib/cjs/cli/UnbanUserSchedule.js +54 -54
  36. package/lib/cjs/cli/UnbanUserSchedule.js.map +1 -1
  37. package/lib/cjs/config/rbac.d.ts +115 -115
  38. package/lib/cjs/config/rbac.js +120 -120
  39. package/lib/cjs/decorators/Resource.d.ts +8 -8
  40. package/lib/cjs/decorators/Resource.js +17 -17
  41. package/lib/cjs/events/NewUser.d.ts +12 -12
  42. package/lib/cjs/events/NewUser.js +16 -16
  43. package/lib/cjs/events/NewUser.js.map +1 -1
  44. package/lib/cjs/events/UserActivated.d.ts +5 -5
  45. package/lib/cjs/events/UserActivated.js +24 -24
  46. package/lib/cjs/events/UserActivated.js.map +1 -1
  47. package/lib/cjs/events/UserBanned.d.ts +6 -6
  48. package/lib/cjs/events/UserBanned.js +25 -25
  49. package/lib/cjs/events/UserBanned.js.map +1 -1
  50. package/lib/cjs/events/UserDeactivated.d.ts +5 -5
  51. package/lib/cjs/events/UserDeactivated.js +24 -24
  52. package/lib/cjs/events/UserDeactivated.js.map +1 -1
  53. package/lib/cjs/events/UserDeleted.d.ts +5 -5
  54. package/lib/cjs/events/UserDeleted.js +24 -24
  55. package/lib/cjs/events/UserDeleted.js.map +1 -1
  56. package/lib/cjs/events/UserMetadataAdded.d.ts +5 -5
  57. package/lib/cjs/events/UserMetadataAdded.js +24 -24
  58. package/lib/cjs/events/UserMetadataAdded.js.map +1 -1
  59. package/lib/cjs/events/UserMetadataChanged.d.ts +5 -5
  60. package/lib/cjs/events/UserMetadataChanged.js +24 -24
  61. package/lib/cjs/events/UserMetadataChanged.js.map +1 -1
  62. package/lib/cjs/events/UserMetadataDeleted.d.ts +5 -5
  63. package/lib/cjs/events/UserMetadataDeleted.js +24 -24
  64. package/lib/cjs/events/UserMetadataDeleted.js.map +1 -1
  65. package/lib/cjs/events/UserPasswordChanged.d.ts +5 -5
  66. package/lib/cjs/events/UserPasswordChanged.js +24 -24
  67. package/lib/cjs/events/UserPasswordChanged.js.map +1 -1
  68. package/lib/cjs/events/UserPropertyChanged.d.ts +7 -7
  69. package/lib/cjs/events/UserPropertyChanged.js +16 -16
  70. package/lib/cjs/events/UserPropertyChanged.js.map +1 -1
  71. package/lib/cjs/events/UserRoleGranted.d.ts +6 -6
  72. package/lib/cjs/events/UserRoleGranted.js +25 -25
  73. package/lib/cjs/events/UserRoleGranted.js.map +1 -1
  74. package/lib/cjs/events/UserRoleRevoked.d.ts +6 -6
  75. package/lib/cjs/events/UserRoleRevoked.js +25 -25
  76. package/lib/cjs/events/UserRoleRevoked.js.map +1 -1
  77. package/lib/cjs/events/UserUnbanned.d.ts +5 -5
  78. package/lib/cjs/events/UserUnbanned.js +24 -24
  79. package/lib/cjs/events/UserUnbanned.js.map +1 -1
  80. package/lib/cjs/events/index.d.ts +13 -13
  81. package/lib/cjs/events/index.js +29 -29
  82. package/lib/cjs/index.d.ts +20 -20
  83. package/lib/cjs/index.js +85 -85
  84. package/lib/cjs/index.js.map +1 -1
  85. package/lib/cjs/interfaces.d.ts +259 -259
  86. package/lib/cjs/interfaces.js +45 -45
  87. package/lib/cjs/interfaces.js.map +1 -1
  88. package/lib/cjs/jobs/UnbanUser.d.ts +9 -9
  89. package/lib/cjs/jobs/UnbanUser.js +43 -43
  90. package/lib/cjs/jobs/UnbanUser.js.map +1 -1
  91. package/lib/cjs/middleware.d.ts +5 -5
  92. package/lib/cjs/middleware.js +24 -24
  93. package/lib/cjs/middleware.js.map +1 -1
  94. package/lib/cjs/migrations/RBACInitial_2022_06_28_01_13_00.d.ts +5 -5
  95. package/lib/cjs/migrations/RBACInitial_2022_06_28_01_13_00.js +56 -56
  96. package/lib/cjs/migrations/RBACInitial_2022_06_28_01_13_00.js.map +1 -1
  97. package/lib/cjs/models/User.d.ts +96 -96
  98. package/lib/cjs/models/User.js +229 -229
  99. package/lib/cjs/models/User.js.map +1 -1
  100. package/lib/cjs/models/UserMetadata.d.ts +9 -9
  101. package/lib/cjs/models/UserMetadata.js +32 -32
  102. package/lib/cjs/models/UserMetadata.js.map +1 -1
  103. package/lib/cjs/models/UserTimeline.d.ts +28 -28
  104. package/lib/cjs/models/UserTimeline.js +46 -46
  105. package/lib/cjs/models/UserTimeline.js.map +1 -1
  106. package/lib/cjs/password.d.ts +25 -25
  107. package/lib/cjs/password.js +91 -91
  108. package/lib/cjs/password.js.map +1 -1
  109. package/lib/cjs/session.d.ts +33 -33
  110. package/lib/cjs/session.js +100 -100
  111. package/lib/cjs/session.js.map +1 -1
  112. package/lib/mjs/auth.d.ts +15 -15
  113. package/lib/mjs/auth.js +100 -100
  114. package/lib/mjs/auth.js.map +1 -1
  115. package/lib/mjs/cli/ActivateUser.d.ts +8 -8
  116. package/lib/mjs/cli/ActivateUser.js +44 -44
  117. package/lib/mjs/cli/ActivateUser.js.map +1 -1
  118. package/lib/mjs/cli/BanUser.d.ts +8 -8
  119. package/lib/mjs/cli/BanUser.js +60 -60
  120. package/lib/mjs/cli/BanUser.js.map +1 -1
  121. package/lib/mjs/cli/ChangeUserPassword.d.ts +11 -11
  122. package/lib/mjs/cli/ChangeUserPassword.js +55 -55
  123. package/lib/mjs/cli/ChangeUserPassword.js.map +1 -1
  124. package/lib/mjs/cli/ClearUserTimelineSchedule.d.ts +8 -8
  125. package/lib/mjs/cli/ClearUserTimelineSchedule.js +51 -51
  126. package/lib/mjs/cli/ClearUserTimelineSchedule.js.map +1 -1
  127. package/lib/mjs/cli/CreateUser.d.ts +17 -17
  128. package/lib/mjs/cli/CreateUser.js +66 -66
  129. package/lib/mjs/cli/CreateUser.js.map +1 -1
  130. package/lib/mjs/cli/DeleteUser.d.ts +8 -8
  131. package/lib/mjs/cli/DeleteUser.js +37 -37
  132. package/lib/mjs/cli/DeleteUser.js.map +1 -1
  133. package/lib/mjs/cli/FindUser.d.ts +12 -12
  134. package/lib/mjs/cli/FindUser.js +41 -41
  135. package/lib/mjs/cli/FindUser.js.map +1 -1
  136. package/lib/mjs/cli/GrantUserRole.d.ts +8 -8
  137. package/lib/mjs/cli/GrantUserRole.js +41 -41
  138. package/lib/mjs/cli/GrantUserRole.js.map +1 -1
  139. package/lib/mjs/cli/LatestUserEvents.d.ts +6 -6
  140. package/lib/mjs/cli/LatestUserEvents.js +34 -34
  141. package/lib/mjs/cli/LatestUserEvents.js.map +1 -1
  142. package/lib/mjs/cli/RevokeUserRole.d.ts +8 -8
  143. package/lib/mjs/cli/RevokeUserRole.js +40 -40
  144. package/lib/mjs/cli/RevokeUserRole.js.map +1 -1
  145. package/lib/mjs/cli/UnbanUserSchedule.d.ts +8 -8
  146. package/lib/mjs/cli/UnbanUserSchedule.js +51 -51
  147. package/lib/mjs/cli/UnbanUserSchedule.js.map +1 -1
  148. package/lib/mjs/config/rbac.d.ts +115 -115
  149. package/lib/mjs/config/rbac.js +118 -118
  150. package/lib/mjs/decorators/Resource.d.ts +8 -8
  151. package/lib/mjs/decorators/Resource.js +13 -13
  152. package/lib/mjs/events/NewUser.d.ts +12 -12
  153. package/lib/mjs/events/NewUser.js +13 -13
  154. package/lib/mjs/events/NewUser.js.map +1 -1
  155. package/lib/mjs/events/UserActivated.d.ts +5 -5
  156. package/lib/mjs/events/UserActivated.js +21 -21
  157. package/lib/mjs/events/UserActivated.js.map +1 -1
  158. package/lib/mjs/events/UserBanned.d.ts +6 -6
  159. package/lib/mjs/events/UserBanned.js +22 -22
  160. package/lib/mjs/events/UserBanned.js.map +1 -1
  161. package/lib/mjs/events/UserDeactivated.d.ts +5 -5
  162. package/lib/mjs/events/UserDeactivated.js +21 -21
  163. package/lib/mjs/events/UserDeactivated.js.map +1 -1
  164. package/lib/mjs/events/UserDeleted.d.ts +5 -5
  165. package/lib/mjs/events/UserDeleted.js +21 -21
  166. package/lib/mjs/events/UserDeleted.js.map +1 -1
  167. package/lib/mjs/events/UserMetadataAdded.d.ts +5 -5
  168. package/lib/mjs/events/UserMetadataAdded.js +21 -21
  169. package/lib/mjs/events/UserMetadataAdded.js.map +1 -1
  170. package/lib/mjs/events/UserMetadataChanged.d.ts +5 -5
  171. package/lib/mjs/events/UserMetadataChanged.js +21 -21
  172. package/lib/mjs/events/UserMetadataChanged.js.map +1 -1
  173. package/lib/mjs/events/UserMetadataDeleted.d.ts +5 -5
  174. package/lib/mjs/events/UserMetadataDeleted.js +21 -21
  175. package/lib/mjs/events/UserMetadataDeleted.js.map +1 -1
  176. package/lib/mjs/events/UserPasswordChanged.d.ts +5 -5
  177. package/lib/mjs/events/UserPasswordChanged.js +21 -21
  178. package/lib/mjs/events/UserPasswordChanged.js.map +1 -1
  179. package/lib/mjs/events/UserPropertyChanged.d.ts +7 -7
  180. package/lib/mjs/events/UserPropertyChanged.js +13 -13
  181. package/lib/mjs/events/UserPropertyChanged.js.map +1 -1
  182. package/lib/mjs/events/UserRoleGranted.d.ts +6 -6
  183. package/lib/mjs/events/UserRoleGranted.js +22 -22
  184. package/lib/mjs/events/UserRoleGranted.js.map +1 -1
  185. package/lib/mjs/events/UserRoleRevoked.d.ts +6 -6
  186. package/lib/mjs/events/UserRoleRevoked.js +22 -22
  187. package/lib/mjs/events/UserRoleRevoked.js.map +1 -1
  188. package/lib/mjs/events/UserUnbanned.d.ts +5 -5
  189. package/lib/mjs/events/UserUnbanned.js +21 -21
  190. package/lib/mjs/events/UserUnbanned.js.map +1 -1
  191. package/lib/mjs/events/index.d.ts +13 -13
  192. package/lib/mjs/events/index.js +13 -13
  193. package/lib/mjs/index.d.ts +20 -20
  194. package/lib/mjs/index.js +64 -64
  195. package/lib/mjs/index.js.map +1 -1
  196. package/lib/mjs/interfaces.d.ts +259 -259
  197. package/lib/mjs/interfaces.js +37 -37
  198. package/lib/mjs/interfaces.js.map +1 -1
  199. package/lib/mjs/jobs/UnbanUser.d.ts +9 -9
  200. package/lib/mjs/jobs/UnbanUser.js +40 -40
  201. package/lib/mjs/jobs/UnbanUser.js.map +1 -1
  202. package/lib/mjs/middleware.d.ts +5 -5
  203. package/lib/mjs/middleware.js +21 -21
  204. package/lib/mjs/middleware.js.map +1 -1
  205. package/lib/mjs/migrations/RBACInitial_2022_06_28_01_13_00.d.ts +5 -5
  206. package/lib/mjs/migrations/RBACInitial_2022_06_28_01_13_00.js +53 -53
  207. package/lib/mjs/migrations/RBACInitial_2022_06_28_01_13_00.js.map +1 -1
  208. package/lib/mjs/models/User.d.ts +96 -96
  209. package/lib/mjs/models/User.js +225 -225
  210. package/lib/mjs/models/User.js.map +1 -1
  211. package/lib/mjs/models/UserMetadata.d.ts +9 -9
  212. package/lib/mjs/models/UserMetadata.js +29 -29
  213. package/lib/mjs/models/UserMetadata.js.map +1 -1
  214. package/lib/mjs/models/UserTimeline.d.ts +28 -28
  215. package/lib/mjs/models/UserTimeline.js +43 -43
  216. package/lib/mjs/models/UserTimeline.js.map +1 -1
  217. package/lib/mjs/password.d.ts +25 -25
  218. package/lib/mjs/password.js +65 -65
  219. package/lib/mjs/password.js.map +1 -1
  220. package/lib/mjs/session.d.ts +33 -33
  221. package/lib/mjs/session.js +94 -94
  222. package/lib/mjs/session.js.map +1 -1
  223. package/lib/tsconfig.cjs.tsbuildinfo +1 -1
  224. package/lib/tsconfig.mjs.tsbuildinfo +1 -1
  225. package/package.json +10 -10
@@ -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
@@ -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 = exports.AthenticationErrorCodes || (exports.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,GAAvB,+BAAuB,KAAvB,+BAAuB,QAKlC;AA+BD;;GAEG;AACH,MAAsB,0BAA0B;CAE/C;AAFD,gEAEC"}
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