ai-adventure-labs/server/api/log-in.js

58 lines
1.5 KiB
JavaScript

const { User } = require("./utils/user");
const genToken = require("./utils/gen-token");
function verifyParams(req) {
return (
typeof req.username === "string" &&
typeof req.password === "string" &&
(req.gtf === undefined || typeof req.gtf === "boolean")
);
}
module.exports = async function (con, req, cb) {
if (!verifyParams(req))
return cb({
error:
"Invalid params. Params username and password must be a string and exists, gtf must be a boolean",
trace_id: req.trace_id,
ended: true,
});
const invalidData = () =>
cb({
error: "Invalid login or password",
trace_id: req.trace_id,
ended: true,
});
const ok = (userdata, token = null) =>
cb({ result: { ...userdata, token }, trace_id: req.trace_id, ended: true });
// At develop!
cb({ warning: "Method at develop", trace_id: req.trace_id, ended: false });
if (
!!global.config.rootuser?.activated &&
req.username === global.config.rootuser.login
) {
if (req.password === global.config.rootuser.password) {
const user = await User.getUserByName(req.username);
if (user === null) {
console.error("Root user object is null");
return cb({
error: "Unknown error",
trace_id: req.trace_id,
ended: true,
});
}
global.authed.set(con, user);
if (!req.gtf) return ok(user.getUserForAPI(true));
return ok(user.getUserForAPI(true), genToken.registerToken(user));
}
return invalidData();
}
return cb({
error: "Method at develop",
trace_id: req.trace_id,
ended: true,
});
// (!) Добавить чтение из БД
};