fill
This commit is contained in:
42
lib/features/auth/data/models/login_request_model.dart
Normal file
42
lib/features/auth/data/models/login_request_model.dart
Normal file
@@ -0,0 +1,42 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
|
||||
/// Login request model for authentication
|
||||
///
|
||||
/// Contains the credentials required for user login
|
||||
class LoginRequestModel extends Equatable {
|
||||
/// Username for authentication
|
||||
final String username;
|
||||
|
||||
/// Password for authentication
|
||||
final String password;
|
||||
|
||||
const LoginRequestModel({
|
||||
required this.username,
|
||||
required this.password,
|
||||
});
|
||||
|
||||
/// Convert to JSON for API request
|
||||
Map<String, dynamic> toJson() {
|
||||
return {
|
||||
'EmailPhone': username,
|
||||
'Password': password,
|
||||
};
|
||||
}
|
||||
|
||||
/// Create a copy with modified fields
|
||||
LoginRequestModel copyWith({
|
||||
String? username,
|
||||
String? password,
|
||||
}) {
|
||||
return LoginRequestModel(
|
||||
username: username ?? this.username,
|
||||
password: password ?? this.password,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
List<Object?> get props => [username, password];
|
||||
|
||||
@override
|
||||
String toString() => 'LoginRequestModel(username: $username)';
|
||||
}
|
||||
81
lib/features/auth/data/models/user_model.dart
Normal file
81
lib/features/auth/data/models/user_model.dart
Normal file
@@ -0,0 +1,81 @@
|
||||
import '../../domain/entities/user_entity.dart';
|
||||
|
||||
/// User model that extends UserEntity for data layer
|
||||
///
|
||||
/// Handles JSON serialization/deserialization for API responses
|
||||
class UserModel extends UserEntity {
|
||||
const UserModel({
|
||||
required super.userId,
|
||||
required super.username,
|
||||
required super.accessToken,
|
||||
super.refreshToken,
|
||||
});
|
||||
|
||||
/// Create UserModel from JSON response
|
||||
///
|
||||
/// Expected JSON format from API:
|
||||
/// ```json
|
||||
/// {
|
||||
/// "AccessToken": "string"
|
||||
/// }
|
||||
/// ```
|
||||
factory UserModel.fromJson(Map<String, dynamic> json, {String? username}) {
|
||||
return UserModel(
|
||||
userId: username ?? 'user', // Use username as userId or default
|
||||
username: username ?? 'user',
|
||||
accessToken: json['AccessToken'] as String,
|
||||
refreshToken: null, // API doesn't provide refresh token
|
||||
);
|
||||
}
|
||||
|
||||
/// Convert UserModel to JSON
|
||||
Map<String, dynamic> toJson() {
|
||||
return {
|
||||
'userId': userId,
|
||||
'username': username,
|
||||
'accessToken': accessToken,
|
||||
'refreshToken': refreshToken,
|
||||
};
|
||||
}
|
||||
|
||||
/// Create UserModel from UserEntity
|
||||
factory UserModel.fromEntity(UserEntity entity) {
|
||||
return UserModel(
|
||||
userId: entity.userId,
|
||||
username: entity.username,
|
||||
accessToken: entity.accessToken,
|
||||
refreshToken: entity.refreshToken,
|
||||
);
|
||||
}
|
||||
|
||||
/// Convert to UserEntity
|
||||
UserEntity toEntity() {
|
||||
return UserEntity(
|
||||
userId: userId,
|
||||
username: username,
|
||||
accessToken: accessToken,
|
||||
refreshToken: refreshToken,
|
||||
);
|
||||
}
|
||||
|
||||
/// Create a copy with modified fields
|
||||
@override
|
||||
UserModel copyWith({
|
||||
String? userId,
|
||||
String? username,
|
||||
String? accessToken,
|
||||
String? refreshToken,
|
||||
}) {
|
||||
return UserModel(
|
||||
userId: userId ?? this.userId,
|
||||
username: username ?? this.username,
|
||||
accessToken: accessToken ?? this.accessToken,
|
||||
refreshToken: refreshToken ?? this.refreshToken,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'UserModel(userId: $userId, username: $username, hasRefreshToken: ${refreshToken != null})';
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user