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;