@adonisjs/auth
Version:
Official authentication provider for Adonis framework
46 lines (45 loc) • 1.51 kB
JavaScript
import { t as debug_default } from "../../../debug-Ckko95-M.js";
import { ApiClient, ApiRequest } from "@japa/api-client";
const authApiClient = (app) => {
const pluginFn = function() {
debug_default("installing auth api client plugin");
ApiRequest.macro("loginAs", function(user, ...args) {
this.authData = {
guard: "__default__",
args: [user, ...args]
};
return this;
});
ApiRequest.macro("withGuard", function(guard) {
return { loginAs: (...args) => {
this.authData = {
guard,
args
};
return this;
} };
});
ApiClient.setup(async (request) => {
const auth = await app.container.make("auth.manager");
const authData = request["authData"];
if (!authData) return;
const client = auth.createAuthenticatorClient();
const requestData = await (authData.guard === "__default__" ? client.use() : client.use(authData.guard)).authenticateAsClient(...authData.args);
/* c8 ignore next 13 */
if (requestData.headers) {
debug_default("defining headers with api client request %O", requestData.headers);
request.headers(requestData.headers);
}
if (requestData.session) {
debug_default("defining session with api client request %O", requestData.session);
request.withSession(requestData.session);
}
if (requestData.cookies) {
debug_default("defining session with api client request %O", requestData.session);
request.cookies(requestData.cookies);
}
});
};
return pluginFn;
};
export { authApiClient };