backend/src/services/registration.services.js
Fred Boniface 72444e9fc9 v2 user routes complete
Signed-off-by: Fred Boniface <fred@fjla.uk>
2023-06-20 21:47:32 +01:00

74 lines
2.5 KiB
JavaScript

const log = require('../utils/log.utils');
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');
async function createRegKey(body) {
log.out('registerServices.createRegKey: Incoming request', 'INFO');
if (body.email) {
const domain = await clean.getDomainFromEmail(body.email);
log.out(`registerServices: Registration request from: ${domain}`, 'info');
if (domains.includes(domain)) {
log.out(`registerServices.createRegKey: Key from valid: ${domain}`,'info');
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');
log.out('registerServices.createRegKey: Error generating email', 'err');
log.out(err, 'err');
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
log.out(`Read UUID: ${req.uuid}`, 'dbug');
log.out(`registrationServices.regUser: Request from: ${req.uuid}`, 'info');
const res = await auth.checkRequest(req.uuid);
log.out(`registrationServices.regUser: ${JSON.stringify(res)}`, 'info');
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) {
log.out('registrationServices: Finding user for given UUID', 'dbug');
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
};