@adonisjs/auth
Version:
Official authentication provider for Adonis framework
131 lines (130 loc) • 3.85 kB
JavaScript
import "node:module";
import { Exception } from "@adonisjs/core/exceptions";
var __defProp = Object.defineProperty;
var __exportAll = (all, no_symbols) => {
let target = {};
for (var name in all) __defProp(target, name, {
get: all[name],
enumerable: true
});
if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
return target;
};
var errors_exports = /* @__PURE__ */ __exportAll({
E_INVALID_CREDENTIALS: () => E_INVALID_CREDENTIALS,
E_UNAUTHORIZED_ACCESS: () => E_UNAUTHORIZED_ACCESS
});
const E_UNAUTHORIZED_ACCESS = class extends Exception {
static status = 401;
static code = "E_UNAUTHORIZED_ACCESS";
redirectTo;
identifier = "errors.E_UNAUTHORIZED_ACCESS";
guardDriverName;
renderers = {
session: (message, error, ctx) => {
switch (ctx.request.accepts([
"html",
"application/vnd.api+json",
"json"
])) {
case "html":
case null:
ctx.session.flashExcept(["_csrf"]);
ctx.session.flash("error", message);
ctx.session.flashErrors({ [error.code]: message });
ctx.response.redirect(error.redirectTo || "/", true);
break;
case "json":
ctx.response.status(error.status).send({ errors: [{ message }] });
break;
case "application/vnd.api+json":
ctx.response.status(error.status).send({ errors: [{
code: error.code,
title: message
}] });
break;
}
},
basic_auth: (message, _, ctx) => {
ctx.response.status(this.status).header("WWW-Authenticate", `Basic realm="Authenticate", charset="UTF-8"`).send(message);
},
access_tokens: (message, error, ctx) => {
switch (ctx.request.accepts([
"html",
"application/vnd.api+json",
"json"
])) {
case "html":
case null:
ctx.response.status(error.status).send(message);
break;
case "json":
ctx.response.status(error.status).send({ errors: [{ message }] });
break;
case "application/vnd.api+json":
ctx.response.status(error.status).send({ errors: [{
code: error.code,
title: message
}] });
break;
}
}
};
getResponseMessage(error, ctx) {
if ("i18n" in ctx) return ctx.i18n.t(error.identifier, {}, error.message);
return error.message;
}
constructor(message, options) {
super(message, {});
this.guardDriverName = options.guardDriverName;
this.redirectTo = options.redirectTo;
}
async handle(error, ctx) {
const renderer = this.renderers[this.guardDriverName];
const message = error.getResponseMessage(error, ctx);
if (!renderer) return ctx.response.status(error.status).send(message);
return renderer(message, error, ctx);
}
};
const E_INVALID_CREDENTIALS = class extends Exception {
static status = 400;
static code = "E_INVALID_CREDENTIALS";
identifier = "errors.E_INVALID_CREDENTIALS";
getResponseMessage(error, ctx) {
if ("i18n" in ctx) return ctx.i18n.t(error.identifier, {}, error.message);
return error.message;
}
async handle(error, ctx) {
const message = this.getResponseMessage(error, ctx);
switch (ctx.request.accepts([
"html",
"application/vnd.api+json",
"json"
])) {
case "html":
case null:
if (ctx.session) {
ctx.session.flashExcept([
"_csrf",
"_method",
"password",
"password_confirmation"
]);
ctx.session.flash("error", message);
ctx.session.flashErrors({ [error.code]: message });
ctx.response.redirect("back", true);
} else ctx.response.status(error.status).send(message);
break;
case "json":
ctx.response.status(error.status).send({ errors: [{ message }] });
break;
case "application/vnd.api+json":
ctx.response.status(error.status).send({ errors: [{
code: error.code,
title: message
}] });
break;
}
}
};
export { __exportAll as i, E_UNAUTHORIZED_ACCESS as n, errors_exports as r, E_INVALID_CREDENTIALS as t };