initializeSession method

Future<Map<String, dynamic>?> initializeSession()

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;
}