feat:implementacion grafica 2.0
This commit is contained in:
44
lib/features/auth/domain/usecases/auth_usecases.dart
Normal file
44
lib/features/auth/domain/usecases/auth_usecases.dart
Normal file
@@ -0,0 +1,44 @@
|
||||
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();
|
||||
}
|
||||
Reference in New Issue
Block a user