Base server logic
This commit is contained in:
13
controllers/admin.js
Normal file
13
controllers/admin.js
Normal file
@@ -0,0 +1,13 @@
|
||||
"use strict";
|
||||
|
||||
var express = require('express');
|
||||
var router = express.Router();
|
||||
|
||||
/**
|
||||
* Admin
|
||||
*/
|
||||
router.get('/', (req, res) => {
|
||||
res.send('OK');
|
||||
});
|
||||
|
||||
module.exports = router;
|
73
controllers/auth.js
Normal file
73
controllers/auth.js
Normal file
@@ -0,0 +1,73 @@
|
||||
var express = require('express');
|
||||
var router = express.Router();
|
||||
var passport = require('passport');
|
||||
var ExpressBrute = require('express-brute');
|
||||
var ExpressBruteRedisStore = require('express-brute-redis');
|
||||
var moment = require('moment');
|
||||
|
||||
/**
|
||||
* Setup Express-Brute
|
||||
*/
|
||||
var EBstore = new ExpressBruteRedisStore({
|
||||
prefix: 'bf:',
|
||||
client: red
|
||||
});
|
||||
var bruteforce = new ExpressBrute(EBstore, {
|
||||
freeRetries: 5,
|
||||
minWait: 60 * 1000,
|
||||
maxWait: 5 * 60 * 1000,
|
||||
refreshTimeoutOnRequest: false,
|
||||
failCallback(req, res, next, nextValidRequestDate) {
|
||||
req.flash('alert', {
|
||||
class: 'error',
|
||||
title: 'Too many attempts!',
|
||||
message: "You've made too many failed attempts in a short period of time, please try again " + moment(nextValidRequestDate).fromNow() + '.',
|
||||
iconClass: 'fa-times'
|
||||
});
|
||||
res.redirect('/login');
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Login form
|
||||
*/
|
||||
router.get('/login', function(req, res, next) {
|
||||
res.render('auth/login', {
|
||||
usr: res.locals.usr
|
||||
});
|
||||
});
|
||||
|
||||
router.post('/login', bruteforce.prevent, function(req, res, next) {
|
||||
passport.authenticate('local', function(err, user, info) {
|
||||
|
||||
if (err) { return next(err); }
|
||||
|
||||
if (!user) {
|
||||
req.flash('alert', {
|
||||
class: 'error',
|
||||
title: 'Invalid login',
|
||||
message: "The email or password is invalid.",
|
||||
iconClass: 'fa-times'
|
||||
});
|
||||
return res.redirect('/login');
|
||||
}
|
||||
|
||||
req.logIn(user, function(err) {
|
||||
if (err) { return next(err); }
|
||||
req.brute.reset(function () {
|
||||
return res.redirect('/');
|
||||
});
|
||||
});
|
||||
|
||||
})(req, res, next);
|
||||
});
|
||||
|
||||
/**
|
||||
* Logout
|
||||
*/
|
||||
router.get('/logout', function(req, res) {
|
||||
req.logout();
|
||||
res.redirect('/');
|
||||
});
|
||||
|
||||
module.exports = router;
|
13
controllers/pages.js
Normal file
13
controllers/pages.js
Normal file
@@ -0,0 +1,13 @@
|
||||
"use strict";
|
||||
|
||||
var express = require('express');
|
||||
var router = express.Router();
|
||||
|
||||
/**
|
||||
* Home
|
||||
*/
|
||||
router.get('/', (req, res) => {
|
||||
res.send('OK');
|
||||
});
|
||||
|
||||
module.exports = router;
|
Reference in New Issue
Block a user