You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.4 KiB
Dart
60 lines
1.4 KiB
Dart
/// Response model for the [POST api/Auth/login] endpoint.
|
|
///
|
|
/// Example JSON:
|
|
/// ```json
|
|
/// {
|
|
/// "success": true,
|
|
/// "message": "Login successful",
|
|
/// "data": {
|
|
/// "token": "eyJhbGci…",
|
|
/// "expiresAt": "2026-06-22T11:43:12.071Z"
|
|
/// },
|
|
/// "errors": []
|
|
/// }
|
|
/// ```
|
|
class LoginResponseModel {
|
|
final bool success;
|
|
final String message;
|
|
final LoginDataModel? data;
|
|
final List<String> errors;
|
|
|
|
const LoginResponseModel({
|
|
required this.success,
|
|
required this.message,
|
|
this.data,
|
|
this.errors = const [],
|
|
});
|
|
|
|
factory LoginResponseModel.fromJson(Map<String, dynamic> json) {
|
|
return LoginResponseModel(
|
|
success: json['success'] as bool? ?? false,
|
|
message: json['message'] as String? ?? '',
|
|
data: json['data'] != null
|
|
? LoginDataModel.fromJson(json['data'] as Map<String, dynamic>)
|
|
: null,
|
|
errors: (json['errors'] as List<dynamic>?)
|
|
?.map((e) => e.toString())
|
|
.toList() ??
|
|
const [],
|
|
);
|
|
}
|
|
}
|
|
|
|
/// Token payload returned inside [LoginResponseModel.data].
|
|
class LoginDataModel {
|
|
final String token;
|
|
final String expiresAt;
|
|
|
|
const LoginDataModel({
|
|
required this.token,
|
|
required this.expiresAt,
|
|
});
|
|
|
|
factory LoginDataModel.fromJson(Map<String, dynamic> json) {
|
|
return LoginDataModel(
|
|
token: json['token'] as String? ?? '',
|
|
expiresAt: json['expiresAt'] as String? ?? '',
|
|
);
|
|
}
|
|
}
|