Files
hackathon-sfc-a9a4cee231094…/lib/features/auth/domain/usecases/auth_usecases.dart
2026-05-22 18:06:11 -06:00

45 lines
1.1 KiB
Dart

import '../entities/auth_user.dart';
import '../repositories/auth_repository.dart';
/// Caso de uso: Iniciar sesión.
/// Encapsula la lógica de negocio para autenticar un usuario.
class LoginUseCase {
final AuthRepository _repository;
const LoginUseCase(this._repository);
Future<AuthUser> execute({
required String identifier,
required String password,
}) async {
if (identifier.trim().isEmpty) {
throw ArgumentError('El correo o teléfono no puede estar vacío.');
}
if (password.length < 6) {
throw ArgumentError('La contraseña debe tener al menos 6 caracteres.');
}
return _repository.login(
identifier: identifier.trim(),
password: password,
);
}
}
/// Caso de uso: Cerrar sesión.
class LogoutUseCase {
final AuthRepository _repository;
const LogoutUseCase(this._repository);
Future<void> execute() => _repository.logout();
}
/// Caso de uso: Recuperar sesión almacenada.
class GetStoredSessionUseCase {
final AuthRepository _repository;
const GetStoredSessionUseCase(this._repository);
Future<AuthUser?> execute() => _repository.getStoredSession();
}