Last active
December 25, 2016 05:02
-
-
Save wkrueger/02afff6511704855619b6f222695d0f0 to your computer and use it in GitHub Desktop.
auth
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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