@adonisjs/auth 8.2.3 → 9.0.0-1

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 (137) hide show
  1. package/LICENSE.md +1 -1
  2. package/README.md +19 -40
  3. package/build/configure.d.ts +5 -0
  4. package/build/configure.js +55 -0
  5. package/build/factories/database_token_factory.d.ts +36 -0
  6. package/build/factories/database_token_factory.js +54 -0
  7. package/build/factories/database_user_provider.d.ts +14 -0
  8. package/build/factories/database_user_provider.js +27 -0
  9. package/build/factories/lucid_user_provider.d.ts +28 -0
  10. package/build/factories/lucid_user_provider.js +68 -0
  11. package/build/factories/main.d.ts +4 -0
  12. package/build/factories/main.js +12 -0
  13. package/build/factories/session_guard_factory.d.ts +13 -0
  14. package/build/factories/session_guard_factory.js +24 -0
  15. package/build/index.d.ts +7 -0
  16. package/build/index.js +15 -0
  17. package/build/providers/auth_provider.d.ts +12 -0
  18. package/build/providers/auth_provider.js +27 -0
  19. package/build/services/auth.d.ts +3 -0
  20. package/build/services/auth.js +17 -0
  21. package/build/src/auth/auth_manager.d.ts +22 -0
  22. package/build/src/auth/auth_manager.js +34 -0
  23. package/build/src/auth/authenticator.d.ts +56 -0
  24. package/build/src/auth/authenticator.js +122 -0
  25. package/build/src/auth/debug.d.ts +3 -0
  26. package/build/{adonis-typings/container.js → src/auth/debug.js} +3 -1
  27. package/build/src/auth/define_config.d.ts +30 -0
  28. package/build/src/auth/define_config.js +54 -0
  29. package/build/src/auth/errors.d.ts +82 -0
  30. package/build/src/auth/errors.js +181 -0
  31. package/build/src/auth/middleware/auth_middleware.d.ts +13 -0
  32. package/build/src/auth/middleware/auth_middleware.js +6 -0
  33. package/build/src/auth/middleware/initialize_auth_middleware.d.ts +18 -0
  34. package/build/src/auth/middleware/initialize_auth_middleware.js +25 -0
  35. package/build/src/auth/symbols.d.ts +9 -0
  36. package/build/src/auth/symbols.js +17 -0
  37. package/build/src/auth/types.d.ts +75 -0
  38. package/build/{adonis-typings/context.js → src/auth/types.js} +2 -1
  39. package/build/src/auth/user_providers/main.d.ts +15 -0
  40. package/build/src/auth/user_providers/main.js +22 -0
  41. package/build/src/core/guard_user.d.ts +26 -0
  42. package/build/src/core/guard_user.js +29 -0
  43. package/build/src/core/token.d.ts +89 -0
  44. package/build/src/core/token.js +114 -0
  45. package/build/src/core/token_providers/database.d.ts +77 -0
  46. package/build/src/core/token_providers/database.js +113 -0
  47. package/build/src/core/types.d.ts +178 -0
  48. package/build/{adonis-typings/auth.js → src/core/types.js} +2 -1
  49. package/build/src/core/user_providers/database.d.ts +78 -0
  50. package/build/src/core/user_providers/database.js +117 -0
  51. package/build/src/core/user_providers/lucid.d.ts +61 -0
  52. package/build/src/core/user_providers/lucid.js +122 -0
  53. package/build/src/guards/session/define_config.d.ts +23 -0
  54. package/build/src/guards/session/define_config.js +56 -0
  55. package/build/src/guards/session/guard.d.ts +112 -0
  56. package/build/src/guards/session/guard.js +454 -0
  57. package/build/src/guards/session/main.d.ts +3 -0
  58. package/build/src/guards/session/main.js +11 -0
  59. package/build/src/guards/session/token.d.ts +57 -0
  60. package/build/src/guards/session/token.js +58 -0
  61. package/build/src/guards/session/token_providers/main.d.ts +33 -0
  62. package/build/src/guards/session/token_providers/main.js +42 -0
  63. package/build/src/guards/session/types.d.ts +96 -0
  64. package/build/{adonis-typings/events.js → src/guards/session/types.js} +2 -1
  65. package/build/stubs/config.stub +35 -0
  66. package/build/stubs/main.d.ts +1 -0
  67. package/build/{adonis-typings/tests.js → stubs/main.js} +2 -3
  68. package/package.json +99 -91
  69. package/build/adonis-typings/auth.d.ts +0 -635
  70. package/build/adonis-typings/container.d.ts +0 -6
  71. package/build/adonis-typings/context.d.ts +0 -6
  72. package/build/adonis-typings/events.d.ts +0 -10
  73. package/build/adonis-typings/index.d.ts +0 -5
  74. package/build/adonis-typings/index.js +0 -13
  75. package/build/adonis-typings/tests.d.ts +0 -23
  76. package/build/instructions.js +0 -338
  77. package/build/providers/AuthProvider.d.ts +0 -30
  78. package/build/providers/AuthProvider.js +0 -69
  79. package/build/src/Auth/index.d.ts +0 -97
  80. package/build/src/Auth/index.js +0 -155
  81. package/build/src/AuthManager/index.d.ts +0 -117
  82. package/build/src/AuthManager/index.js +0 -262
  83. package/build/src/Bindings/Tests.d.ts +0 -6
  84. package/build/src/Bindings/Tests.js +0 -69
  85. package/build/src/Clients/Oat/index.d.ts +0 -50
  86. package/build/src/Clients/Oat/index.js +0 -123
  87. package/build/src/Clients/Session/index.d.ts +0 -34
  88. package/build/src/Clients/Session/index.js +0 -72
  89. package/build/src/Exceptions/AuthenticationException.d.ts +0 -47
  90. package/build/src/Exceptions/AuthenticationException.js +0 -142
  91. package/build/src/Exceptions/InvalidCredentialsException.d.ts +0 -34
  92. package/build/src/Exceptions/InvalidCredentialsException.js +0 -112
  93. package/build/src/Guards/Base/index.d.ts +0 -75
  94. package/build/src/Guards/Base/index.js +0 -138
  95. package/build/src/Guards/BasicAuth/index.d.ts +0 -67
  96. package/build/src/Guards/BasicAuth/index.js +0 -181
  97. package/build/src/Guards/Oat/index.d.ts +0 -149
  98. package/build/src/Guards/Oat/index.js +0 -347
  99. package/build/src/Guards/Session/index.d.ts +0 -127
  100. package/build/src/Guards/Session/index.js +0 -338
  101. package/build/src/TokenProviders/Database/index.d.ts +0 -43
  102. package/build/src/TokenProviders/Database/index.js +0 -126
  103. package/build/src/TokenProviders/Redis/index.d.ts +0 -44
  104. package/build/src/TokenProviders/Redis/index.js +0 -129
  105. package/build/src/Tokens/OpaqueToken/index.d.ts +0 -46
  106. package/build/src/Tokens/OpaqueToken/index.js +0 -43
  107. package/build/src/Tokens/ProviderToken/index.d.ts +0 -23
  108. package/build/src/Tokens/ProviderToken/index.js +0 -27
  109. package/build/src/UserProviders/Database/User.d.ts +0 -28
  110. package/build/src/UserProviders/Database/User.js +0 -74
  111. package/build/src/UserProviders/Database/index.d.ts +0 -75
  112. package/build/src/UserProviders/Database/index.js +0 -141
  113. package/build/src/UserProviders/Lucid/User.d.ts +0 -28
  114. package/build/src/UserProviders/Lucid/User.js +0 -74
  115. package/build/src/UserProviders/Lucid/index.d.ts +0 -72
  116. package/build/src/UserProviders/Lucid/index.js +0 -146
  117. package/build/standalone.d.ts +0 -1
  118. package/build/standalone.js +0 -13
  119. package/build/templates/config/auth.txt +0 -34
  120. package/build/templates/config/partials/api-guard.txt +0 -22
  121. package/build/templates/config/partials/basic-guard.txt +0 -19
  122. package/build/templates/config/partials/tokens-provider-database.txt +0 -19
  123. package/build/templates/config/partials/tokens-provider-redis.txt +0 -22
  124. package/build/templates/config/partials/user-provider-database.txt +0 -43
  125. package/build/templates/config/partials/user-provider-lucid.txt +0 -45
  126. package/build/templates/config/partials/web-guard.txt +0 -17
  127. package/build/templates/contract/auth.txt +0 -55
  128. package/build/templates/contract/partials/api-guard.txt +0 -14
  129. package/build/templates/contract/partials/basic-guard.txt +0 -14
  130. package/build/templates/contract/partials/user-provider-database.txt +0 -16
  131. package/build/templates/contract/partials/user-provider-lucid.txt +0 -16
  132. package/build/templates/contract/partials/web-guard.txt +0 -14
  133. package/build/templates/middleware/Auth.txt +0 -76
  134. package/build/templates/middleware/SilentAuth.txt +0 -21
  135. package/build/templates/migrations/api_tokens.txt +0 -25
  136. package/build/templates/migrations/auth.txt +0 -24
  137. package/build/templates/model.txt +0 -30
@@ -1,635 +0,0 @@
1
- /// <reference types="@adonisjs/application/build/adonis-typings/application" />
2
- declare module '@ioc:Adonis/Addons/Auth' {
3
- import { DateTime } from 'luxon';
4
- import { HashersList } from '@ioc:Adonis/Core/Hash';
5
- import { QueryClientContract } from '@ioc:Adonis/Lucid/Database';
6
- import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext';
7
- import { ApplicationContract } from '@ioc:Adonis/Core/Application';
8
- import { DatabaseQueryBuilderContract } from '@ioc:Adonis/Lucid/Database';
9
- import { LucidModel, LucidRow, ModelQueryBuilderContract } from '@ioc:Adonis/Lucid/Orm';
10
- /**
11
- * Unwraps user from the provider user
12
- */
13
- type UnWrapProviderUser<T> = T extends ProviderUserContract<any> ? Exclude<T['user'], null> : T;
14
- /**
15
- * Unwraps awaited type from Promise
16
- */
17
- type Awaited<T> = T extends PromiseLike<infer U> ? Awaited<U> : T;
18
- /**
19
- * Returns the real user from the provider user
20
- */
21
- export type GetProviderRealUser<Provider extends keyof ProvidersList> = UnWrapProviderUser<Awaited<ReturnType<ProvidersList[Provider]['implementation']['getUserFor']>>>;
22
- /**
23
- * Provider user works as a bridge between the provider real user
24
- * and the guard. It is never exposed to the end-user.
25
- */
26
- export interface ProviderUserContract<User extends any> {
27
- user: User | null;
28
- getId(): string | number | null;
29
- verifyPassword: (plainPassword: string) => Promise<boolean>;
30
- getRememberMeToken(): string | null;
31
- setRememberMeToken(token: string): void;
32
- }
33
- /**
34
- * The interface that every provider must implement
35
- */
36
- export interface UserProviderContract<User extends any> {
37
- /**
38
- * Return an instance of the user wrapped inside the Provider user contract
39
- */
40
- getUserFor(user: User): Promise<ProviderUserContract<User>>;
41
- /**
42
- * Find a user using the primary key value
43
- */
44
- findById(id: string | number): Promise<ProviderUserContract<User>>;
45
- /**
46
- * Find a user by searching for their uids
47
- */
48
- findByUid(uid: string): Promise<ProviderUserContract<User>>;
49
- /**
50
- * Find a user using the remember me token
51
- */
52
- findByRememberMeToken(userId: string | number, token: string): Promise<ProviderUserContract<User>>;
53
- /**
54
- * Update remember token
55
- */
56
- updateRememberMeToken(authenticatable: ProviderUserContract<User>): Promise<void>;
57
- }
58
- /**
59
- * Shape of the token sent to/read from the tokens provider
60
- */
61
- export interface ProviderTokenContract {
62
- /**
63
- * Persisted token value. It is a sha256 hash
64
- */
65
- tokenHash: string;
66
- /**
67
- * Token name
68
- */
69
- name: string;
70
- /**
71
- * Token type
72
- */
73
- type: string;
74
- /**
75
- * UserId for which the token was saved
76
- */
77
- userId: string | number;
78
- /**
79
- * Expiry date
80
- */
81
- expiresAt?: DateTime;
82
- /**
83
- * All other token details
84
- */
85
- meta?: any;
86
- }
87
- /**
88
- * Token providers provides the API to create/fetch and delete tokens
89
- * for a given user. Any token based implementation can use token
90
- * providers, given they only store a single token.
91
- */
92
- export interface TokenProviderContract {
93
- /**
94
- * Define a custom connection for the driver in use
95
- */
96
- setConnection(connection: any): this;
97
- /**
98
- * Saves the token to some persistance storage and returns an lookup
99
- * id. We introduced the concept of lookup ids, since lookups by
100
- * cryptographic tokens can have performance impacts on certain
101
- * databases.
102
- *
103
- * Also note that the return lookup id is also prepended to the raw
104
- * token, so that we can later extract the id for reads. The
105
- * real message is to keep the lookup ids small.
106
- */
107
- write(token: ProviderTokenContract): Promise<string>;
108
- /**
109
- * Find token using the lookup id or the token value
110
- */
111
- read(lookupId: string, token: string, type: string): Promise<ProviderTokenContract | null>;
112
- /**
113
- * Delete token using the lookup id or the token value
114
- */
115
- destroy(lookupId: string, type: string): Promise<void>;
116
- }
117
- /**
118
- * Config for the database token provider
119
- */
120
- export type DatabaseTokenProviderConfig = {
121
- driver: 'database';
122
- table: string;
123
- foreignKey?: string;
124
- connection?: string;
125
- type?: string;
126
- };
127
- /**
128
- * Config for the redis token provider
129
- */
130
- export type RedisTokenProviderConfig = {
131
- driver: 'redis';
132
- redisConnection: string;
133
- foreignKey?: string;
134
- type?: string;
135
- };
136
- /**
137
- * The shape of the user model accepted by the Lucid provider. The model
138
- * must have `password` and `rememberMeToken` attributes.
139
- */
140
- export type LucidProviderModel = LucidModel & {
141
- findForAuth?: <T extends LucidModel>(this: T, uids: string[], value: any) => Promise<InstanceType<T>>;
142
- } & {
143
- new (): LucidRow & {
144
- password?: string | null;
145
- rememberMeToken?: string | null;
146
- };
147
- };
148
- /**
149
- * Shape of the lucid provider user builder. It must return [[ProviderUserContract]]
150
- */
151
- export interface LucidProviderUserBuilder<User extends LucidProviderModel> {
152
- new (user: InstanceType<User> | null, config: LucidProviderConfig<User>, ...args: any[]): ProviderUserContract<InstanceType<User>>;
153
- }
154
- /**
155
- * Lucid provider
156
- */
157
- export interface LucidProviderContract<User extends LucidProviderModel> extends UserProviderContract<InstanceType<User>> {
158
- /**
159
- * Define a custom connection for all the provider queries
160
- */
161
- setConnection(connection: string | QueryClientContract): this;
162
- /**
163
- * Before hooks
164
- */
165
- before(event: 'findUser', callback: (query: ModelQueryBuilderContract<User>) => Promise<void>): this;
166
- /**
167
- * After hooks
168
- */
169
- after(event: 'findUser', callback: (user: InstanceType<User>) => Promise<void>): this;
170
- }
171
- /**
172
- * The config accepted by the Lucid provider
173
- */
174
- export type LucidProviderConfig<User extends LucidProviderModel> = {
175
- driver: 'lucid';
176
- model: () => Promise<User> | Promise<{
177
- default: User;
178
- }>;
179
- uids: (keyof InstanceType<User>)[];
180
- identifierKey: string;
181
- connection?: string;
182
- hashDriver?: keyof HashersList;
183
- user?: () => Promise<LucidProviderUserBuilder<User>> | Promise<{
184
- default: LucidProviderUserBuilder<User>;
185
- }>;
186
- };
187
- /**
188
- * Shape of the row returned by the database provider. The table must have `password`
189
- * and `remember_me_token` columns.
190
- */
191
- export type DatabaseProviderRow = {
192
- password?: string;
193
- remember_me_token?: string;
194
- [key: string]: any;
195
- };
196
- /**
197
- * Shape of database provider user builder. It must always returns [[ProviderUserContract]]
198
- */
199
- export interface DatabaseProviderUserBuilder {
200
- new (user: DatabaseProviderRow | null, config: DatabaseProviderConfig, ...args: any[]): ProviderUserContract<DatabaseProviderRow>;
201
- }
202
- /**
203
- * Database provider
204
- */
205
- export interface DatabaseProviderContract<User extends DatabaseProviderRow> extends UserProviderContract<User> {
206
- /**
207
- * Define a custom connection for all the provider queries
208
- */
209
- setConnection(connection: string | QueryClientContract): this;
210
- /**
211
- * Before hooks
212
- */
213
- before(event: 'findUser', callback: (query: DatabaseQueryBuilderContract) => Promise<void>): this;
214
- /**
215
- * After hooks
216
- */
217
- after(event: 'findUser', callback: (user: DatabaseProviderRow) => Promise<void>): this;
218
- }
219
- /**
220
- * The config accepted by the Database provider
221
- */
222
- export type DatabaseProviderConfig = {
223
- driver: 'database';
224
- uids: string[];
225
- usersTable: string;
226
- identifierKey: string;
227
- connection?: string;
228
- hashDriver?: keyof HashersList;
229
- user?: () => Promise<DatabaseProviderUserBuilder> | Promise<{
230
- default: DatabaseProviderUserBuilder;
231
- }>;
232
- };
233
- /**
234
- * Request data a guard client can set when making the
235
- * testing request
236
- */
237
- export type ClientRequestData = {
238
- session?: Record<string, any>;
239
- headers?: Record<string, any>;
240
- cookies?: Record<string, any>;
241
- };
242
- /**
243
- * The authentication clients should follow this interface
244
- */
245
- export interface GuardClientContract<Provider extends keyof ProvidersList> {
246
- /**
247
- * Login a user
248
- */
249
- login(user: GetProviderRealUser<Provider>, ...args: any[]): Promise<ClientRequestData>;
250
- /**
251
- * Logout user
252
- */
253
- logout(user: GetProviderRealUser<Provider>): Promise<void>;
254
- }
255
- export interface GuardContract<Provider extends keyof ProvidersList, Guard extends keyof GuardsList> {
256
- name: Guard;
257
- /**
258
- * Reference to the guard config
259
- */
260
- config: GuardsList[Guard]['config'];
261
- /**
262
- * Reference to the logged in user.
263
- */
264
- user?: GetProviderRealUser<Provider>;
265
- /**
266
- * Find if the user has been logged out in the current request
267
- */
268
- isLoggedOut: boolean;
269
- /**
270
- * A boolean to know if user is a guest or not. It is
271
- * always opposite of [[isLoggedIn]]
272
- */
273
- isGuest: boolean;
274
- /**
275
- * A boolean to know if user is logged in or not
276
- */
277
- isLoggedIn: boolean;
278
- /**
279
- * A boolean to know if user is retrieved by authenticating
280
- * the current request or not.
281
- */
282
- isAuthenticated: boolean;
283
- /**
284
- * Whether or not the authentication has been attempted
285
- * for the current request
286
- */
287
- authenticationAttempted: boolean;
288
- /**
289
- * Reference to the provider for looking up the user
290
- */
291
- provider: ProvidersList[Provider]['implementation'];
292
- /**
293
- * Verify user credentials.
294
- */
295
- verifyCredentials(uid: string, password: string): Promise<GetProviderRealUser<Provider>>;
296
- /**
297
- * Attempt to verify user credentials and perform login
298
- */
299
- attempt(uid: string, password: string, ...args: any[]): Promise<any>;
300
- /**
301
- * Login a user without any verification
302
- */
303
- login(user: GetProviderRealUser<Provider>, ...args: any[]): Promise<any>;
304
- /**
305
- * Login a user using their id
306
- */
307
- loginViaId(id: string | number, ...args: any[]): Promise<any>;
308
- /**
309
- * Attempts to authenticate the user for the current HTTP request. An exception
310
- * is raised when unable to do so
311
- */
312
- authenticate(): Promise<GetProviderRealUser<Provider>>;
313
- /**
314
- * Attempts to authenticate the user for the current HTTP request and supresses
315
- * exceptions raised by the [[authenticate]] method and returns a boolean
316
- */
317
- check(): Promise<boolean>;
318
- /**
319
- * Logout user
320
- */
321
- logout(...args: any[]): Promise<void>;
322
- /**
323
- * Serialize guard to JSON
324
- */
325
- toJSON(): any;
326
- }
327
- /**
328
- * Shape of data emitted by the login event
329
- */
330
- export type SessionLoginEventData<Provider extends keyof ProvidersList> = {
331
- name: string;
332
- user: GetProviderRealUser<Provider>;
333
- ctx: HttpContextContract;
334
- token: string | null;
335
- };
336
- /**
337
- * Shape of data emitted by the authenticate event
338
- */
339
- export type SessionAuthenticateEventData<Provider extends keyof ProvidersList> = {
340
- name: string;
341
- user: GetProviderRealUser<Provider>;
342
- ctx: HttpContextContract;
343
- viaRemember: boolean;
344
- };
345
- /**
346
- * Shape of the session guard
347
- */
348
- export interface SessionGuardContract<Provider extends keyof ProvidersList, Name extends keyof GuardsList> extends GuardContract<Provider, Name> {
349
- /**
350
- * A boolean to know if user is loggedin via remember me token or not.
351
- */
352
- viaRemember: boolean;
353
- /**
354
- * Attempt to verify user credentials and perform login
355
- */
356
- attempt(uid: string, password: string, remember?: boolean): Promise<any>;
357
- /**
358
- * Login a user without any verification
359
- */
360
- login(user: GetProviderRealUser<Provider>, remember?: boolean): Promise<any>;
361
- /**
362
- * Login a user using their id
363
- */
364
- loginViaId(id: string | number, remember?: boolean): Promise<any>;
365
- /**
366
- * Logout user
367
- */
368
- logout(renewRememberToken?: boolean): Promise<void>;
369
- }
370
- /**
371
- * Session client to login users during tests
372
- */
373
- export interface SessionClientContract<Provider extends keyof ProvidersList> extends GuardClientContract<Provider> {
374
- }
375
- /**
376
- * Shape of session driver config.
377
- */
378
- export type SessionGuardConfig<Provider extends keyof ProvidersList> = {
379
- driver: 'session';
380
- provider: ProvidersList[Provider]['config'];
381
- };
382
- /**
383
- * Shape of data emitted by the authenticate event
384
- */
385
- export type BasicAuthAuthenticateEventData<Provider extends keyof ProvidersList> = {
386
- name: string;
387
- user: GetProviderRealUser<Provider>;
388
- ctx: HttpContextContract;
389
- };
390
- /**
391
- * Shape of the basic auth guard
392
- */
393
- export interface BasicAuthGuardContract<Provider extends keyof ProvidersList, Name extends keyof GuardsList> extends Omit<GuardContract<Provider, Name>, 'attempt' | 'login' | 'loginViaId' | 'logout'> {
394
- }
395
- /**
396
- * Basic auth client to login users during tests
397
- */
398
- export interface BasicAuthClientContract<Provider extends keyof ProvidersList> extends GuardClientContract<Provider> {
399
- }
400
- /**
401
- * Shape of basic auth guard config.
402
- */
403
- export type BasicAuthGuardConfig<Provider extends keyof ProvidersList> = {
404
- driver: 'basic';
405
- realm?: string;
406
- provider: ProvidersList[Provider]['config'];
407
- };
408
- /**
409
- * Opaque token is generated during the login call by the OpaqueTokensGuard
410
- */
411
- export interface OpaqueTokenContract<User extends any> {
412
- /**
413
- * Always a bearer token
414
- */
415
- type: 'bearer';
416
- /**
417
- * The user for which the token was generated
418
- */
419
- user: User;
420
- /**
421
- * Date/time when the token will be expired
422
- */
423
- expiresAt?: DateTime;
424
- /**
425
- * Time in seconds until the token is valid
426
- */
427
- expiresIn?: number;
428
- /**
429
- * Any meta-data attached with the token
430
- */
431
- meta: any;
432
- /**
433
- * Token name
434
- */
435
- name: string;
436
- /**
437
- * Token public value
438
- */
439
- token: string;
440
- /**
441
- * Token hash (persisted to the db as well)
442
- */
443
- tokenHash: string;
444
- /**
445
- * Serialize token
446
- */
447
- toJSON(): {
448
- type: 'bearer';
449
- token: string;
450
- expires_at?: string;
451
- expires_in?: number;
452
- };
453
- }
454
- /**
455
- * Login options
456
- */
457
- export type OATLoginOptions = {
458
- name?: string;
459
- expiresIn?: number | string;
460
- } & {
461
- [key: string]: any;
462
- };
463
- /**
464
- * Shape of data emitted by the login event
465
- */
466
- export type OATLoginEventData<Provider extends keyof ProvidersList> = {
467
- name: string;
468
- user: GetProviderRealUser<Provider>;
469
- ctx: HttpContextContract;
470
- token: OpaqueTokenContract<GetProviderRealUser<Provider>>;
471
- };
472
- /**
473
- * Shape of the data emitted by the authenticate event
474
- */
475
- export type OATAuthenticateEventData<Provider extends keyof ProvidersList> = {
476
- name: string;
477
- user: GetProviderRealUser<Provider>;
478
- ctx: HttpContextContract;
479
- token: ProviderTokenContract;
480
- };
481
- /**
482
- * Shape of the OAT guard
483
- */
484
- export interface OATGuardContract<Provider extends keyof ProvidersList, Name extends keyof GuardsList> extends GuardContract<Provider, Name> {
485
- token?: ProviderTokenContract;
486
- tokenProvider: TokenProviderContract;
487
- /**
488
- * Attempt to verify user credentials and perform login
489
- */
490
- attempt(uid: string, password: string, options?: OATLoginOptions): Promise<OpaqueTokenContract<GetProviderRealUser<Provider>>>;
491
- /**
492
- * Login a user without any verification
493
- */
494
- login(user: GetProviderRealUser<Provider>, options?: OATLoginOptions): Promise<OpaqueTokenContract<GetProviderRealUser<Provider>>>;
495
- /**
496
- * Generate token for a user without any verification
497
- */
498
- generate(user: GetProviderRealUser<Provider>, options?: OATLoginOptions): Promise<OpaqueTokenContract<GetProviderRealUser<Provider>>>;
499
- /**
500
- * Alias for logout
501
- */
502
- revoke(): Promise<void>;
503
- /**
504
- * Login a user using their id
505
- */
506
- loginViaId(id: string | number, options?: OATLoginOptions): Promise<OpaqueTokenContract<GetProviderRealUser<Provider>>>;
507
- }
508
- /**
509
- * Oat guard to login users during tests
510
- */
511
- export interface OATClientContract<Provider extends keyof ProvidersList> extends GuardClientContract<Provider> {
512
- login(user: GetProviderRealUser<Provider>, options?: OATLoginOptions): Promise<ClientRequestData>;
513
- }
514
- /**
515
- * Shape of OAT guard config.
516
- */
517
- export type OATGuardConfig<Provider extends keyof ProvidersList> = {
518
- /**
519
- * Driver name is always constant
520
- */
521
- driver: 'oat';
522
- /**
523
- * Provider for managing tokens
524
- */
525
- tokenProvider: DatabaseTokenProviderConfig | RedisTokenProviderConfig;
526
- /**
527
- * User provider
528
- */
529
- provider: ProvidersList[Provider]['config'];
530
- };
531
- /**
532
- * List of providers mappings used by the app. Using declaration
533
- * merging, one must extend this interface.
534
- *
535
- * MUST BE SET IN THE USER LAND.
536
- *
537
- * Example:
538
- *
539
- * lucid: {
540
- * config: LucidProviderConfig<any>,
541
- * implementation: LucidProviderContract<any>,
542
- * }
543
- *
544
- */
545
- export interface ProvidersList {
546
- }
547
- /**
548
- * List of guards mappings used by the app. Using declaration
549
- * merging, one must extend this interface.
550
- *
551
- * MUST BE SET IN THE USER LAND.
552
- *
553
- * Example:
554
- *
555
- * session: {
556
- * config: SessionGuardConfig<'lucid'>,
557
- * implementation: SessionGuardContract<'lucid'>,
558
- * client: SessionClientContract<'lucid'>,
559
- * }
560
- *
561
- */
562
- export interface GuardsList {
563
- }
564
- /**
565
- * Shape of config accepted by the Auth module. It relies on the
566
- * [[GuardsList]] interface
567
- */
568
- export type AuthConfig = {
569
- guard: keyof GuardsList;
570
- guards: {
571
- [P in keyof GuardsList]: GuardsList[P]['config'];
572
- };
573
- };
574
- /**
575
- * Instance of the auth contract. The `use` method can be used to obtain
576
- * an instance of a given guard mapping for a single HTTP request
577
- */
578
- export interface AuthContract extends GuardContract<keyof ProvidersList, keyof GuardsList> {
579
- /**
580
- * The default guard for the current request
581
- */
582
- defaultGuard: string;
583
- /**
584
- * Use a given guard
585
- */
586
- use(): GuardContract<keyof ProvidersList, keyof GuardsList>;
587
- use<K extends keyof GuardsList>(guard: K): GuardsList[K]['implementation'];
588
- }
589
- /**
590
- * Shape of the callback accepted to add new user providers
591
- */
592
- export type ExtendProviderCallback = (auth: AuthManagerContract, mapping: string, config: any) => UserProviderContract<any>;
593
- /**
594
- * Shape of the callback accepted to add new guards
595
- */
596
- export type ExtendGuardCallback = (auth: AuthManagerContract, mapping: string, config: any, provider: UserProviderContract<any>, ctx: HttpContextContract) => GuardContract<keyof ProvidersList, keyof GuardsList>;
597
- /**
598
- * Shape of the callback accepted to add custom testing
599
- * clients
600
- */
601
- export type ExtendClientCallback = (auth: AuthManagerContract, mapping: string, config: any, provider: UserProviderContract<any>) => GuardClientContract<keyof ProvidersList>;
602
- /**
603
- * Shape of the auth manager to register custom drivers and providers and
604
- * make instances of them
605
- */
606
- export interface AuthManagerContract {
607
- application: ApplicationContract;
608
- /**
609
- * The default guard
610
- */
611
- defaultGuard: string;
612
- /**
613
- * Returns the instance of [[AuthContract]] for a given HTTP request
614
- */
615
- getAuthForRequest(ctx: HttpContextContract): AuthContract;
616
- /**
617
- * Make instance of a mapping
618
- */
619
- makeMapping(ctx: HttpContextContract, mapping: string): GuardContract<keyof ProvidersList, keyof GuardsList>;
620
- makeMapping<K extends keyof GuardsList>(ctx: HttpContextContract, mapping: K): GuardsList[K]['implementation'];
621
- /**
622
- * Returns an instance of the auth client for a given
623
- * mapping
624
- */
625
- client(mapping: string): GuardClientContract<keyof ProvidersList>;
626
- /**
627
- * Extend by adding custom providers, guards and client
628
- */
629
- extend(type: 'provider', provider: string, callback: ExtendProviderCallback): void;
630
- extend(type: 'guard', guard: string, callback: ExtendGuardCallback): void;
631
- extend(type: 'client', guard: string, callback: ExtendClientCallback): void;
632
- }
633
- const AuthManager: AuthManagerContract;
634
- export default AuthManager;
635
- }
@@ -1,6 +0,0 @@
1
- declare module '@ioc:Adonis/Core/Application' {
2
- import { AuthManagerContract } from '@ioc:Adonis/Addons/Auth';
3
- interface ContainerBindings {
4
- 'Adonis/Addons/Auth': AuthManagerContract;
5
- }
6
- }
@@ -1,6 +0,0 @@
1
- declare module '@ioc:Adonis/Core/HttpContext' {
2
- import { AuthContract } from '@ioc:Adonis/Addons/Auth';
3
- interface HttpContextContract {
4
- auth: AuthContract;
5
- }
6
- }
@@ -1,10 +0,0 @@
1
- declare module '@ioc:Adonis/Core/Event' {
2
- import { ProvidersList, OATLoginEventData, SessionLoginEventData, OATAuthenticateEventData, SessionAuthenticateEventData, BasicAuthAuthenticateEventData } from '@ioc:Adonis/Addons/Auth';
3
- interface EventsList {
4
- 'adonis:basic:authenticate': BasicAuthAuthenticateEventData<keyof ProvidersList>;
5
- 'adonis:session:login': SessionLoginEventData<keyof ProvidersList>;
6
- 'adonis:session:authenticate': SessionAuthenticateEventData<keyof ProvidersList>;
7
- 'adonis:api:authenticate': OATAuthenticateEventData<keyof ProvidersList>;
8
- 'adonis:api:login': OATLoginEventData<keyof ProvidersList>;
9
- }
10
- }
@@ -1,5 +0,0 @@
1
- /// <reference path="auth.d.ts" />
2
- /// <reference path="context.d.ts" />
3
- /// <reference path="events.d.ts" />
4
- /// <reference path="container.d.ts" />
5
- /// <reference path="tests.d.ts" />
@@ -1,13 +0,0 @@
1
- /*
2
- * @adonisjs/auth
3
- *
4
- * (c) Harminder Virk <virk@adonisjs.com>
5
- *
6
- * For the full copyright and license information, please view the LICENSE
7
- * file that was distributed with this source code.
8
- */
9
- /// <reference path="./auth.ts" />
10
- /// <reference path="./context.ts" />
11
- /// <reference path="./events.ts" />
12
- /// <reference path="./container.ts" />
13
- /// <reference path="./tests.ts" />