mirror of
https://github.com/key-networks/ztncui.git
synced 2025-10-07 13:55:05 +02:00
* remove CDN
* Add a link to "members" in the network detail page
* Show object values as JSON
* remove TLS options
* Minor style improvements
* Show object values as JSON (member_detail)
* Add missing 'const'
* Navbar height fix
* Merge jQuery ready functions
* Change brand
* Merge network pages (name, members, detail) into single page and...
* Show ZT version on controller index page
* Show count of members
* Use <code> tag to display JSON data
* Fix error in some "error" pages caused by missing "navigate" when
rendering nav items, use pug mixin to render nav items.
* Adjust column widths of network list
* Refactor: move duplicated nav code to `head_layout`
* Remove some debug logging code
* Get network members detail parallelly
* Add missing frontend script for members
* Revert "Change brand"
* Remove "members" and "name" pages which are merged into "detail"
* Add DNS support
* Trivial changes (table width etc.)
* Don't try to read TLS cert files when not using HTTPS
* Validate DNS IP
* Downgrade jquery to 3.4.1 to fix nav bar collapse
* Revert "Navbar height fix"
This reverts commit 8edaa9aa81
, which
break the nav item height on mobile.
* Add missing margin for some buttons
* Display current DNS configuration above inputs
* Change network rename UI/UX
* Includes 'jquery.min.js' in pkg
* Improve JSON value rendering
* Get peer status of network members
* Display members with peer status
* Show controller itself as "CONTROLLER"
* Display peer address
* Improve login redirection
* pr57: Doc updates; version bump
* pr57: Year update
Co-authored-by: Key Networks <34238649+key-networks@users.noreply.github.com>
48 lines
1.2 KiB
JavaScript
48 lines
1.2 KiB
JavaScript
/*
|
|
ztncui - ZeroTier network controller UI
|
|
Copyright (C) 2017-2021 Key Networks (https://key-networks.com)
|
|
Licensed under GPLv3 - see LICENSE for details.
|
|
*/
|
|
|
|
const argon2 = require('argon2');
|
|
const usersController = require('../controllers/usersController');
|
|
|
|
const 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?redirect=' + encodeURIComponent(req.originalUrl));
|
|
}
|
|
}
|