45 lines
1.1 KiB
Dart
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();
|
|
}
|