@adonisjs/auth 9.0.0-9 → 9.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.
- package/build/chunk-3HZHOWKL.js +8 -0
- package/build/chunk-3HZHOWKL.js.map +1 -0
- package/build/chunk-CZCFTIBB.js +21 -0
- package/build/chunk-CZCFTIBB.js.map +1 -0
- package/build/chunk-OL2Z3AO5.js +246 -0
- package/build/chunk-OL2Z3AO5.js.map +1 -0
- package/build/chunk-UGHJLKDI.js +197 -0
- package/build/chunk-UGHJLKDI.js.map +1 -0
- package/build/index.d.ts +7 -6
- package/build/index.js +149 -15
- package/build/index.js.map +1 -0
- package/build/modules/access_tokens_guard/access_token.d.ts +137 -0
- package/build/modules/access_tokens_guard/crc32.d.ts +16 -0
- package/build/modules/access_tokens_guard/define_config.d.ts +17 -0
- package/build/modules/access_tokens_guard/guard.d.ts +81 -0
- package/build/modules/access_tokens_guard/main.d.ts +5 -0
- package/build/modules/access_tokens_guard/main.js +929 -0
- package/build/modules/access_tokens_guard/main.js.map +1 -0
- package/build/modules/access_tokens_guard/token_providers/db.d.ts +76 -0
- package/build/modules/access_tokens_guard/types.d.ts +208 -0
- package/build/modules/access_tokens_guard/types.js +1 -0
- package/build/modules/access_tokens_guard/types.js.map +1 -0
- package/build/modules/access_tokens_guard/user_providers/lucid.d.ts +53 -0
- package/build/modules/session_guard/define_config.d.ts +17 -0
- package/build/modules/session_guard/guard.d.ts +98 -0
- package/build/modules/session_guard/main.d.ts +5 -0
- package/build/modules/session_guard/main.js +741 -0
- package/build/modules/session_guard/main.js.map +1 -0
- package/build/modules/session_guard/remember_me_token.d.ts +88 -0
- package/build/modules/session_guard/token_providers/db.d.ts +69 -0
- package/build/modules/session_guard/types.d.ts +243 -0
- package/build/modules/session_guard/types.js +1 -0
- package/build/modules/session_guard/types.js.map +1 -0
- package/build/modules/session_guard/user_providers/lucid.d.ts +57 -0
- package/build/providers/auth_provider.d.ts +1 -1
- package/build/providers/auth_provider.js +31 -27
- package/build/providers/auth_provider.js.map +1 -0
- package/build/services/auth.d.ts +1 -1
- package/build/services/auth.js +10 -15
- package/build/services/auth.js.map +1 -0
- package/build/src/{auth/auth_manager.d.ts → auth_manager.d.ts} +8 -3
- package/build/src/authenticator.d.ts +81 -0
- package/build/src/{auth/authenticator_client.d.ts → authenticator_client.d.ts} +4 -4
- package/build/src/{auth/define_config.d.ts → define_config.d.ts} +0 -10
- package/build/src/errors.d.ts +105 -0
- package/build/src/{auth/middleware → middleware}/initialize_auth_middleware.d.ts +3 -2
- package/build/src/middleware/initialize_auth_middleware.js +17 -0
- package/build/src/middleware/initialize_auth_middleware.js.map +1 -0
- package/build/src/mixins/with_auth_finder.d.ts +156 -0
- package/build/src/{auth/plugins → plugins}/japa/api_client.d.ts +8 -8
- package/build/src/plugins/japa/api_client.js +59 -0
- package/build/src/plugins/japa/api_client.js.map +1 -0
- package/build/src/{auth/plugins → plugins}/japa/browser_client.d.ts +10 -7
- package/build/src/plugins/japa/browser_client.js +67 -0
- package/build/src/plugins/japa/browser_client.js.map +1 -0
- package/build/src/{auth/types.d.ts → types.d.ts} +31 -26
- package/build/src/types.js +1 -0
- package/build/src/types.js.map +1 -0
- package/package.json +88 -68
- package/build/configure.js +0 -47
- package/build/factories/basic_auth_guard_factory.d.ts +0 -12
- package/build/factories/basic_auth_guard_factory.js +0 -22
- package/build/factories/database_token_factory.d.ts +0 -36
- package/build/factories/database_token_factory.js +0 -54
- package/build/factories/database_user_provider.d.ts +0 -14
- package/build/factories/database_user_provider.js +0 -27
- package/build/factories/lucid_user_provider.d.ts +0 -28
- package/build/factories/lucid_user_provider.js +0 -68
- package/build/factories/main.d.ts +0 -4
- package/build/factories/main.js +0 -12
- package/build/factories/session_guard_factory.d.ts +0 -13
- package/build/factories/session_guard_factory.js +0 -24
- package/build/src/auth/auth_manager.js +0 -41
- package/build/src/auth/authenticator.d.ts +0 -63
- package/build/src/auth/authenticator.js +0 -129
- package/build/src/auth/authenticator_client.js +0 -59
- package/build/src/auth/debug.js +0 -10
- package/build/src/auth/define_config.js +0 -54
- package/build/src/auth/errors.d.ts +0 -90
- package/build/src/auth/errors.js +0 -201
- package/build/src/auth/middleware/initialize_auth_middleware.js +0 -25
- package/build/src/auth/plugins/japa/api_client.js +0 -63
- package/build/src/auth/plugins/japa/browser_client.js +0 -64
- package/build/src/auth/symbols.js +0 -17
- package/build/src/auth/types.js +0 -9
- package/build/src/auth/user_providers/main.d.ts +0 -15
- package/build/src/auth/user_providers/main.js +0 -22
- package/build/src/core/guard_user.d.ts +0 -26
- package/build/src/core/guard_user.js +0 -29
- package/build/src/core/token.d.ts +0 -89
- package/build/src/core/token.js +0 -114
- package/build/src/core/token_providers/database.d.ts +0 -77
- package/build/src/core/token_providers/database.js +0 -113
- package/build/src/core/types.d.ts +0 -178
- package/build/src/core/types.js +0 -9
- package/build/src/core/user_providers/database.d.ts +0 -78
- package/build/src/core/user_providers/database.js +0 -117
- package/build/src/core/user_providers/lucid.d.ts +0 -61
- package/build/src/core/user_providers/lucid.js +0 -122
- package/build/src/guards/basic_auth/define_config.d.ts +0 -16
- package/build/src/guards/basic_auth/define_config.js +0 -38
- package/build/src/guards/basic_auth/guard.d.ts +0 -70
- package/build/src/guards/basic_auth/guard.js +0 -190
- package/build/src/guards/basic_auth/main.d.ts +0 -2
- package/build/src/guards/basic_auth/main.js +0 -10
- package/build/src/guards/basic_auth/types.d.ts +0 -35
- package/build/src/guards/basic_auth/types.js +0 -9
- package/build/src/guards/session/define_config.d.ts +0 -23
- package/build/src/guards/session/define_config.js +0 -56
- package/build/src/guards/session/guard.d.ts +0 -123
- package/build/src/guards/session/guard.js +0 -510
- package/build/src/guards/session/main.d.ts +0 -3
- package/build/src/guards/session/main.js +0 -11
- package/build/src/guards/session/token.d.ts +0 -57
- package/build/src/guards/session/token.js +0 -58
- package/build/src/guards/session/token_providers/main.d.ts +0 -33
- package/build/src/guards/session/token_providers/main.js +0 -42
- package/build/src/guards/session/types.d.ts +0 -104
- package/build/src/guards/session/types.js +0 -9
- package/build/stubs/main.d.ts +0 -1
- package/build/stubs/main.js +0 -10
- package/build/stubs/middleware/auth_middleware.stub +0 -30
- package/build/stubs/middleware/guest_middleware.stub +0 -36
- /package/build/src/{auth/debug.d.ts → debug.d.ts} +0 -0
- /package/build/src/{auth/symbols.d.ts → symbols.d.ts} +0 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import {
|
|
2
|
+
debug_default
|
|
3
|
+
} from "../../../chunk-3HZHOWKL.js";
|
|
4
|
+
import "../../../chunk-CZCFTIBB.js";
|
|
5
|
+
|
|
6
|
+
// src/plugins/japa/browser_client.ts
|
|
7
|
+
import { decoratorsCollection } from "@japa/browser-client";
|
|
8
|
+
import { RuntimeException } from "@adonisjs/core/exceptions";
|
|
9
|
+
var authBrowserClient = (app) => {
|
|
10
|
+
const pluginFn = async function() {
|
|
11
|
+
debug_default("installing auth browser client plugin");
|
|
12
|
+
const auth = await app.container.make("auth.manager");
|
|
13
|
+
decoratorsCollection.register({
|
|
14
|
+
context(context) {
|
|
15
|
+
context.withGuard = function(guardName) {
|
|
16
|
+
return {
|
|
17
|
+
async loginAs(...args) {
|
|
18
|
+
const client = auth.createAuthenticatorClient();
|
|
19
|
+
const guard = client.use(guardName);
|
|
20
|
+
const requestData = await guard.authenticateAsClient(
|
|
21
|
+
...args
|
|
22
|
+
);
|
|
23
|
+
if (requestData.headers) {
|
|
24
|
+
throw new RuntimeException(
|
|
25
|
+
`Cannot use "${guard.driverName}" guard with browser client`
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
if (requestData.cookies) {
|
|
29
|
+
debug_default("defining cookies with browser context %O", requestData.cookies);
|
|
30
|
+
Object.keys(requestData.cookies).forEach((cookie) => {
|
|
31
|
+
context.setCookie(cookie, requestData.cookies[cookie]);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
if (requestData.session) {
|
|
35
|
+
debug_default("defining session with browser context %O", requestData.session);
|
|
36
|
+
context.setSession(requestData.session);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
context.loginAs = async function(user, ...args) {
|
|
42
|
+
const client = auth.createAuthenticatorClient();
|
|
43
|
+
const guard = client.use();
|
|
44
|
+
const requestData = await guard.authenticateAsClient(user, ...args);
|
|
45
|
+
if (requestData.headers) {
|
|
46
|
+
throw new RuntimeException(`Cannot use "${guard.driverName}" guard with browser client`);
|
|
47
|
+
}
|
|
48
|
+
if (requestData.cookies) {
|
|
49
|
+
debug_default("defining cookies with browser context %O", requestData.cookies);
|
|
50
|
+
Object.keys(requestData.cookies).forEach((cookie) => {
|
|
51
|
+
context.setCookie(cookie, requestData.cookies[cookie]);
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
if (requestData.session) {
|
|
55
|
+
debug_default("defining session with browser context %O", requestData.session);
|
|
56
|
+
context.setSession(requestData.session);
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
return pluginFn;
|
|
63
|
+
};
|
|
64
|
+
export {
|
|
65
|
+
authBrowserClient
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=browser_client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/plugins/japa/browser_client.ts"],"sourcesContent":["/*\n * @adoniss/auth\n *\n * (c) AdonisJS\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n/// <reference types=\"@japa/plugin-adonisjs\" />\n/// <reference types=\"@adonisjs/session/plugins/browser_client\" />\n\nimport type { PluginFn } from '@japa/runner/types'\nimport { decoratorsCollection } from '@japa/browser-client'\nimport { RuntimeException } from '@adonisjs/core/exceptions'\nimport type { ApplicationService } from '@adonisjs/core/types'\n\nimport debug from '../../debug.js'\nimport type { Authenticators, GuardContract, GuardFactory } from '../../types.js'\n\ndeclare module 'playwright' {\n export interface BrowserContext {\n /**\n * Login a user using the default authentication guard when\n * using the browser context to make page visits\n */\n loginAs(\n ...args: {\n [K in keyof Authenticators]: Authenticators[K] extends GuardFactory\n ? ReturnType<Authenticators[K]> extends GuardContract<unknown>\n ? Parameters<ReturnType<Authenticators[K]>['authenticateAsClient']>\n : never\n : never\n }[keyof Authenticators]\n ): Promise<void>\n\n /**\n * Define the authentication guard for login\n */\n withGuard<K extends keyof Authenticators>(\n guard: K\n ): {\n /**\n * Login a user using a specific auth guard\n */\n loginAs(\n ...args: ReturnType<Authenticators[K]> extends GuardContract<unknown>\n ? Parameters<ReturnType<Authenticators[K]>['authenticateAsClient']>\n : never\n ): Promise<void>\n }\n }\n}\n\n/**\n * Browser API client to authenticate users when making\n * HTTP requests using the Japa Browser client.\n */\nexport const authBrowserClient = (app: ApplicationService) => {\n const pluginFn: PluginFn = async function () {\n debug('installing auth browser client plugin')\n\n const auth = await app.container.make('auth.manager')\n\n decoratorsCollection.register({\n context(context) {\n /**\n * Define the authentication guard for login and perform\n * login\n */\n context.withGuard = function (guardName) {\n return {\n async loginAs(...args) {\n const client = auth.createAuthenticatorClient()\n const guard = client.use(guardName) as GuardContract<unknown>\n const requestData = await guard.authenticateAsClient(\n ...(args as [user: unknown, ...any[]])\n )\n\n /* c8 ignore next 17 */\n if (requestData.headers) {\n throw new RuntimeException(\n `Cannot use \"${guard.driverName}\" guard with browser client`\n )\n }\n\n if (requestData.cookies) {\n debug('defining cookies with browser context %O', requestData.cookies)\n Object.keys(requestData.cookies).forEach((cookie) => {\n context.setCookie(cookie, requestData.cookies![cookie])\n })\n }\n\n if (requestData.session) {\n debug('defining session with browser context %O', requestData.session)\n context.setSession(requestData.session)\n }\n },\n }\n }\n\n /**\n * Login a user using the default authentication guard when\n * using the browser context to make page visits\n */\n context.loginAs = async function (user, ...args) {\n const client = auth.createAuthenticatorClient()\n const guard = client.use() as GuardContract<unknown>\n const requestData = await guard.authenticateAsClient(user, ...args)\n\n /* c8 ignore next 15 */\n if (requestData.headers) {\n throw new RuntimeException(`Cannot use \"${guard.driverName}\" guard with browser client`)\n }\n\n if (requestData.cookies) {\n debug('defining cookies with browser context %O', requestData.cookies)\n Object.keys(requestData.cookies).forEach((cookie) => {\n context.setCookie(cookie, requestData.cookies![cookie])\n })\n }\n\n if (requestData.session) {\n debug('defining session with browser context %O', requestData.session)\n context.setSession(requestData.session)\n }\n }\n },\n })\n }\n\n return pluginFn\n}\n"],"mappings":";;;;;;AAaA,SAAS,4BAA4B;AACrC,SAAS,wBAAwB;AA4C1B,IAAM,oBAAoB,CAAC,QAA4B;AAC5D,QAAM,WAAqB,iBAAkB;AAC3C,kBAAM,uCAAuC;AAE7C,UAAM,OAAO,MAAM,IAAI,UAAU,KAAK,cAAc;AAEpD,yBAAqB,SAAS;AAAA,MAC5B,QAAQ,SAAS;AAKf,gBAAQ,YAAY,SAAU,WAAW;AACvC,iBAAO;AAAA,YACL,MAAM,WAAW,MAAM;AACrB,oBAAM,SAAS,KAAK,0BAA0B;AAC9C,oBAAM,QAAQ,OAAO,IAAI,SAAS;AAClC,oBAAM,cAAc,MAAM,MAAM;AAAA,gBAC9B,GAAI;AAAA,cACN;AAGA,kBAAI,YAAY,SAAS;AACvB,sBAAM,IAAI;AAAA,kBACR,eAAe,MAAM,UAAU;AAAA,gBACjC;AAAA,cACF;AAEA,kBAAI,YAAY,SAAS;AACvB,8BAAM,4CAA4C,YAAY,OAAO;AACrE,uBAAO,KAAK,YAAY,OAAO,EAAE,QAAQ,CAAC,WAAW;AACnD,0BAAQ,UAAU,QAAQ,YAAY,QAAS,MAAM,CAAC;AAAA,gBACxD,CAAC;AAAA,cACH;AAEA,kBAAI,YAAY,SAAS;AACvB,8BAAM,4CAA4C,YAAY,OAAO;AACrE,wBAAQ,WAAW,YAAY,OAAO;AAAA,cACxC;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAMA,gBAAQ,UAAU,eAAgB,SAAS,MAAM;AAC/C,gBAAM,SAAS,KAAK,0BAA0B;AAC9C,gBAAM,QAAQ,OAAO,IAAI;AACzB,gBAAM,cAAc,MAAM,MAAM,qBAAqB,MAAM,GAAG,IAAI;AAGlE,cAAI,YAAY,SAAS;AACvB,kBAAM,IAAI,iBAAiB,eAAe,MAAM,UAAU,6BAA6B;AAAA,UACzF;AAEA,cAAI,YAAY,SAAS;AACvB,0BAAM,4CAA4C,YAAY,OAAO;AACrE,mBAAO,KAAK,YAAY,OAAO,EAAE,QAAQ,CAAC,WAAW;AACnD,sBAAQ,UAAU,QAAQ,YAAY,QAAS,MAAM,CAAC;AAAA,YACxD,CAAC;AAAA,UACH;AAEA,cAAI,YAAY,SAAS;AACvB,0BAAM,4CAA4C,YAAY,OAAO;AACrE,oBAAQ,WAAW,YAAY,OAAO;AAAA,UACxC;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SAAO;AACT;","names":[]}
|
|
@@ -3,7 +3,8 @@ import type { ApplicationService, ConfigProvider } from '@adonisjs/core/types';
|
|
|
3
3
|
import type { AuthManager } from './auth_manager.js';
|
|
4
4
|
import type { GUARD_KNOWN_EVENTS } from './symbols.js';
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* Authentication response to login a user as a client.
|
|
7
|
+
* This response is used by Japa plugins
|
|
7
8
|
*/
|
|
8
9
|
export interface AuthClientResponse {
|
|
9
10
|
headers?: Record<string, any>;
|
|
@@ -11,9 +12,14 @@ export interface AuthClientResponse {
|
|
|
11
12
|
session?: Record<string, any>;
|
|
12
13
|
}
|
|
13
14
|
/**
|
|
14
|
-
* A set of properties a guard must implement
|
|
15
|
+
* A set of properties a guard must implement to authenticate
|
|
16
|
+
* incoming HTTP requests
|
|
15
17
|
*/
|
|
16
18
|
export interface GuardContract<User> {
|
|
19
|
+
/**
|
|
20
|
+
* A unique name for the guard driver
|
|
21
|
+
*/
|
|
22
|
+
readonly driverName: string;
|
|
17
23
|
/**
|
|
18
24
|
* Reference to the currently authenticated user
|
|
19
25
|
*/
|
|
@@ -33,26 +39,24 @@ export interface GuardContract<User> {
|
|
|
33
39
|
*/
|
|
34
40
|
authenticationAttempted: boolean;
|
|
35
41
|
/**
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
* exception
|
|
39
|
-
*/
|
|
40
|
-
check(): Promise<boolean>;
|
|
41
|
-
/**
|
|
42
|
-
* The method is used to authenticate the user as
|
|
43
|
-
* client. This method should return cookies,
|
|
44
|
-
* headers, or session state.
|
|
42
|
+
* Authenticates the current request and throws an
|
|
43
|
+
* exception if the request is not authenticated.
|
|
45
44
|
*/
|
|
46
|
-
|
|
45
|
+
authenticate(): Promise<User>;
|
|
47
46
|
/**
|
|
48
|
-
*
|
|
49
|
-
* an exception
|
|
47
|
+
* Check if the current request has been authenticated
|
|
48
|
+
* without throwing an exception.
|
|
50
49
|
*/
|
|
51
|
-
|
|
50
|
+
check(): Promise<boolean>;
|
|
52
51
|
/**
|
|
53
|
-
*
|
|
52
|
+
* The method is used to authenticate the user as client.
|
|
53
|
+
* This method should return cookies, headers, or
|
|
54
|
+
* session state.
|
|
55
|
+
*
|
|
56
|
+
* The rest of the arguments can be anything the guard wants
|
|
57
|
+
* to accept
|
|
54
58
|
*/
|
|
55
|
-
|
|
59
|
+
authenticateAsClient(user: User, ...args: any[]): Promise<AuthClientResponse>;
|
|
56
60
|
/**
|
|
57
61
|
* Aymbol for infer the events emitted by a specific
|
|
58
62
|
* guard
|
|
@@ -60,11 +64,18 @@ export interface GuardContract<User> {
|
|
|
60
64
|
[GUARD_KNOWN_EVENTS]: unknown;
|
|
61
65
|
}
|
|
62
66
|
/**
|
|
63
|
-
* The
|
|
64
|
-
*
|
|
65
|
-
* guard during an HTTP request
|
|
67
|
+
* The guard factory method is called by the create an instance
|
|
68
|
+
* of a guard during an HTTP request
|
|
66
69
|
*/
|
|
67
70
|
export type GuardFactory = (ctx: HttpContext) => GuardContract<unknown>;
|
|
71
|
+
/**
|
|
72
|
+
* Config provider for registering guards. The "name" property
|
|
73
|
+
* is reference to the object key to which the guard is
|
|
74
|
+
* assigned.
|
|
75
|
+
*/
|
|
76
|
+
export type GuardConfigProvider<Factory extends GuardFactory> = {
|
|
77
|
+
resolver: (name: string, app: ApplicationService) => Promise<Factory>;
|
|
78
|
+
};
|
|
68
79
|
/**
|
|
69
80
|
* Authenticators are inferred inside the user application
|
|
70
81
|
* from the config file
|
|
@@ -95,10 +106,4 @@ export type InferAuthEvents<KnownAuthenticators extends Record<string, GuardFact
|
|
|
95
106
|
*/
|
|
96
107
|
export interface AuthService extends AuthManager<Authenticators extends Record<string, GuardFactory> ? Authenticators : never> {
|
|
97
108
|
}
|
|
98
|
-
/**
|
|
99
|
-
* Config provider for exporting guard
|
|
100
|
-
*/
|
|
101
|
-
export type GuardConfigProvider<Guard extends GuardFactory> = {
|
|
102
|
-
resolver: (name: string, app: ApplicationService) => Promise<Guard>;
|
|
103
|
-
};
|
|
104
109
|
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/package.json
CHANGED
|
@@ -1,55 +1,48 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adonisjs/auth",
|
|
3
|
-
"version": "9.0.
|
|
3
|
+
"version": "9.0.1",
|
|
4
4
|
"description": "Official authentication provider for Adonis framework",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "build/index.js",
|
|
7
7
|
"files": [
|
|
8
|
-
"build
|
|
9
|
-
"build/
|
|
10
|
-
"build/
|
|
11
|
-
"build/
|
|
12
|
-
"build/factories",
|
|
13
|
-
"build/providers",
|
|
14
|
-
"build/services",
|
|
15
|
-
"build/src",
|
|
16
|
-
"build/stubs"
|
|
8
|
+
"build",
|
|
9
|
+
"!build/bin",
|
|
10
|
+
"!build/tests",
|
|
11
|
+
"!build/factories"
|
|
17
12
|
],
|
|
18
13
|
"engines": {
|
|
19
14
|
"node": ">=18.16.0"
|
|
20
15
|
},
|
|
21
16
|
"exports": {
|
|
22
17
|
".": "./build/index.js",
|
|
23
|
-
"./types": "./build/src/
|
|
18
|
+
"./types": "./build/src/types.js",
|
|
24
19
|
"./auth_provider": "./build/providers/auth_provider.js",
|
|
25
|
-
"./plugins/api_client": "./build/src/
|
|
26
|
-
"./plugins/browser_client": "./build/src/
|
|
20
|
+
"./plugins/api_client": "./build/src/plugins/japa/api_client.js",
|
|
21
|
+
"./plugins/browser_client": "./build/src/plugins/japa/browser_client.js",
|
|
27
22
|
"./services/main": "./build/services/auth.js",
|
|
28
|
-
"./
|
|
29
|
-
"./
|
|
30
|
-
"./
|
|
31
|
-
"./
|
|
32
|
-
"./types/
|
|
33
|
-
"./session": "./build/src/guards/session/main.js",
|
|
34
|
-
"./basic_auth": "./build/src/guards/basic_auth/main.js",
|
|
35
|
-
"./initialize_auth_middleware": "./build/src/auth/middleware/initialize_auth_middleware.js",
|
|
36
|
-
"./types/session": "./build/src/guards/session/types.js"
|
|
23
|
+
"./initialize_auth_middleware": "./build/src/middleware/initialize_auth_middleware.js",
|
|
24
|
+
"./access_tokens": "./build/modules/access_tokens_guard/main.js",
|
|
25
|
+
"./types/access_tokens": "./build/modules/access_tokens_guard/types.js",
|
|
26
|
+
"./session": "./build/modules/session_guard/main.js",
|
|
27
|
+
"./types/session": "./build/modules/session_guard/types.js"
|
|
37
28
|
},
|
|
38
29
|
"scripts": {
|
|
39
30
|
"pretest": "npm run lint",
|
|
40
31
|
"test": "c8 npm run quick:test",
|
|
41
|
-
"quick:test": "cross-env NODE_DEBUG=\"adonisjs:auth\" node --enable-source-maps --loader=ts-node/esm ./bin/test.js",
|
|
42
32
|
"clean": "del-cli build",
|
|
43
|
-
"
|
|
44
|
-
"
|
|
33
|
+
"typecheck": "tsc --noEmit",
|
|
34
|
+
"copy:templates": "copyfiles \"stubs/**/*.stub\" --up=\"1\" build",
|
|
35
|
+
"precompile": "npm run lint && npm run clean",
|
|
36
|
+
"compile": "tsup-node && tsc --emitDeclarationOnly --declaration",
|
|
37
|
+
"postcompile": "npm run copy:templates",
|
|
45
38
|
"build": "npm run compile",
|
|
46
|
-
"release": "np",
|
|
47
|
-
"version": "npm run build",
|
|
48
39
|
"prepublishOnly": "npm run build",
|
|
49
40
|
"lint": "eslint . --ext=.ts",
|
|
50
|
-
"
|
|
41
|
+
"format": "prettier --write .",
|
|
42
|
+
"release": "np",
|
|
43
|
+
"version": "npm run build",
|
|
51
44
|
"sync-labels": "github-label-sync --labels .github/labels.json adonisjs/auth",
|
|
52
|
-
"
|
|
45
|
+
"quick:test": "cross-env NODE_DEBUG=\"adonisjs:auth:*\" node --enable-source-maps --loader=ts-node/esm ./bin/test.js"
|
|
53
46
|
},
|
|
54
47
|
"keywords": [
|
|
55
48
|
"adonisjs",
|
|
@@ -67,45 +60,50 @@
|
|
|
67
60
|
"url": "https://github.com/adonisjs/auth/issues"
|
|
68
61
|
},
|
|
69
62
|
"devDependencies": {
|
|
70
|
-
"@adonisjs/assembler": "^
|
|
71
|
-
"@adonisjs/core": "^6.1
|
|
72
|
-
"@adonisjs/eslint-config": "^1.1
|
|
73
|
-
"@adonisjs/i18n": "^2.0.0
|
|
74
|
-
"@adonisjs/lucid": "^19.0.0
|
|
75
|
-
"@adonisjs/prettier-config": "^1.1
|
|
76
|
-
"@adonisjs/session": "^7.
|
|
77
|
-
"@adonisjs/tsconfig": "^1.1
|
|
78
|
-
"@commitlint/cli": "^18.
|
|
79
|
-
"@commitlint/config-conventional": "^18.
|
|
80
|
-
"@japa/api-client": "^2.0.
|
|
81
|
-
"@japa/assert": "^2.0
|
|
82
|
-
"@japa/browser-client": "^2.0.
|
|
83
|
-
"@japa/expect-type": "^2.0.
|
|
84
|
-
"@japa/file-system": "^2.0
|
|
85
|
-
"@japa/plugin-adonisjs": "^
|
|
86
|
-
"@japa/runner": "^3.1.
|
|
87
|
-
"@japa/snapshot": "^2.0.
|
|
88
|
-
"@swc/core": "^1.3.
|
|
89
|
-
"@types/basic-auth": "^1.1.
|
|
90
|
-
"@types/luxon": "^3.
|
|
91
|
-
"@types/node": "^20.10.
|
|
63
|
+
"@adonisjs/assembler": "^7.1.0",
|
|
64
|
+
"@adonisjs/core": "^6.2.1",
|
|
65
|
+
"@adonisjs/eslint-config": "^1.2.1",
|
|
66
|
+
"@adonisjs/i18n": "^2.0.0",
|
|
67
|
+
"@adonisjs/lucid": "^19.0.0",
|
|
68
|
+
"@adonisjs/prettier-config": "^1.2.1",
|
|
69
|
+
"@adonisjs/session": "^7.1.0",
|
|
70
|
+
"@adonisjs/tsconfig": "^1.2.1",
|
|
71
|
+
"@commitlint/cli": "^18.5.0",
|
|
72
|
+
"@commitlint/config-conventional": "^18.5.0",
|
|
73
|
+
"@japa/api-client": "^2.0.2",
|
|
74
|
+
"@japa/assert": "^2.1.0",
|
|
75
|
+
"@japa/browser-client": "^2.0.2",
|
|
76
|
+
"@japa/expect-type": "^2.0.1",
|
|
77
|
+
"@japa/file-system": "^2.2.0",
|
|
78
|
+
"@japa/plugin-adonisjs": "^3.0.0",
|
|
79
|
+
"@japa/runner": "^3.1.1",
|
|
80
|
+
"@japa/snapshot": "^2.0.4",
|
|
81
|
+
"@swc/core": "^1.3.105",
|
|
82
|
+
"@types/basic-auth": "^1.1.7",
|
|
83
|
+
"@types/luxon": "^3.4.2",
|
|
84
|
+
"@types/node": "^20.10.8",
|
|
92
85
|
"@types/set-cookie-parser": "^2.4.7",
|
|
93
|
-
"
|
|
86
|
+
"@types/sinon": "^17.0.3",
|
|
87
|
+
"c8": "^9.0.0",
|
|
88
|
+
"convert-hrtime": "^5.0.0",
|
|
94
89
|
"copyfiles": "^2.4.1",
|
|
95
90
|
"cross-env": "^7.0.3",
|
|
96
91
|
"del-cli": "^5.1.0",
|
|
97
|
-
"eslint": "^8.
|
|
92
|
+
"eslint": "^8.56.0",
|
|
98
93
|
"github-label-sync": "^2.3.1",
|
|
99
94
|
"husky": "^8.0.3",
|
|
100
95
|
"luxon": "^3.4.4",
|
|
101
|
-
"
|
|
102
|
-
"
|
|
103
|
-
"
|
|
96
|
+
"nock": "^13.5.0",
|
|
97
|
+
"np": "^9.2.0",
|
|
98
|
+
"playwright": "^1.41.1",
|
|
99
|
+
"prettier": "^3.1.1",
|
|
104
100
|
"set-cookie-parser": "^2.6.0",
|
|
105
|
-
"
|
|
101
|
+
"sinon": "^17.0.1",
|
|
102
|
+
"sqlite3": "^5.1.7",
|
|
106
103
|
"timekeeper": "^2.3.1",
|
|
107
|
-
"ts-node": "^10.9.
|
|
108
|
-
"
|
|
104
|
+
"ts-node": "^10.9.2",
|
|
105
|
+
"tsup": "^8.0.1",
|
|
106
|
+
"typescript": "^5.3.3"
|
|
109
107
|
},
|
|
110
108
|
"prettier": "@adonisjs/prettier-config",
|
|
111
109
|
"eslintConfig": {
|
|
@@ -118,11 +116,11 @@
|
|
|
118
116
|
},
|
|
119
117
|
"publishConfig": {
|
|
120
118
|
"access": "public",
|
|
121
|
-
"tag": "
|
|
119
|
+
"tag": "latest"
|
|
122
120
|
},
|
|
123
121
|
"np": {
|
|
124
122
|
"message": "chore(release): %s",
|
|
125
|
-
"tag": "
|
|
123
|
+
"tag": "latest",
|
|
126
124
|
"branch": "main",
|
|
127
125
|
"anyBranch": false
|
|
128
126
|
},
|
|
@@ -133,20 +131,21 @@
|
|
|
133
131
|
],
|
|
134
132
|
"exclude": [
|
|
135
133
|
"tests/**",
|
|
134
|
+
"backup/**",
|
|
136
135
|
"factories/**"
|
|
137
136
|
]
|
|
138
137
|
},
|
|
139
138
|
"dependencies": {
|
|
140
|
-
"@
|
|
139
|
+
"@adonisjs/presets": "^2.2.1",
|
|
141
140
|
"basic-auth": "^2.0.1"
|
|
142
141
|
},
|
|
143
142
|
"peerDependencies": {
|
|
144
|
-
"@adonisjs/core": "^6.
|
|
145
|
-
"@adonisjs/lucid": "^19.0.0
|
|
146
|
-
"@adonisjs/session": "^7.0.0
|
|
147
|
-
"@japa/api-client": "^2.0.
|
|
148
|
-
"@japa/browser-client": "^2.0.
|
|
149
|
-
"@japa/plugin-adonisjs": "^
|
|
143
|
+
"@adonisjs/core": "^6.2.0",
|
|
144
|
+
"@adonisjs/lucid": "^19.0.0",
|
|
145
|
+
"@adonisjs/session": "^7.0.0",
|
|
146
|
+
"@japa/api-client": "^2.0.2",
|
|
147
|
+
"@japa/browser-client": "^2.0.2",
|
|
148
|
+
"@japa/plugin-adonisjs": "^3.0.0"
|
|
150
149
|
},
|
|
151
150
|
"peerDependenciesMeta": {
|
|
152
151
|
"@adonisjs/lucid": {
|
|
@@ -164,5 +163,26 @@
|
|
|
164
163
|
"@japa/plugin-adonisjs": {
|
|
165
164
|
"optional": true
|
|
166
165
|
}
|
|
166
|
+
},
|
|
167
|
+
"tsup": {
|
|
168
|
+
"entry": [
|
|
169
|
+
"./index.ts",
|
|
170
|
+
"./src/types.ts",
|
|
171
|
+
"./providers/auth_provider.ts",
|
|
172
|
+
"./src/plugins/japa/api_client.ts",
|
|
173
|
+
"./src/plugins/japa/browser_client.ts",
|
|
174
|
+
"./services/auth.ts",
|
|
175
|
+
"./src/middleware/initialize_auth_middleware.ts",
|
|
176
|
+
"./modules/access_tokens_guard/main.ts",
|
|
177
|
+
"./modules/access_tokens_guard/types.ts",
|
|
178
|
+
"./modules/session_guard/main.ts",
|
|
179
|
+
"./modules/session_guard/types.ts"
|
|
180
|
+
],
|
|
181
|
+
"outDir": "./build",
|
|
182
|
+
"clean": true,
|
|
183
|
+
"format": "esm",
|
|
184
|
+
"dts": false,
|
|
185
|
+
"sourcemap": true,
|
|
186
|
+
"target": "esnext"
|
|
167
187
|
}
|
|
168
188
|
}
|
package/build/configure.js
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* @adonisjs/auth
|
|
3
|
-
*
|
|
4
|
-
* (c) AdonisJS
|
|
5
|
-
*
|
|
6
|
-
* For the full copyright and license information, please view the LICENSE
|
|
7
|
-
* file that was distributed with this source code.
|
|
8
|
-
*/
|
|
9
|
-
/**
|
|
10
|
-
* Configures the auth package
|
|
11
|
-
*/
|
|
12
|
-
export async function configure(command) {
|
|
13
|
-
const codemods = await command.createCodemods();
|
|
14
|
-
/**
|
|
15
|
-
* Publish middleware to user application
|
|
16
|
-
*/
|
|
17
|
-
await command.publishStub('middleware/auth_middleware.stub', {
|
|
18
|
-
entity: command.app.generators.createEntity('auth'),
|
|
19
|
-
});
|
|
20
|
-
await command.publishStub('middleware/guest_middleware.stub', {
|
|
21
|
-
entity: command.app.generators.createEntity('guest'),
|
|
22
|
-
});
|
|
23
|
-
/**
|
|
24
|
-
* Register provider
|
|
25
|
-
*/
|
|
26
|
-
await codemods.updateRcFile((rcFile) => {
|
|
27
|
-
rcFile.addProvider('@adonisjs/auth/auth_provider');
|
|
28
|
-
});
|
|
29
|
-
/**
|
|
30
|
-
* Register middleware
|
|
31
|
-
*/
|
|
32
|
-
await codemods.registerMiddleware('router', [
|
|
33
|
-
{
|
|
34
|
-
path: '@adonisjs/auth/initialize_auth_middleware',
|
|
35
|
-
},
|
|
36
|
-
]);
|
|
37
|
-
await codemods.registerMiddleware('named', [
|
|
38
|
-
{
|
|
39
|
-
name: 'auth',
|
|
40
|
-
path: '#middleware/auth_middleware',
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
name: 'guest',
|
|
44
|
-
path: '#middleware/guest_middleware',
|
|
45
|
-
},
|
|
46
|
-
]);
|
|
47
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { HttpContext } from '@adonisjs/core/http';
|
|
2
|
-
import { FactoryUser, TestLucidUserProvider } from './lucid_user_provider.js';
|
|
3
|
-
import { BasicAuthGuard } from '../src/guards/basic_auth/guard.js';
|
|
4
|
-
import type { UserProviderContract } from '../src/core/types.js';
|
|
5
|
-
/**
|
|
6
|
-
* Exposes the API to create a basic auth guard for testing. Under
|
|
7
|
-
* the hood configures Lucid models for looking up users
|
|
8
|
-
*/
|
|
9
|
-
export declare class BasicAuthGuardFactory {
|
|
10
|
-
merge(): this;
|
|
11
|
-
create<UserProvider extends UserProviderContract<unknown> = TestLucidUserProvider<typeof FactoryUser>>(ctx: HttpContext, provider?: UserProvider): BasicAuthGuard<TestLucidUserProvider<typeof FactoryUser> | UserProvider>;
|
|
12
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* @adonisjs/auth
|
|
3
|
-
*
|
|
4
|
-
* (c) AdonisJS
|
|
5
|
-
*
|
|
6
|
-
* For the full copyright and license information, please view the LICENSE
|
|
7
|
-
* file that was distributed with this source code.
|
|
8
|
-
*/
|
|
9
|
-
import { LucidUserProviderFactory, } from './lucid_user_provider.js';
|
|
10
|
-
import { BasicAuthGuard } from '../src/guards/basic_auth/guard.js';
|
|
11
|
-
/**
|
|
12
|
-
* Exposes the API to create a basic auth guard for testing. Under
|
|
13
|
-
* the hood configures Lucid models for looking up users
|
|
14
|
-
*/
|
|
15
|
-
export class BasicAuthGuardFactory {
|
|
16
|
-
merge() {
|
|
17
|
-
return this;
|
|
18
|
-
}
|
|
19
|
-
create(ctx, provider) {
|
|
20
|
-
return new BasicAuthGuard('basic', ctx, provider || new LucidUserProviderFactory().create());
|
|
21
|
-
}
|
|
22
|
-
}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { Database } from '@adonisjs/lucid/database';
|
|
2
|
-
import { Token } from '../src/core/token.js';
|
|
3
|
-
import { DatabaseTokenProvider } from '../src/core/token_providers/database.js';
|
|
4
|
-
/**
|
|
5
|
-
* Representation of token used for testing
|
|
6
|
-
*/
|
|
7
|
-
export declare class TestToken extends Token {
|
|
8
|
-
type: string;
|
|
9
|
-
userId: string | number;
|
|
10
|
-
static create(userId: number | string, expiry: string | number, size?: number): TestToken;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Test implementation of the database token provider
|
|
14
|
-
*/
|
|
15
|
-
export declare class TestDatabaseTokenProvider extends DatabaseTokenProvider<TestToken> {
|
|
16
|
-
protected prepareToken(dbRow: {
|
|
17
|
-
series: string;
|
|
18
|
-
user_id: string | number;
|
|
19
|
-
type: string;
|
|
20
|
-
token: string;
|
|
21
|
-
created_at: Date;
|
|
22
|
-
expires_at: Date | null;
|
|
23
|
-
}): TestToken;
|
|
24
|
-
protected parseToken(token: TestToken): {
|
|
25
|
-
series: string;
|
|
26
|
-
user_id: string | number;
|
|
27
|
-
type: string;
|
|
28
|
-
token: string;
|
|
29
|
-
created_at: Date;
|
|
30
|
-
updated_at: Date;
|
|
31
|
-
expires_at: Date | null;
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
export declare class DatabaseTokenProviderFactory {
|
|
35
|
-
create(db: Database): TestDatabaseTokenProvider;
|
|
36
|
-
}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* @adonisjs/auth
|
|
3
|
-
*
|
|
4
|
-
* (c) AdonisJS
|
|
5
|
-
*
|
|
6
|
-
* For the full copyright and license information, please view the LICENSE
|
|
7
|
-
* file that was distributed with this source code.
|
|
8
|
-
*/
|
|
9
|
-
import { Token } from '../src/core/token.js';
|
|
10
|
-
import { DatabaseTokenProvider } from '../src/core/token_providers/database.js';
|
|
11
|
-
/**
|
|
12
|
-
* Representation of token used for testing
|
|
13
|
-
*/
|
|
14
|
-
export class TestToken extends Token {
|
|
15
|
-
type = 'test_token';
|
|
16
|
-
static create(userId, expiry, size) {
|
|
17
|
-
const { series, value, hash } = this.seed(size);
|
|
18
|
-
const token = new TestToken(series, value, hash);
|
|
19
|
-
token.setExpiry(expiry);
|
|
20
|
-
token.userId = userId;
|
|
21
|
-
return token;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Test implementation of the database token provider
|
|
26
|
-
*/
|
|
27
|
-
export class TestDatabaseTokenProvider extends DatabaseTokenProvider {
|
|
28
|
-
prepareToken(dbRow) {
|
|
29
|
-
const token = new TestToken(dbRow.series, undefined, dbRow.token);
|
|
30
|
-
token.createdAt = dbRow.created_at;
|
|
31
|
-
if (dbRow.expires_at) {
|
|
32
|
-
token.expiresAt = dbRow.expires_at;
|
|
33
|
-
}
|
|
34
|
-
return token;
|
|
35
|
-
}
|
|
36
|
-
parseToken(token) {
|
|
37
|
-
return {
|
|
38
|
-
series: token.series,
|
|
39
|
-
user_id: token.userId,
|
|
40
|
-
type: token.type,
|
|
41
|
-
token: token.hash,
|
|
42
|
-
created_at: token.createdAt,
|
|
43
|
-
updated_at: token.createdAt,
|
|
44
|
-
expires_at: token.expiresAt || null,
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
export class DatabaseTokenProviderFactory {
|
|
49
|
-
create(db) {
|
|
50
|
-
return new TestDatabaseTokenProvider(db, {
|
|
51
|
-
table: 'remember_me_tokens',
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { Database } from '@adonisjs/lucid/database';
|
|
2
|
-
import { BaseDatabaseUserProvider } from '../src/core/user_providers/database.js';
|
|
3
|
-
export declare class TestDatabaseUserProvider<RealUser extends Record<string, any>> extends BaseDatabaseUserProvider<RealUser> {
|
|
4
|
-
}
|
|
5
|
-
/**
|
|
6
|
-
* Creates an instance of the DatabaseUserProvider with sane
|
|
7
|
-
* defaults for testing
|
|
8
|
-
*/
|
|
9
|
-
export declare class DatabaseUserProviderFactory {
|
|
10
|
-
create(db: Database): TestDatabaseUserProvider<{
|
|
11
|
-
email: any;
|
|
12
|
-
username: any;
|
|
13
|
-
}>;
|
|
14
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* @adonisjs/auth
|
|
3
|
-
*
|
|
4
|
-
* (c) AdonisJS
|
|
5
|
-
*
|
|
6
|
-
* For the full copyright and license information, please view the LICENSE
|
|
7
|
-
* file that was distributed with this source code.
|
|
8
|
-
*/
|
|
9
|
-
import { Hash } from '@adonisjs/core/hash';
|
|
10
|
-
import { Scrypt } from '@adonisjs/core/hash/drivers/scrypt';
|
|
11
|
-
import { BaseDatabaseUserProvider } from '../src/core/user_providers/database.js';
|
|
12
|
-
export class TestDatabaseUserProvider extends BaseDatabaseUserProvider {
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Creates an instance of the DatabaseUserProvider with sane
|
|
16
|
-
* defaults for testing
|
|
17
|
-
*/
|
|
18
|
-
export class DatabaseUserProviderFactory {
|
|
19
|
-
create(db) {
|
|
20
|
-
return new TestDatabaseUserProvider(db, new Hash(new Scrypt({})), {
|
|
21
|
-
id: 'id',
|
|
22
|
-
table: 'users',
|
|
23
|
-
passwordColumnName: 'password',
|
|
24
|
-
uids: ['email', 'username'],
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
}
|