const log = require('../utils/logs.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 };