@adonisjs/auth
Version:
Official authentication provider for Adonis framework
67 lines (65 loc) • 2.57 kB
JavaScript
import {
debug_default
} from "../../../chunk-2VRS2VHB.js";
import "../../../chunk-UXA4FHST.js";
// src/plugins/japa/browser_client.ts
import { decoratorsCollection } from "@japa/browser-client";
import { RuntimeException } from "@adonisjs/core/exceptions";
var 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 client = auth.createAuthenticatorClient();
const guard = client.use(guardName);
const requestData = await guard.authenticateAsClient(
...args
);
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 client = auth.createAuthenticatorClient();
const guard = client.use();
const requestData = await guard.authenticateAsClient(user, ...args);
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
};