isBiometricEnabledForUser function

Future<ApiResult> isBiometricEnabledForUser(
  1. String userId
)

Verifica si un usuario específico tiene la biometría habilitada. Retorna un Map con { success, message, code, error, isEnabled }.

Implementation

Future<ApiResult> isBiometricEnabledForUser(String userId) async {
  if (userId.trim().isEmpty) {
    return ApiResult(
      success: false,
      message: 'userId no proporcionado',
      code: 'BiometricInvalidUserId',
      error: null,
    );
  }

  try {
    final bool isDeviceSupported = await _localAuth.isDeviceSupported();
    final bool canCheckBiometrics = await _localAuth.canCheckBiometrics;
    if (!isDeviceSupported && !canCheckBiometrics) {
      return ApiResult(
        success: false,
        message: 'Dispositivo no compatible con biometría',
        code: 'BiometricNotSupported',
        error: null,
      );
    }

    final List<BiometricType> availableBiometrics =
        await _localAuth.getAvailableBiometrics();
    if (availableBiometrics.isEmpty) {
      return ApiResult(
        success: false,
        message: 'No hay credenciales biométricas registradas',
        code: 'BiometricNotEnrolled',
        error: null,
      );
    }

    final users = await getUsersWithBiometrics();
    return ApiResult(
        success: true,
        message: 'Verificación exitosa',
        code: 'BiometricCheckSuccess',
        error: null,
        data: {
          'isEnabled': users.contains(userId),
        });
  } catch (e) {
    debugPrint('Error en isBiometricEnabledForUser: $e');
    return ApiResult(
      success: false,
      message: 'Error al verificar la biometría para el usuario',
      code: 'BiometricCheckError',
      error: e.toString(),
    );
  }
}