* 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>
64 lines
1.7 KiB
JavaScript
64 lines
1.7 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 express = require('express');
|
|
const auth = require('../controllers/auth');
|
|
const authenticate = auth.authenticate;
|
|
const restrict = auth.restrict;
|
|
const router = express.Router();
|
|
|
|
/** Redirect logged user to controler page */
|
|
function guest_only(req, res, next) {
|
|
if (req.session.user) {
|
|
res.redirect('/controller');
|
|
} else {
|
|
next();
|
|
}
|
|
}
|
|
|
|
/* GET home page. */
|
|
router.get('/', guest_only, function(req, res, next) {
|
|
res.render('front_door', {title: 'ztncui'});
|
|
});
|
|
|
|
router.get('/logout', function(req, res) {
|
|
req.session.destroy(function() {
|
|
res.redirect('/');
|
|
});
|
|
});
|
|
|
|
router.get('/login', guest_only, function(req, res) {
|
|
let message = null;
|
|
if (req.session.error) {
|
|
if (req.session.error !== 'Access denied!') {
|
|
message = req.session.error;
|
|
}
|
|
} else {
|
|
message = req.session.success;
|
|
}
|
|
res.render('login', { title: 'Login', message: message });
|
|
});
|
|
|
|
router.post('/login', async function(req, res) {
|
|
await authenticate(req.body.username, req.body.password, function(err, user) {
|
|
if (user) {
|
|
req.session.regenerate(function() {
|
|
req.session.user = user;
|
|
req.session.success = 'Authenticated as ' + user.name;
|
|
if (user.pass_set) {
|
|
res.redirect(req.query.redirect || '/controller');
|
|
} else {
|
|
res.redirect('/users/' + user.name + '/password');
|
|
}
|
|
});
|
|
} else {
|
|
req.session.error = 'Authentication failed, please check your username and password.'
|
|
res.redirect('/login');
|
|
}
|
|
});
|
|
});
|
|
module.exports = router;
|