@opengis/fastify-table
Version:
core-plugins
107 lines (106 loc) • 4.15 kB
JavaScript
import config from "../../../config.js";
// login-password
import login from "./controllers/core/login.js";
import registration from "./controllers/core/registration.js";
import passwordRecovery from "./controllers/core/passwordRecovery.js";
// euSign
import authByData from "./controllers/euSign/authByData.js";
// utils
import logout from "./controllers/core/logout.js";
import getUserInfo from "./controllers/core/getUserInfo.js";
import updateUserInfo from "./controllers/core/updateUserInfo.js";
// 2factor / totp
import verify from "./controllers/2factor/verify.js";
import recovery from "./controllers/2factor/recovery.js";
import reset from "./controllers/2factor/reset.js";
// pages
import loginTemplate from "./controllers/page/loginTemplate.js";
import login2faTemplate from "./controllers/page/login2faTemplate.js";
// jwt
import oauthAuthorize from "./controllers/jwt/authorize.js";
import oauthToken from "./controllers/jwt/token.js";
import qrCode from "./controllers/2factor/qrcode.js";
const params = { config: { policy: "L0" } };
const registrationSchema = {
body: {
type: "object",
required: ["password"],
properties: {
password: { type: "string", minLength: 6, maxLength: 100 },
email: { type: "string", format: "email" },
login: { type: "string" },
first_name: { type: "string" },
last_name: { type: "string" },
},
},
};
function plugin(app, opt = {}) {
if (opt.routes === false || config.auth?.customRoutes) {
return;
}
if (!app.hasRoute({ method: "GET", url: "/logout" })) {
app.get("/logout", params, logout);
}
if (!app.hasRoute({ method: "GET", url: "/api/login" })) {
app.get("/api/login", params, login);
}
if (!app.hasRoute({ method: "POST", url: "/api/login" })) {
app.post("/api/login", params, login);
}
if (!app.hasRoute({ method: "POST", url: "/api/registration" })) {
app.post("/api/registration", { ...params, schema: registrationSchema }, registration);
}
if (!app.hasRoute({ method: "POST", url: "/api/recovery" })) {
app.post("/api/recovery", params, passwordRecovery);
}
// 2factor
if (!app.hasRoute({ method: "GET", url: "/2factor/verify" })) {
app.post("/2factor/verify", params, verify);
}
if (!app.hasRoute({ method: "POST", url: "/2factor/recovery" })) {
app.post("/2factor/recovery", params, recovery);
}
if (!app.hasRoute({ method: "GET", url: "/2factor/recovery" })) {
app.get("/2factor/recovery", params, recovery);
}
if (!app.hasRoute({ method: "GET", url: "/2factor/reset" })) {
app.get("/2factor/reset", { config: { role: "admin" } }, reset);
}
// get/edit user info
if (!app.hasRoute({ method: "GET", url: "/user" })) {
app.get("/user", params, getUserInfo);
}
if (!app.hasRoute({ method: "POST", url: "/user" })) {
app.post("/user", { config: { auth: "creds" } }, updateUserInfo);
}
// jwt
if (!app.hasRoute({ method: "GET", url: "/oauth/authorize" })) {
app.get("/oauth/authorize", params, oauthAuthorize);
}
if (!app.hasRoute({ method: "GET", url: "/oauth/token" })) {
app.get("/oauth/token", params, oauthToken);
}
if (!app.hasRoute({ method: "POST", url: "/oauth/token" })) {
app.post("/oauth/token", params, oauthToken);
}
// euSign
if (!app.hasRoute({ method: "GET", url: "/auth/by_data" }) &&
!config.auth?.customGovId) {
app.get("/auth/by_data", params, authByData);
}
if (!app.hasRoute({ method: "GET", url: "/2factor/qr" })) {
app.get("/2factor/qr", params, qrCode);
}
// pages
if (!app.hasRoute({ method: "GET", url: "/2factor" }) &&
!config.auth?.disable &&
!config.auth?.login2factorPage) {
app.get("/2factor", params, login2faTemplate);
}
if (!app.hasRoute({ method: "GET", url: "/login" }) &&
!config.auth?.disable &&
!config?.auth?.loginPage) {
app.get("/login", params, loginTemplate);
}
}
export default plugin;