UNPKG

@opengis/fastify-table

Version:

core-plugins

107 lines (106 loc) 4.15 kB
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;