UNPKG

@adonisjs/auth

Version:

Official authentication provider for Adonis framework

48 lines (47 loc) 2.06 kB
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 };