← Todos los flujos
FLUJO F01

Acceso y roles

Quién puede entrar al sistema, a qué pantalla llega según su rol, qué opciones ve en el menú, y qué pasa cuando alguien intenta entrar donde no le corresponde.

OK Rol: Todos
24pasos
22llamadas a la API
2errores de consola
2respuestas con error
0archivos descargados
64.7sduración

📁 Evidencias

Este flujo no descargó archivos. Sus 24 capturas están en la carpeta F01-acceso-y-roles/; hacé clic en cualquiera para ampliarla.

✅ Sin hallazgos

El flujo se completó sin errores de consola, sin respuestas HTTP con error y sin comportamientos anómalos.

1

Pantalla de login

Formulario de acceso: usuario y contraseña (se validan contra LDAP)

Paso 1
Elemento
Login #User / #Password
Pantalla
#/login-page
2

Login como analista.extra4

POST /v1/Authentication/login → HTTP 200. El backend valida contra LDAP y devuelve el JWT (un solo rol). Landing: /dashboard-page

Paso 2
Elemento
Botón Ingresar button[type=submit]
Pantalla
#/dashboard-page
API
POST /v1/Authentication/login 200GET /v1/app/Dashboard/state-claims/all 200GET /v1/app/Dashboard/oldest-claims 200GET /v1/app/Dashboard/monthly-average-elapsed-time/all 200GET /v1/app/Dashboard/bank-claims/open 200
3

Menú lateral del rol Analyst

Usuario analista.extra4. Opciones visibles: Dashboard, Ingreso de denuncias, Mis casos, Repositorio. El menú se arma según el rol del JWT.

Paso 3
Elemento
Sidebar a.sidebar-menu-link
Pantalla
#/dashboard-page
4

Click en «Avatar del usuario (Analyst)»

Despliega el menú de perfil del header

Paso 4
Elemento
Avatar del usuario (Analyst) button.profile-menu-btn
Pantalla
#/dashboard-page
5

Click en «Logout»

Cierra la sesión del rol Analyst y vuelve al login

Paso 5
Elemento
Logout .profile-menu-dropdown .link-btn, .profile-menu-dropdown a[href*='logout']
Pantalla
#/login-page
6

Pantalla de login

Formulario de acceso: usuario y contraseña (se validan contra LDAP)

Paso 6
Elemento
Login #User / #Password
Pantalla
#/
7

Login como reina.santi

POST /v1/Authentication/login → HTTP 200. El backend valida contra LDAP y devuelve el JWT (un solo rol). Landing: /dashboard-page

Paso 7
Elemento
Botón Ingresar button[type=submit]
Pantalla
#/dashboard-page
API
POST /v1/Authentication/login 200GET /v1/app/Configuration/banks 200GET /v1/app/Users/role/analyst 200GET /v1/app/Dashboard/monthly-average-elapsed-time 200GET /v1/app/Dashboard/state-claims/by-analyst 200GET /v1/app/Dashboard/claims-cause/by-bank 200GET /v1/app/Dashboard/oldest-claims/by-analyst 200GET /v1/app/Dashboard/claims/by-bank 200GET /v1/app/Configuration/banks 200GET /v1/app/Users/role/analyst 200GET /v1/app/Users/role/analyst 200
8

Menú lateral del rol Supervisor

Usuario reina.santi. Opciones visibles: Dashboard, Ingreso de denuncias, Repositorio, Usuarios, Configuraciones, Reportes. El menú se arma según el rol del JWT.

Paso 8
Elemento
Sidebar a.sidebar-menu-link
Pantalla
#/dashboard-page
9

Click en «Avatar del usuario (Supervisor)»

Despliega el menú de perfil del header

Paso 9
Elemento
Avatar del usuario (Supervisor) button.profile-menu-btn
Pantalla
#/dashboard-page
10

Click en «Logout»

Cierra la sesión del rol Supervisor y vuelve al login

Paso 10
Elemento
Logout .profile-menu-dropdown .link-btn, .profile-menu-dropdown a[href*='logout']
Pantalla
#/login-page
11

Pantalla de login

Formulario de acceso: usuario y contraseña (se validan contra LDAP)

Paso 11
Elemento
Login #User / #Password
Pantalla
#/
12

Login como auditor.medico1

POST /v1/Authentication/login → HTTP 200. El backend valida contra LDAP y devuelve el JWT (un solo rol). Landing: /medical-home-page

Paso 12
Elemento
Botón Ingresar button[type=submit]
Pantalla
#/medical-home-page
API
POST /v1/Authentication/login 200GET /v1/app/Claims/profile/medical 200
13

Menú lateral del rol Medical

Usuario auditor.medico1. Opciones visibles: Mis casos. El menú se arma según el rol del JWT.

Paso 13
Elemento
Sidebar a.sidebar-menu-link
Pantalla
#/medical-home-page
14

Click en «Avatar del usuario (Medical)»

Despliega el menú de perfil del header

Paso 14
Elemento
Avatar del usuario (Medical) button.profile-menu-btn
Pantalla
#/medical-home-page
15

Click en «Logout»

Cierra la sesión del rol Medical y vuelve al login

Paso 15
Elemento
Logout .profile-menu-dropdown .link-btn, .profile-menu-dropdown a[href*='logout']
Pantalla
#/login-page
16

Pantalla de login

Formulario de acceso: usuario y contraseña (se validan contra LDAP)

Paso 16
Elemento
Login #User / #Password
Pantalla
#/
17

Login como treasury1

POST /v1/Authentication/login → HTTP 200. El backend valida contra LDAP y devuelve el JWT (un solo rol). Landing: /tesorery-home-page

Paso 17
Elemento
Botón Ingresar button[type=submit]
Pantalla
#/tesorery-home-page
API
POST /v1/Authentication/login 200GET /v1/app/Claims/profile/treasurer 200
18

Menú lateral del rol Treasury

Usuario treasury1. Opciones visibles: Mis casos. El menú se arma según el rol del JWT.

Paso 18
Elemento
Sidebar a.sidebar-menu-link
Pantalla
#/tesorery-home-page
19

Click en «Avatar del usuario (Treasury)»

Despliega el menú de perfil del header

Paso 19
Elemento
Avatar del usuario (Treasury) button.profile-menu-btn
Pantalla
#/tesorery-home-page
20

Click en «Logout»

Cierra la sesión del rol Treasury y vuelve al login

Paso 20
Elemento
Logout .profile-menu-dropdown .link-btn, .profile-menu-dropdown a[href*='logout']
Pantalla
#/login-page
21

Login con contraseña incorrecta

POST /v1/Authentication/login → HTTP 400. El usuario NO debe entrar.

Paso 21
Elemento
Botón Ingresar button[type=submit]
Pantalla
#/login-page
API
POST /v1/Authentication/login 400
Errores
Failed to load resource: the server responded with a status of 400 ()
22

Login del usuario «test», que está INACTIVO en la base

HTTP 400. Active=0 en la tabla User y aun así no entra.

Paso 22
Elemento
Botón Ingresar
Pantalla
#/login-page
API
POST /v1/Authentication/login 400
Errores
Failed to load resource: the server responded with a status of 400 ()
23

Un analista intenta abrir la bandeja del médico

El guard compara el rol del usuario con los roles permitidos de la ruta.

Paso 23
Elemento
Ruta /medical-home-page location.hash = '#/medical-home-page'
Pantalla
#/login-page
24

Resultado del intento de acceso cruzado

URL final: /login-page. El guard CERRÓ LA SESIÓN (no es un simple redirect).

Paso 24
Elemento
Guard de rutas
Pantalla
#/login-page