backend/src/services/registration.services.js
Fred Boniface 70c9aa2b1e Begin migration to registration codes
Signed-off-by: Fred Boniface <fred@fjla.uk>
2024-03-08 21:39:39 +00:00

107 lines
3.6 KiB
JavaScript

const auth = require("../utils/auth.utils");
const db = require("./dbAccess.services");
const mail = require("./mail.services");
const clean = require("../utils/sanitizer.utils");
const domains = require("../configs/domains.configs");
const errors = require("../configs/errorCodes.configs");
import { logger } from "../utils/logger.utils";
import { getDomainFromEmail } from "../utils/sanitizer.utils";
import { valid as validDomains } from "../configs/domains.configs";
import { generateCode } from "../utils/auth.utils";
async function createRegKey(body) {
logger.debug("registerServices.createRegKey: Incoming request");
if (body.email) {
const domain = getDomainFromEmail(body.email);
logger.info(`registerServices: Registration request from: ${domain}`);
if (validDomains.includes(domain)) {
logger.debug(`registerServices.createRegKey: Key from valid: ${domain}`);
const key = generateCode()
const message = await auth.generateConfirmationEmail(body.email, key);
if (!message) {
const err = new Error("Message Generation Error");
logger.error(err, "registerServices.createRegKey: Error generating email");
return 500;
}
if ((await mail.send(message)) == true) {
return {status: 201, message: "email sent"};
}
return {status:500, errorCode:950, errorMsg: errors[950]}
}
return { status: 403, errorCode: 702, errorMsg: errors[702] };
} else {
return { status: 400, errorCode: 901, errorMsg: errors[902] };
}
} // NEXT-- UPDATE EMAIL TEMPLATE TO ACCEPT SIX DIGIT CODE RATHER THAN UUID - HTML TEMPLATE NEEDS COMPLETELY REDOING
/* OLD FUNCTION
async function createRegKey(body) {
logger.debug("registerServices.createRegKey: Incoming request");
if (body.email) {
const domain = await clean.getDomainFromEmail(body.email);
logger.info(`registerServices: Registration request from: ${domain}`);
if (domains.includes(domain)) {
logger.debug(`registerServices.createRegKey: Key from valid: ${domain}`);
const uuid = await auth.generateKey();
db.addRegReq(uuid, domain);
const message = await auth.generateConfirmationEmail(body.email, uuid);
if (!message) {
const err = new Error("Message generation error");
logger.error(
err,
"registerServices.createRegKey: Error generating email"
);
return 500;
}
if ((await mail.send(message)) == true) {
return { status: 201, message: "email sent" };
}
return { status: 500, errorCode: 950, errorMsg: errors[950] };
}
return { status: 403, errorCode: 702, errorMsg: errors[702] };
} else {
return { status: 400, errorCode: 901, errorMsg: errors[902] };
}
}
*/
async function regUser(req) {
// Add input validation
logger.trace(`Read UUID: ${req.uuid}`);
const res = await auth.checkRequest(req.uuid);
logger.debug(res, "registrationServices");
if (res.result) {
const uuid = await auth.generateKey();
const apiKey = await db.addUser(uuid, res.domain);
if (apiKey) {
db.delRegReq(req.uuid);
return { status: 201, message: "User added", api_key: uuid };
}
}
return { status: 401, errorCode: 703, errorMsg: errors[703] };
}
async function getUser(uuid) {
try {
const filter = {
uuid: uuid,
};
const res = await db.query("users", filter, false);
if (res.length) {
return res;
} else {
return { status: 404, errorCode: 400, errorMsg: errors[400] };
}
} catch (err) {
console.log(err);
return { status: 500, errorCode: 951, errorMsg: errors[951] };
}
}
module.exports = {
regUser,
createRegKey,
getUser,
};