feature: authentuication

This commit is contained in:
José Conde
2023-01-22 00:02:30 +01:00
parent e5d9ced955
commit 15f012530e
10 changed files with 496 additions and 38 deletions

View File

@ -1,7 +1,13 @@
const moment = require('moment');
const bcrypt = require('bcryptjs');
const crypto = require("crypto");
const { insertSessions, insertSessionTracks } = require("../db/mongo/mongoSessions");
const { createUserMongo, getUserMongo } = require('../db/mongo/mongoUsers');
const { getHistoricalSessions, getIvaoSessionTracks } = require("../requests/ivao/session");
const saltRounds = 10;
async function initSessionsData(opts) {
const { callsign, userId, from, clear = false } = opts;
let to = opts.to;
@ -45,6 +51,39 @@ async function pause(millis) {
await new Promise((resolve) => setTimeout(resolve, millis));
}
function getHashedPassword(password) {
const salt = bcrypt.genSaltSync(saltRounds);
return bcrypt.hashSync(password, salt);
}
async function createUser(request) {
try {
const { username, password, roles, firstname, lastname, vid } = request.body;
const hash = getHashedPassword(password);
const id = crypto.randomBytes(16).toString("hex");
return await createUserMongo({ id, username, hash, roles, firstname, lastname, vid });
} catch (err) {
console.log('err :>> ', err);
}
}
async function authenticate(username, password) {
try {
const user = await getUserMongo(username);
if (bcrypt.compareSync(password, user.hash)) {
delete user.hash;
return user;
}
return undefined;
} catch (err) {
console.log('err :>> ', err);
}
}
module.exports = {
initSessionsData,
createUser,
authenticate,
getHashedPassword,
}