From 650d8ecef3a5ac60607f521f3e8050d4b24f6f44 Mon Sep 17 00:00:00 2001 From: Matheus Albino Brunhara Date: Mon, 16 May 2022 20:15:42 -0500 Subject: [PATCH] =?UTF-8?q?Altera=C3=A7=C3=B5es=20acerca=20de=20login=20e?= =?UTF-8?q?=20session?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/routes/sessions.routes.ts | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/routes/sessions.routes.ts b/src/routes/sessions.routes.ts index 39a9b8a..78e9844 100644 --- a/src/routes/sessions.routes.ts +++ b/src/routes/sessions.routes.ts @@ -1,9 +1,19 @@ import { Router } from 'express'; +import { sign, verify } from 'jsonwebtoken'; + +import authConfig from '../config/auth'; +import AppError from '../errors/AppError'; import AuthenticateUserService from '../services/AuthenticateUserService'; const sessionsRouter = Router(); +interface TokenPayload { + iat: number; + exp: number; + sub: string; +} + // login pode ser: email ou username sessionsRouter.post('/', async (request, response) => { const { login, password } = request.body; @@ -18,4 +28,21 @@ sessionsRouter.post('/', async (request, response) => { return response.json({ message: 'Usuário autenticado com sucesso!', token: token }); }); +sessionsRouter.post('/refresh', async(request, response) => { + const { token } = request.body; + + let sub = null; + let decoded = null; + + try { + decoded = verify(token, authConfig.jwt.secret); + } catch (error) { + throw new AppError('Token de autenticação inválido.', 401); + } + + sub = decoded as TokenPayload; + + return response.json({ "status": "success", "userId": sub.sub }); +}) + export default sessionsRouter;