초기 커밋
This commit is contained in:
22
lib/features/auth/domain/entities/user.dart
Normal file
22
lib/features/auth/domain/entities/user.dart
Normal file
@@ -0,0 +1,22 @@
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
|
||||
import '../../../../shared/models/user_role.dart';
|
||||
|
||||
part 'user.freezed.dart';
|
||||
part 'user.g.dart';
|
||||
|
||||
@freezed
|
||||
class User with _$User {
|
||||
const factory User({
|
||||
required String id,
|
||||
required String email,
|
||||
required String name,
|
||||
@Default(UserRole.user) UserRole role,
|
||||
String? avatarUrl,
|
||||
DateTime? createdAt,
|
||||
DateTime? lastLoginAt,
|
||||
@Default(true) bool isActive,
|
||||
}) = _User;
|
||||
|
||||
factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
|
||||
}
|
||||
20
lib/features/auth/domain/repositories/auth_repository.dart
Normal file
20
lib/features/auth/domain/repositories/auth_repository.dart
Normal file
@@ -0,0 +1,20 @@
|
||||
import '../entities/user.dart';
|
||||
|
||||
abstract class AuthRepository {
|
||||
Future<User> login({
|
||||
required String email,
|
||||
required String password,
|
||||
});
|
||||
|
||||
Future<User> register({
|
||||
required String email,
|
||||
required String password,
|
||||
required String name,
|
||||
});
|
||||
|
||||
Future<void> logout();
|
||||
|
||||
Future<User?> getCurrentUser();
|
||||
|
||||
Future<bool> isLoggedIn();
|
||||
}
|
||||
15
lib/features/auth/domain/usecases/login_usecase.dart
Normal file
15
lib/features/auth/domain/usecases/login_usecase.dart
Normal file
@@ -0,0 +1,15 @@
|
||||
import '../../domain/entities/user.dart';
|
||||
import '../../domain/repositories/auth_repository.dart';
|
||||
|
||||
class LoginUseCase {
|
||||
LoginUseCase({required this.repository});
|
||||
|
||||
final AuthRepository repository;
|
||||
|
||||
Future<User> call({
|
||||
required String email,
|
||||
required String password,
|
||||
}) {
|
||||
return repository.login(email: email, password: password);
|
||||
}
|
||||
}
|
||||
9
lib/features/auth/domain/usecases/logout_usecase.dart
Normal file
9
lib/features/auth/domain/usecases/logout_usecase.dart
Normal file
@@ -0,0 +1,9 @@
|
||||
import '../../domain/repositories/auth_repository.dart';
|
||||
|
||||
class LogoutUseCase {
|
||||
LogoutUseCase({required this.repository});
|
||||
|
||||
final AuthRepository repository;
|
||||
|
||||
Future<void> call() => repository.logout();
|
||||
}
|
||||
20
lib/features/auth/domain/usecases/register_usecase.dart
Normal file
20
lib/features/auth/domain/usecases/register_usecase.dart
Normal file
@@ -0,0 +1,20 @@
|
||||
import '../../domain/entities/user.dart';
|
||||
import '../../domain/repositories/auth_repository.dart';
|
||||
|
||||
class RegisterUseCase {
|
||||
RegisterUseCase({required this.repository});
|
||||
|
||||
final AuthRepository repository;
|
||||
|
||||
Future<User> call({
|
||||
required String email,
|
||||
required String password,
|
||||
required String name,
|
||||
}) {
|
||||
return repository.register(
|
||||
email: email,
|
||||
password: password,
|
||||
name: name,
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user