auth.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /*
  2. ztncui - ZeroTier network controller UI
  3. Copyright (C) 2017 Key Networks (https://key-networks.com)
  4. Licensed under GPLv3 - see LICENSE for details.
  5. */
  6. const argon2 = require('argon2');
  7. const usersController = require('../controllers/usersController');
  8. hash_check = async function(user, password) {
  9. let verified = false;
  10. try {
  11. var users = await usersController.get_users();
  12. } catch (err) {
  13. throw err;
  14. }
  15. try {
  16. verified = await argon2.verify(users[user].hash, password);
  17. } catch (err) {
  18. throw err;
  19. }
  20. return verified;
  21. }
  22. exports.authenticate = async function(name, pass, callback) {
  23. try {
  24. var users = await usersController.get_users();
  25. } catch (err) {
  26. throw err;
  27. }
  28. let user = users[name];
  29. if (!user) return callback(new Error('cannot find user'));
  30. let verified = await hash_check(name, pass);
  31. if (verified) {
  32. return callback(null, user);
  33. } else {
  34. return callback(new Error('invalid password'));
  35. }
  36. }
  37. exports.restrict = function(req, res, next) {
  38. if (req.session.user) {
  39. next();
  40. } else {
  41. req.session.error = 'Access denied!';
  42. res.redirect('/login');
  43. }
  44. }