- Create auth feature with Clean Architecture (domain/data/presentation) - Add login and register pages with form validation - Implement secure token storage with flutter_secure_storage - Create AuthenticatedClient for automatic Bearer token headers - Add AuthViewModel for global auth state management - Update router with auth guards (redirect to login if not authenticated) - Add logout option to settings page - Update TaskRemoteDataSource to use authenticated client - Add auth-related localization strings (EN/DE)
40 lines
888 B
Dart
40 lines
888 B
Dart
import '../../domain/entities/user_entity.dart';
|
|
|
|
class UserModel extends UserEntity {
|
|
const UserModel({
|
|
required super.id,
|
|
required super.email,
|
|
required super.name,
|
|
super.createdAt,
|
|
});
|
|
|
|
factory UserModel.fromJson(Map<String, dynamic> json) {
|
|
return UserModel(
|
|
id: json['id'] as String,
|
|
email: json['email'] as String,
|
|
name: json['name'] as String,
|
|
createdAt: json['created_at'] != null
|
|
? DateTime.parse(json['created_at'] as String)
|
|
: null,
|
|
);
|
|
}
|
|
|
|
Map<String, dynamic> toJson() {
|
|
return {
|
|
'id': id,
|
|
'email': email,
|
|
'name': name,
|
|
'created_at': createdAt?.toIso8601String(),
|
|
};
|
|
}
|
|
|
|
factory UserModel.fromEntity(UserEntity entity) {
|
|
return UserModel(
|
|
id: entity.id,
|
|
email: entity.email,
|
|
name: entity.name,
|
|
createdAt: entity.createdAt,
|
|
);
|
|
}
|
|
}
|