initializeSession method
Inicializa la sesión al arrancar la app:
- Si el token no existe o ha caducado → limpia el storage → devuelve null.
- Si es válido → devuelve los claims del JWT para que el ViewModel pueda extraer rol, apellido, serviceId, etc. directamente del token.
Claims del JWT generados por Spring Boot: sub → userId (String) role → nombre del rol (MEDICO, JEFESERVICIO…) surname → apellido del usuario serviceId → id del servicio asignado exp → expiración (Unix timestamp en segundos)
Implementation
Future<Map<String, dynamic>?> initializeSession() async {
final claims = await _decodePayload();
if (claims == null) {
await logout();
return null;
}
final exp = claims['exp'] as int?;
if (exp == null) {
await logout();
return null;
}
final expiry = DateTime.fromMillisecondsSinceEpoch(exp * 1000);
if (DateTime.now().isAfter(expiry)) {
await logout();
return null;
}
return claims;
}