58 lines
1.5 KiB
JavaScript
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,
|
|
});
|
|
// (!) Добавить чтение из БД
|
|
};
|