Begin migration to registration codes

Signed-off-by: Fred Boniface <fred@fjla.uk>
This commit is contained in:
Fred Boniface
2024-03-08 21:39:39 +00:00
parent 8e0b928f27
commit 70c9aa2b1e
3 changed files with 41 additions and 5 deletions

View File

@@ -6,7 +6,36 @@ 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) {
@@ -35,6 +64,7 @@ async function createRegKey(body) {
return { status: 400, errorCode: 901, errorMsg: errors[902] };
}
}
*/
async function regUser(req) {
// Add input validation

View File

@@ -38,6 +38,12 @@ async function generateKey() {
return crypt.randomUUID();
}
export function generateCode(): string {
const bytes = crypt.randomBytes(3);
const randomNumber = bytes.readUIntBE(0, 3) % 1000000;
return randomNumber.toString().padStart(6, '0');
}
async function generateConfirmationEmail(eml: string, uuid: string) {
try {
const htmlTpl = await fs.readFile("mail-templates/register.html", "utf-8");