UNPKG

als-session

Version:

Flexible and secure session management library for Node.js using encrypted cookies.

66 lines (61 loc) 2.44 kB
const http = require('http'); const sessionMw = require('../lib/session') const port = 3000 const baseUrl = `http://localhost:${port}/` function runServer(options) { const session = sessionMw(options) const server = http.createServer((req, res) => { const next = () => { if (req.url === '/') res.end('Welcome to the Home Page!'); else if (req.url === '/about') res.end('About Page'); else if (req.url === '/login') { req.session.auth = true ; res.end('Logged in'); } else if (req.url === '/logout') { delete req.session.auth; res.end('Logged out'); } else if (req.url === '/dashboard') { if (!req.session.auth) { res.writeHead(302); res.end(); } else res.end('Dashboard'); } else if(req.url === '/add-to-session') { req.session.test = 'value' res.end() } else if(req.url === '/destroy-session') { req.destroySession() res.end() } else if(req.url === '/delete-non-existant') { try { delete req.session.someNonExistentValue res.end('Success') } catch (error) { res.end('Fail') } } else if(req.url === '/not-in-methods') { if(req.session === undefined && res.destroySession === undefined) res.end('Success') else res.end('Fail') } else { res.writeHead(404) res.end() } } try { session(req, res, next) } catch (error) { console.log('Catched here 500',error) res.end(500) } }) server.listen(port, () => { console.log(`Server running on http://localhost:${port}`) }); return server } async function request(url, headers = {},method='GET') { const response = await fetch(`${baseUrl}${url}`, { method, headers }); const text = await response.text(); const status = response.status let cookie = response.headers.get('Set-Cookie') headers = { 'Cookie': cookie } return [status, text, headers, response] } module.exports = { runServer, request, port, baseUrl }