File size: 1,494 Bytes
94ad3aa
 
 
 
4ec305b
 
 
 
 
94ad3aa
 
 
4ec305b
94ad3aa
 
b6ee67e
 
4ec305b
b6ee67e
 
 
 
 
 
0bfb6b2
 
 
 
 
b6ee67e
 
 
4ec305b
 
 
 
 
 
 
ff076f7
 
 
7493ff2
ff076f7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/**
 * Controladores del modulo de autenticacion.
 *
 * Responsabilidades:
 *   - login   β†’ recibir credenciales, delegar validacion a auth.service.js,
 *               responder con { token, user }.
 *   - me      β†’ devolver el usuario autenticado extraido del JWT (req.user).
 *   - logout  β†’ invalidar el token activo (jti + exp extraidos del payload JWT
 *               ya verificado por requireAuth); responder 200 con mensaje.
 *
 * Errores:
 *   - 401 INVALID_CREDENTIALS β†’ email o password incorrectos (mensaje generico).
 *   - 401 UNAUTHORIZED        β†’ token invalido, ausente o ya invalidado (en requireAuth).
 */

import * as authService from './auth.service.js';
import { ok } from '../utils/apiResponse.js';
import { verifyToken } from './jwt.js';

export const login = async (req, res) => {
  const data = await authService.login(req.body);
  ok(res, data);
};

export const register = async (req, res) => {
  const data = await authService.register(req.body);
  ok(res, data);
};

export const me = async (req, res) => {
  ok(res, { user: req.user });
};

export const logout = (req, res) => {
  const token = req.headers.authorization.slice('Bearer '.length).trim();
  const payload = verifyToken(token);
  authService.logout({ jti: payload.jti, exp: payload.exp });
  ok(res, { message: 'Logged out successfully' });
};

export const updateTelegram = async (req, res) => {
  const data = await authService.updateTelegram(req.user.id, req.body);
  ok(res, data);
};