Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const storage = require('../modules/mongodb.js');
- const auth = require('../modules/check.js');
- const express = require('express');
- const bodyParser = require('body-parser');
- const cookieParser = require('cookie-parser');
- const session = require('express-session');
- const crypto = require('crypto');
- const passport = require('passport');
- const LocalStrategy = require('passport-local').Strategy;
- let router = express.Router();
- router.use(express.static('public'));
- router.use(bodyParser.urlencoded({ extended: true }));
- router.use(bodyParser.json());
- router.use(bodyParser.urlencoded({ extended: false }));
- router.use(cookieParser());
- router.use(session({
- secret: 'C1a55ifi3d,!!!',
- resave: false,
- saveUninitialized: true
- }))
- router.use(passport.initialize());
- router.use(passport.session())
- const serverSalt = "Dis iz ma Salttttt lain, sou dunno luk over hier"
- function sha512(password, salt) {
- const hash = crypto.createHmac('sha512', salt);
- hash.update(password);
- const value = hash.digest('hex');
- return {
- salt: salt,
- passwordHash: value
- };
- };
- passport.use(new LocalStrategy(
- function (username, password, done) {
- let hash = sha512(password, serverSalt).passwordHash;
- storage.getUserByLoginAndPasshash(username, hash)
- .then(user => {
- done(user ? null : 'Invalid username or password', user);
- });
- }
- ));
- passport.serializeUser(function (user, done) {
- done(null, user._id);
- });
- passport.deserializeUser(function (_id, done) {
- storage.getUser(_id)
- .then(user => {
- done(user ? null : 'No user', user);
- });
- });
- router.get('/login',
- (req, res) => {
- const message = "";
- res.render('login', { message });
- });
- router.post('/login', function (req, res, next) {
- if (req.body.password === "") {
- const message = "Wrong login or password"
- res.render('login', { message })
- } else {
- passport.authenticate('local', function (err, user, info) {
- if (err) {
- const message = "Wrong login or password"
- res.render('login', { message })
- } else {
- req.logIn(user, function (err) {
- if (err) { console.log(err) }
- res.redirect('/');
- })
- }
- }
- )(req, res, next);
- }
- }
- );
- router.get('/logout',
- auth.checkAuth,
- (req, res) => {
- req.logout();
- res.redirect('/');
- });
- router.get('/admin/:id(\\d+)',
- auth.checkAdmin,
- (req, res) => {
- storage.usersGetAll()
- .then(users => res.render('admin', { users, user: req.user }))
- .catch(error => {
- console.log(error);
- res.sendStatus(404);
- });
- });
- router.get('/profile/:id(\\d+)',
- auth.checkAuth,
- (req, res) => res.render('profile', { user: req.user }));
- module.exports = router;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement