0661016827
- Replace Email+Password login with Phone+OTP flow - Remove RegisterCubit and registration screens (email verification) - Remove ResetPasswordCubit and reset password screens - Add phone normalization and international dial code support - Update LoginCubit with sendCode/resend cooldown logic - Add new widgets: phone prefix selector, confirm sheet - Update all auth API endpoints: /otp/send, /phone-session - Update form inputs: Email -> Phone with E.164 validation - Update tests for new auth flow
37 lines
951 B
Dart
37 lines
951 B
Dart
class AuthUser {
|
|
final String id;
|
|
final String phone;
|
|
|
|
const AuthUser({required this.id, required this.phone});
|
|
|
|
factory AuthUser.fromJson(Map<String, dynamic> json) {
|
|
return AuthUser(id: json['id'] as String, phone: json['phone'] as String);
|
|
}
|
|
}
|
|
|
|
class AuthResponse {
|
|
final String accessToken;
|
|
final String refreshToken;
|
|
final int expiresIn;
|
|
final String tokenType;
|
|
final AuthUser user;
|
|
|
|
const AuthResponse({
|
|
required this.accessToken,
|
|
required this.refreshToken,
|
|
required this.expiresIn,
|
|
required this.tokenType,
|
|
required this.user,
|
|
});
|
|
|
|
factory AuthResponse.fromJson(Map<String, dynamic> json) {
|
|
return AuthResponse(
|
|
accessToken: json['access_token'] as String,
|
|
refreshToken: json['refresh_token'] as String,
|
|
expiresIn: json['expires_in'] as int,
|
|
tokenType: json['token_type'] as String,
|
|
user: AuthUser.fromJson(json['user'] as Map<String, dynamic>),
|
|
);
|
|
}
|
|
}
|