Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const express = require('express');
- const asyncify = require('express-asyncify');
- const session = require('express-session');
- const createFileStore = require('session-file-store');
- const bodyParser = require('body-parser');
- const csurf = require('csurf')
- const templates = require('./templates');
- const PORT = 5000;
- const SESSION_COOKIE_SECRET = 'minimum viable web auth secret';
- const SESSOIN_COOKIE_MAX_AGE_IN_MS = 60 * 60 * 1000;
- const SESSION_COOKIE_IS_SECURE = false;
- const app = asyncify(express());
- const FileStore = createFileStore(session);
- app.disable('x-powered-by');
- app.use(session({
- store: new FileStore(),
- name: 'sid',
- resave: false,
- saveUninitialized: false,
- secret: SESSION_COOKIE_SECRET,
- cookie: {
- maxAge: SESSOIN_COOKIE_MAX_AGE_IN_MS,
- secure: SESSION_COOKIE_IS_SECURE,
- sameSite: 'lax',
- },
- }));
- app.use(bodyParser.urlencoded({ extended: false }));
- app.use(csurf({ cookie: false }));
- app.get('/', (req, res) => {
- res.setHeader('Content-type', 'text/html');
- res.end(templates.layout(`
- ${req.session.user ?
- templates.loggedInGreeting(req.session.user) :
- templates.loggedOut()}
- `));
- });
- app.get('/login', (req, res) => {
- res.setHeader('Content-type', 'text/html');
- res.end(templates.layout(`
- ${templates.error(req.session)}
- ${templates.loginForm(req.csrfToken())}
- `));
- });
- app.get('/signup', (req, res) => {
- res.setHeader('Content-type', 'text/html');
- res.end(templates.layout(`
- ${templates.error(req.session)}
- ${templates.signupForm(req.csrfToken())}
- `));
- });
- app.post('/login', (req, res) => {
- if (req.body.email == 'a@a.com' && req.body.password == 'password') {
- req.session.user = {
- id: 'a0234aDdfj-2f4sdfa3oEerq-2U4',
- fullName: 'A Ayevich',
- email: 'a@a.com',
- };
- return res.redirect('/');
- }
- req.session.error = {
- message: 'Invalid email or password',
- };
- res.redirect('/login');
- });
- app.post('/signup', (req, res) => {
- req.session.user = {
- id: 'a0234aDdfj-2f4sdfa3oEerq-2U4',
- fullName: 'Boy Good',
- email: req.body.email,
- };
- return res.redirect('/');
- });
- app.listen(PORT, () => console.log(`on :${PORT}`));
Add Comment
Please, Sign In to add comment