als-session
Version:
Flexible and secure session management library for Node.js using encrypted cookies.
66 lines (61 loc) • 2.44 kB
JavaScript
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 }