Skip to content

Instantly share code, notes, and snippets.

@wkrueger
Last active December 25, 2016 05:02
Show Gist options
  • Save wkrueger/02afff6511704855619b6f222695d0f0 to your computer and use it in GitHub Desktop.
Save wkrueger/02afff6511704855619b6f222695d0f0 to your computer and use it in GitHub Desktop.
auth
const session = require('express-session')
const express = require('express')
var app = express()
app.use(express.session()) //posteriormente configurar a forma de armazenamento do session
//estou convencionando chamadas de REST dentro do prefixo /api. Ou seja, não é uma página, é um serviço
//sua pagina de login chama isso via um AJAX
app.post('/api/login', (req, res, next) => {
let { user, password } = req.body
authenticate({user, password})
.then( resp => {
req.session.user = resp.user
req.session.username = resp.username
//coloca dados que vc vai precisar na aplicação comumente
res.status(200).send({ status : 'OK' })
})
.catch( err => {
if (err.code === 'AUTH_FAIL') return res.status(401).send({ status : 'Unauthorized' })
next(err) //se for algum erro desconhecido, segue pra mostrar na resposta.
//quando vc da um next com um erro, ele vai para o middleware de erro (tem um padrao mas vc pode personalizar)
})
})
// Busca no BD, etc. Retorna promise<X>
function authenticate(...args) {
}
//registra um middleware antes de todas as suas rotas. A ordem de declaração de mws e rotas importa
app.use( (req, res, next) => {
if (!req.session.username) return res.redirect('/login')
next()
})
app.get('/api/logout' /* apagar a sessão etc.. */)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment