mirror of
https://github.com/key-networks/ztncui.git
synced 2024-08-31 04:28:00 +00:00
Building RPM and DEB packages with pkg and fpm
This commit is contained in:
48
src/controllers/auth.js
Normal file
48
src/controllers/auth.js
Normal file
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
ztncui - ZeroTier network controller UI
|
||||
Copyright (C) 2017 Key Networks (https://key-networks.com)
|
||||
Licensed under GPLv3 - see LICENSE for details.
|
||||
*/
|
||||
|
||||
const argon2 = require('argon2');
|
||||
const usersController = require('../controllers/usersController');
|
||||
|
||||
hash_check = async function(user, password) {
|
||||
let verified = false;
|
||||
try {
|
||||
var users = await usersController.get_users();
|
||||
} catch (err) {
|
||||
throw err;
|
||||
}
|
||||
try {
|
||||
verified = await argon2.verify(users[user].hash, password);
|
||||
} catch (err) {
|
||||
throw err;
|
||||
}
|
||||
return verified;
|
||||
}
|
||||
|
||||
exports.authenticate = async function(name, pass, callback) {
|
||||
try {
|
||||
var users = await usersController.get_users();
|
||||
} catch (err) {
|
||||
throw err;
|
||||
}
|
||||
let user = users[name];
|
||||
if (!user) return callback(new Error('cannot find user'));
|
||||
let verified = await hash_check(name, pass);
|
||||
if (verified) {
|
||||
return callback(null, user);
|
||||
} else {
|
||||
return callback(new Error('invalid password'));
|
||||
}
|
||||
}
|
||||
|
||||
exports.restrict = function(req, res, next) {
|
||||
if (req.session.user) {
|
||||
next();
|
||||
} else {
|
||||
req.session.error = 'Access denied!';
|
||||
res.redirect('/login');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user