UNPKG

@opengis/fastify-table

Version:

core-plugins

47 lines (46 loc) 1.92 kB
import config from "../../../../config.js"; import pgClients from "../../pg/pgClients.js"; import logger from "../../logger/getLogger.js"; import verifyPassword from "./verifyPassword.js"; import authorizeUser from "./authorizeUser.js"; export default async function loginUser(req, reply) { const { username, password } = (req.method === "POST" ? req.body : req.query) || {}; const { pg = pgClients.client } = req; if (!config.pg) { return req.method === "GET" ? reply.status(302).redirect("/login?confirm=wrong_pass&message=empty pg") : reply.status(400).send({ error: "empty pg", code: 400 }); } if (!config.redis) { return req.method === "GET" ? reply .status(302) .redirect("/login?confirm=wrong_pass&message=empty redis") : reply.status(400).send({ error: "empty redis", code: 400 }); } const { user, message = "invalid user" } = (await verifyPassword({ pg, username, password, })) || {}; if (!user) { return req.method === "GET" ? reply .status(302) .redirect(`/login?confirm=wrong_pass&message=${message}`) : reply.status(400).send({ error: message, code: 400 }); } if (!user && (req.query?.username || req.body?.username)) { return req.method === "GET" ? reply .status(302) .redirect(`/login?confirm=wrong_pass&message=${message}`) : reply.status(400).send({ error: message, code: 400 }); } logger.metrics("user.login"); const authType = "creds-" + (user.user_type === "admin" ? "admin" : "user"); const result = await authorizeUser(user, req, authType); // creds-admin / creds-admin return req.method === "GET" ? reply.status(302).redirect(result) : reply.status(200).send(result); }