78 lines
2.5 KiB
JavaScript
78 lines
2.5 KiB
JavaScript
const auth = require("../utils/auth.utils");
|
|
const db = require("./dbAccess.services");
|
|
const mail = require("./mail.services");
|
|
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()
|
|
db.addRegReq(key, domain)
|
|
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] };
|
|
}
|
|
}
|
|
|
|
async function regUser(req) {
|
|
// Add input validation
|
|
const regCode = req.uuid.toLocaleUpperCase();
|
|
logger.trace(`Read UUID: ${regCode}`);
|
|
const res = await auth.checkRequest(regCode);
|
|
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] };
|
|
}
|
|
|
|
// Currently errors on a correct code as it cannot be found... Ensure uuid is ALL CAPS
|
|
|
|
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,
|
|
};
|