@adonisjs/auth
Version:
Official authentication provider for Adonis framework
48 lines (47 loc) • 2.06 kB
JavaScript
import { t as debug_default } from "../../../debug-Ckko95-M.js";
import { RuntimeException } from "@adonisjs/core/exceptions";
import { decoratorsCollection } from "@japa/browser-client";
const authBrowserClient = (app) => {
const pluginFn = async function() {
debug_default("installing auth browser client plugin");
const auth = await app.container.make("auth.manager");
decoratorsCollection.register({ context(context) {
context.withGuard = function(guardName) {
return { async loginAs(...args) {
const guard = auth.createAuthenticatorClient().use(guardName);
const requestData = await guard.authenticateAsClient(...args);
/* c8 ignore next 17 */
if (requestData.headers) throw new RuntimeException(`Cannot use "${guard.driverName}" guard with browser client`);
if (requestData.cookies) {
debug_default("defining cookies with browser context %O", requestData.cookies);
Object.keys(requestData.cookies).forEach((cookie) => {
context.setCookie(cookie, requestData.cookies[cookie]);
});
}
if (requestData.session) {
debug_default("defining session with browser context %O", requestData.session);
context.setSession(requestData.session);
}
} };
};
context.loginAs = async function(user, ...args) {
const guard = auth.createAuthenticatorClient().use();
const requestData = await guard.authenticateAsClient(user, ...args);
/* c8 ignore next 15 */
if (requestData.headers) throw new RuntimeException(`Cannot use "${guard.driverName}" guard with browser client`);
if (requestData.cookies) {
debug_default("defining cookies with browser context %O", requestData.cookies);
Object.keys(requestData.cookies).forEach((cookie) => {
context.setCookie(cookie, requestData.cookies[cookie]);
});
}
if (requestData.session) {
debug_default("defining session with browser context %O", requestData.session);
context.setSession(requestData.session);
}
};
} });
};
return pluginFn;
};
export { authBrowserClient };