backend/src/services/registration.services.js
Fred Boniface 979048105e Fix authentication functions
Signed-off-by: Fred Boniface <fred@fjla.uk>
2023-04-07 17:00:15 +01:00

48 lines
1.9 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')
async function createRegKey(body) {
log.out(`registerServices.createRegKey: Incoming request`, "INFO")
const domain = await clean.getDomainFromEmail(body.email) // The function should validate the email
log.out(`registerServices: New registration request from domain: ${domain}`, "info")
if (domains.includes(domain)) {
log.out(`registerServices.createRegKey: Key from valid domain: ${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");
log.out(`registerServices.createRegKey: Error generating registration email`, "err")
return 500;
}
if (await mail.send(message) == true) {
return {status: 201, message: "email sent"}
}
return {status: 500, message: "server error, email send failed"}
}
return {status: 403, message: "forbidden, domain is not on whitelist"}
}
async function regUser(req) { // Add input validation
log.out(`registrationServices.regUser: Checking validity of : ${req.uuid}`, "info")
const res = await auth.checkRequest(req.uuid)
log.out(`registrationServices.regUser: checkRequest returned: ${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, message: "Unauthorised"}
}
module.exports = {
regUser,
createRegKey
}