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