From 330e8e02a0a3f9420b07cad1e01c6accc781838e Mon Sep 17 00:00:00 2001 From: Fred Boniface Date: Tue, 4 Apr 2023 22:12:38 +0100 Subject: [PATCH] Add request and register functions Signed-off-by: Fred Boniface --- src/services/auth.services.js | 38 ++++++++++++------------------- src/services/dbAccess.services.js | 12 +++++++++- src/utils/auth.utils.js | 7 ++---- src/utils/checkauth.utils.js | 0 src/utils/sanitizer.utils.js | 8 ++++++- 5 files changed, 34 insertions(+), 31 deletions(-) delete mode 100644 src/utils/checkauth.utils.js diff --git a/src/services/auth.services.js b/src/services/auth.services.js index 024d255..e4a4248 100644 --- a/src/services/auth.services.js +++ b/src/services/auth.services.js @@ -1,41 +1,31 @@ -const axios = require('axios') const log = require('../utils/log.utils') const util = require('../utils/auth.utils') const db = require('../services/dbAccess.services') +const mail = require('../services/mail.services') +const clean = require('../utils/sanitizer.utils') +const domList= require('../configs/domains.configs') -async function createRegKey(){ - const uuid = util.generateKey(); - return uuid.token; +async function createRegKey(eml){ + const domain = clean.splitDomain(eml) // Obtain mail domain as that is all that needs storing + if (domain in domList.valid) { + const uuid = util.generateKey(); + db.addRegReq(await uuid, await domain) + mail.sendRegister("mail", "uuid"); + return 201 + } else { + return 401 + } } async function regUser(req) { if (util.checkRequest(req.key) == true) { - apiKey = await db.addUser(hash) + apiKey = await db.addUser(await util.generateKey()) return {status: 201, message: "User added", api_key: apiKey} } else { return {status: 401, message: "Unautorised"} } } -async function sendToGitea(body) { - let key = process.env.OWL_GIT_ISSUEBOT - let url = process.env.OWL_GIT_APIENDPOINT - let opts = { - headers: { - Authorization: key - } - } - var res = await axios.post(url, body, opts) - // Need to read the output from the POST and pass the result upwards to the client. - if (res.status == 201) { - log.out("issueService.sendToGitea: Issue sent to Gitea", "info") - return {status: res.status,message:"issue created"} - } else { - log.out(`issueService.sendToGitea: Failed to send issue to Gitea: ${res.body}`, "err") - return {status: res.status,message:"issue not created"} - } -} - module.exports = { regUser, createRegKey diff --git a/src/services/dbAccess.services.js b/src/services/dbAccess.services.js index 605df9f..a7ee618 100644 --- a/src/services/dbAccess.services.js +++ b/src/services/dbAccess.services.js @@ -42,6 +42,15 @@ async function addUser(uuid, domain) { return res; } +async function addRegReq(uuid) { + log.out(`dbAccess.addRegReq: Adding registration request`) + let doc = {uuid: uuid, time: new Date} + await client.connect(); + let col = db.collection("registrations"); + res = col.insertOne(doc); + return res; +} + async function userAtime(uuid) { log.out(`dbAccess.userAtime: Updating access time for user`) let q = {uuid: uuid}; @@ -56,5 +65,6 @@ module.exports = { query, increment, addUser, - userAtime + userAtime, + addRegReq } \ No newline at end of file diff --git a/src/utils/auth.utils.js b/src/utils/auth.utils.js index e41bee1..98d84fa 100644 --- a/src/utils/auth.utils.js +++ b/src/utils/auth.utils.js @@ -5,17 +5,14 @@ const db = require('../services/dbAccess.services') // Checks users registration key against issued keys async function checkUser(key) { q = {uuid: key}; - res = db.query(q); + res = db.query("registrations", q); log.out(`authUtils.checkUser: DB Query answer: ${await res}`) return await res } // Creates an API key for a user async function generateKey() { - const saltRounds = 10 - const token = crypto.randomUUID() - const hash = bcrypt.hash(token, saltRounds); - return {user_key: token, hash_key: await hash} + return crypto.randomUUID() }; module.export = { diff --git a/src/utils/checkauth.utils.js b/src/utils/checkauth.utils.js deleted file mode 100644 index e69de29..0000000 diff --git a/src/utils/sanitizer.utils.js b/src/utils/sanitizer.utils.js index 28aade0..3c3db19 100644 --- a/src/utils/sanitizer.utils.js +++ b/src/utils/sanitizer.utils.js @@ -38,8 +38,14 @@ function cleanNrcc(input) { return rmPara; } +async function splitDomain(mail) { + split = mail.split("@") + return split[1] +} + module.exports = { cleanApiEndpointTxt, cleanApiEndpointNum, - cleanNrcc + cleanNrcc, + splitDomain } \ No newline at end of file