feature: authentuication
This commit is contained in:
@ -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,
|
||||
}
|
Reference in New Issue
Block a user