backend/src/utils/auth.utils.js
Fred Boniface f40cb103f8 Add CSS Inlining to minify.utils
Signed-off-by: Fred Boniface <fred@fjla.uk>
2023-05-02 22:49:51 +01:00

57 lines
1.8 KiB
JavaScript

const log = require('../utils/log.utils')
const crypto = require('crypto')
const db = require('../services/dbAccess.services')
const fs = require('fs/promises')
const minify = require('../utils/minify.utils')
// Checks users registration key against issued keys
async function isAuthed(uuid) { // Needs testing
const q = {uuid: uuid}
const res = await db.query('users', q)
log.out(`authUtils.checkUser: DB Query answer: ${JSON.stringify(res[0])}`, 'dbug')
const authorized = res && res[0] && res[0].domain
if (authorized) db.userAtime(uuid)
return authorized
}
// Checks whether a registration request key is valid
async function checkRequest(key) {
const collection = 'registrations'
const query = {uuid: key}
const res = await db.query(collection, query)
log.out(`authUtils.checkRequest: DB Query result: ${JSON.stringify(res)}`, 'dbug')
const result = res.length > 0 && res[0].time
? { result: true, domain: res[0].domain }
: { result: false }
return result
}
// Creates an API key for a user
async function generateKey() { // Needs testing & moving to 'register.utils'
return crypto.randomUUID()
}
async function generateConfirmationEmail(eml, uuid) {
try {
const htmlTpl = await fs.readFile('mail-templates/register.html', 'utf-8')
const htmlStr = htmlTpl.replace(/>>ACCESSCODE<</g, uuid)
const htmlMin = await minify(htmlStr)
const txtTpl = fs.readFile('mail-templates/register.txt', 'utf-8')
return {
to: eml,
subject: 'OwlBoard Registration',
text: (await txtTpl).replace(/>>ACCESSCODE<</g, uuid),
html: htmlMin
}
} catch(err) {
log.out('mailServices.generateConfirmationEmail: Error reading templates, $(err)', 'err')
return false
}
}
module.exports = {
isAuthed,
generateKey,
generateConfirmationEmail,
checkRequest
}