PavelPetrov

PPetrov Nodejs LOGIN

Apr 1st, 2019
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. express = require('express');
  2. bodyParser = require('body-parser');
  3. cookieParser = require('cookie-parser');
  4. session = require('express-session');
  5. pug = require('pug');
  6.  
  7. app = express();
  8. app.use(bodyParser.urlencoded({ extended: true }));
  9. app.set('view engine', 'pug');
  10. app.set('views','./');
  11. app.use(cookieParser());
  12. app.use(session({
  13.     secret: 'random string',
  14.     resave: true,
  15.     saveUninitialized: true
  16. }));
  17. app.listen(8080);
  18.  
  19. users = {ivan: '123', radka: '888', nasko:'777'};
  20.  
  21. app.get('/login', function(req, res) {
  22.     //pug.render(login);
  23.     res.send(pug.render(login, {info: 'PLEASE LOGIN'}));
  24. });
  25.  
  26. app.post('/login', function(req, res){
  27.     if(users[req.body.username]==req.body.password) {
  28.         req.session.username = req.body.username;
  29.         req.session.count = 0;
  30.         res.redirect("/secret");
  31.     } else {
  32.         res.send(pug.render(login, {warn: 'TRY AGAIN'}));
  33.     }
  34. });
  35.  
  36. app.get('/logout', (req, res) => {
  37.     req.session.destroy();
  38.     res.redirect("/");
  39. });
  40.  
  41. app.all('*', function(req, res, next) {
  42.     if(req.session.username) return next();
  43.     else res.redirect("/login");
  44. });
  45.  
  46. app.get('/secret', (req, res) => {
  47.     req.session.count++;
  48.     res.write("<html> User: " + req.session.username + " Count: " + req.session.count);
  49.     res.write("<hr /><a href=''>reload</a> :: <a href='logout'>LOGOUT</a>");
  50.     res.write("<hr />" + (new Date()));
  51.     res.end();
  52. });
  53.  
  54. app.all('*', function(req, res) {
  55.     res.send("No such page! Go to: <a href='/secret'>main page</a>");
  56. });
  57.  
  58. login = `
  59. html
  60.     head
  61.         link(rel="stylesheet", href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css")
  62.     body
  63.         if info
  64.             h1.alert.alert-info=info
  65.         if warn
  66.             h1.alert.alert-warning #{warn}
  67.         form.mx-auto.border.border-primary.w-25.p-3(method="post")
  68.             div.form-group
  69.                 label Username:
  70.                 input.form-control(type="text" name="username" placeholder=" Enter user name ")
  71.             div.form-group
  72.                 label Password:
  73.                 input.form-control(type="password" name="password")
  74.             div.form-group
  75.                 input.btn.btn-primary(type="submit" value="Login")
  76. `;
Add Comment
Please, Sign In to add comment