feat(auth): transition from email to phone-based OTP authentication

- 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
This commit is contained in:
qzl
2026-03-19 18:42:05 +08:00
parent 636b37ee5a
commit 0661016827
29 changed files with 615 additions and 2030 deletions
@@ -1,24 +1,15 @@
import 'package:social_app/features/auth/data/models/signup_request.dart';
import 'package:social_app/features/auth/data/models/login_request.dart';
import 'package:social_app/features/auth/data/models/auth_response.dart';
abstract class AuthRepository {
Future<VerificationCreateResponse> createVerification(
SignupStartRequest request,
);
Future<AuthResponse> verifyVerification(SignupVerifyRequest request);
Future<void> resendVerification(SignupResendRequest request);
Future<AuthResponse> createSession(LoginRequest request);
Future<void> sendOtp(String phone);
Future<AuthResponse> createPhoneSession({
required String phone,
required String token,
});
Future<AuthResponse> refreshSession(String refreshToken);
Future<void> deleteSession();
Future<void> clearSessionLocalOnly();
Future<String?> getAccessToken();
Future<String?> getRefreshToken();
Future<bool> isAuthenticated();
Future<void> requestPasswordReset(String email);
Future<void> confirmPasswordReset({
required String email,
required String token,
required String newPassword,
});
}