54 lines
1.4 KiB
Dart
54 lines
1.4 KiB
Dart
/// Modèle utilisateur authentifié.
|
|
class AuthUser {
|
|
const AuthUser({
|
|
required this.uuid,
|
|
required this.firstName,
|
|
required this.lastName,
|
|
required this.email,
|
|
this.phone,
|
|
this.locale = 'fr',
|
|
});
|
|
|
|
final String uuid;
|
|
final String firstName;
|
|
final String lastName;
|
|
final String email;
|
|
final String? phone;
|
|
final String locale;
|
|
|
|
String get fullName => '$firstName $lastName'.trim();
|
|
|
|
factory AuthUser.fromJson(Map<String, dynamic> json) {
|
|
return AuthUser(
|
|
uuid: json['uuid'] as String,
|
|
firstName: json['first_name'] as String? ?? '',
|
|
lastName: json['last_name'] as String? ?? '',
|
|
email: json['email'] as String,
|
|
phone: json['phone'] as String?,
|
|
locale: json['locale'] as String? ?? 'fr',
|
|
);
|
|
}
|
|
}
|
|
|
|
/// Réponse d'authentification (login / register / refresh).
|
|
class AuthTokens {
|
|
const AuthTokens({
|
|
required this.accessToken,
|
|
required this.refreshToken,
|
|
this.user,
|
|
});
|
|
|
|
final String accessToken;
|
|
final String refreshToken;
|
|
final AuthUser? user;
|
|
|
|
factory AuthTokens.fromJson(Map<String, dynamic> json) {
|
|
final userJson = json['user'] as Map<String, dynamic>?;
|
|
return AuthTokens(
|
|
accessToken: json['access_token'] as String? ?? json['token'] as String,
|
|
refreshToken: json['refresh_token'] as String,
|
|
user: userJson != null ? AuthUser.fromJson(userJson) : null,
|
|
);
|
|
}
|
|
}
|