feat: roles con modulos por rol + mejoras Mi dia y descarte
- Matriz de roles (vendedor, administracion_venta, director_ventas, escrituracion, direccion_general, admin) con modulos visibles por rol; auth/me y login incluyen 'modulos'; PATCH /usuarios/:id/rol (admin). - Landing: Cobranza -> Clientes, Chat IA -> Chat Hermes, nuevo modulo Contactos (vista interna leyendo el tablero Contactos), grid filtrado por rol, rol visible en Configuracion de cuenta. - Dashboards: tab 'Tablero comercial' y tabs filtrados por rol. - Boton '<- Menu' en el header de todas las apps. - Mi dia: cada lead muestra el ultimo cambio (que, quien, cuando) desde el activity log de Monday (normalizacion de created_at 100ns/us/ms). - Descarte: el motivo se crea en el grupo de su categoria en el tablero Motivos No Compra.
This commit is contained in:
@@ -6,6 +6,9 @@ export interface UsuarioSesion {
|
||||
nombre: string
|
||||
rol: string
|
||||
asignacion: string | null
|
||||
// Módulos del ecosistema visibles para el rol (matriz del API; presente en
|
||||
// /auth/me y /auth/login desde sep-2026)
|
||||
modulos?: string[]
|
||||
}
|
||||
|
||||
export interface Sesion {
|
||||
@@ -76,6 +79,14 @@ export function manejar401(res: Response): void {
|
||||
if (typeof window !== 'undefined') window.location.reload()
|
||||
}
|
||||
|
||||
/** GET /auth/me — perfil fresco del usuario autenticado (incluye modulos del rol) */
|
||||
export async function getMe(): Promise<UsuarioSesion> {
|
||||
const res = await fetch(`${API_URL}/auth/me`, conAuth())
|
||||
manejar401(res)
|
||||
if (!res.ok) throw new Error(`Error ${res.status}`)
|
||||
return (await res.json()) as UsuarioSesion
|
||||
}
|
||||
|
||||
/**
|
||||
* POST /auth/cambiar-password. Lanza Error con el mensaje del API cuando
|
||||
* falla (p. ej. "La contraseña actual no es correcta"); no toca la sesión.
|
||||
|
||||
Reference in New Issue
Block a user