Files
base_flutter/lib/features/auth/domain/usecases/login_usecase.dart
2025-09-26 20:54:32 +07:00

43 lines
1.1 KiB
Dart

import 'package:fpdart/fpdart.dart';
import '../../../../core/errors/failures.dart';
import '../../../../shared/domain/usecases/usecase.dart';
import '../entities/user.dart';
import '../repositories/auth_repository.dart';
class LoginParams {
final String email;
final String password;
const LoginParams({
required this.email,
required this.password,
});
}
class LoginUseCase implements UseCase<User, LoginParams> {
final AuthRepository repository;
LoginUseCase(this.repository);
@override
Future<Either<Failure, User>> call(LoginParams params) async {
// Validate email format
if (!_isValidEmail(params.email)) {
return Left(ValidationFailure('Invalid email format'));
}
// Validate password
if (params.password.length < 6) {
return Left(ValidationFailure('Password must be at least 6 characters'));
}
return repository.login(
email: params.email,
password: params.password,
);
}
bool _isValidEmail(String email) {
return RegExp(r'^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$').hasMatch(email);
}
}