forked from baron/baron-sso
flutter 린트 적용
This commit is contained in:
@@ -12,7 +12,6 @@ import '../../../core/services/auth_token_store.dart';
|
||||
import '../../../core/services/oidc_redirect_guard.dart';
|
||||
import '../../../core/notifiers/auth_notifier.dart';
|
||||
import '../domain/login_challenge_resolver.dart';
|
||||
import '../domain/password_login_flow_policy.dart';
|
||||
import '../../profile/domain/notifiers/profile_notifier.dart';
|
||||
import '../../../core/services/web_window.dart';
|
||||
|
||||
@@ -742,7 +741,6 @@ class _LoginScreenState extends ConsumerState<LoginScreen>
|
||||
final localSessionMessage = tr(
|
||||
'msg.userfront.login.verification.approved_local',
|
||||
);
|
||||
final linkLoginMessage = tr('msg.userfront.login.link.approved');
|
||||
try {
|
||||
final res = await AuthProxyService.verifyLoginCode(
|
||||
sanitizedLoginId,
|
||||
@@ -872,7 +870,6 @@ class _LoginScreenState extends ConsumerState<LoginScreen>
|
||||
}
|
||||
|
||||
Future<void> _handlePasswordLogin() async {
|
||||
print("[Auth] _handlePasswordLogin START");
|
||||
final input = _passwordLoginIdController.text.trim();
|
||||
final password = _passwordController.text.trim();
|
||||
if (input.isEmpty || password.isEmpty) {
|
||||
@@ -889,29 +886,23 @@ class _LoginScreenState extends ConsumerState<LoginScreen>
|
||||
}
|
||||
|
||||
try {
|
||||
print("[Auth] Calling AuthProxyService.loginWithPassword...");
|
||||
final res = await AuthProxyService.loginWithPassword(
|
||||
loginId,
|
||||
password,
|
||||
loginChallenge: _loginChallenge,
|
||||
);
|
||||
print("[Auth] loginWithPassword response: $res");
|
||||
|
||||
final jwt = res['sessionJwt'] ?? res['sessionToken'] ?? res['token'];
|
||||
final provider = res['provider'] as String?;
|
||||
final redirectTo = res['redirectTo'] as String?;
|
||||
|
||||
if (jwt != null) {
|
||||
print("[Auth] JWT found, calling _onLoginSuccess. RedirectTo: $redirectTo");
|
||||
_onLoginSuccess(jwt, provider: provider, redirectTo: redirectTo);
|
||||
} else if (redirectTo != null && redirectTo.isNotEmpty) {
|
||||
print("[Auth] Only redirectTo found. Redirecting...");
|
||||
webWindow.redirectTo(redirectTo);
|
||||
} else {
|
||||
print("[Auth] No JWT and no redirectTo found.");
|
||||
}
|
||||
} catch (e) {
|
||||
print("[Auth] _handlePasswordLogin Error: $e");
|
||||
if (e.toString().contains("User not registered")) {
|
||||
_showUnregisteredDialog();
|
||||
} else {
|
||||
@@ -1134,56 +1125,44 @@ class _LoginScreenState extends ConsumerState<LoginScreen>
|
||||
}
|
||||
|
||||
Future<void> _onLoginSuccess(String token, {String? provider, String? redirectTo}) async {
|
||||
print("[Auth] _onLoginSuccess ENTRY. RedirectTo: $redirectTo, Token len: ${token.length}");
|
||||
|
||||
try {
|
||||
if (!mounted) {
|
||||
print("[Auth] _onLoginSuccess: Not mounted, returning.");
|
||||
return;
|
||||
}
|
||||
|
||||
// [Priority 1] Immediate External Redirection
|
||||
if (redirectTo != null && redirectTo.isNotEmpty) {
|
||||
print("[Auth] _onLoginSuccess: Has redirectTo. Saving token and redirecting...");
|
||||
try {
|
||||
final providerName = provider ?? AuthTokenStore.getProvider();
|
||||
print("[Auth] _onLoginSuccess: Provider resolved: $providerName");
|
||||
AuthTokenStore.setToken(token, provider: providerName);
|
||||
print("[Auth] _onLoginSuccess: Token saved to store.");
|
||||
} catch (stErr) {
|
||||
print("[Auth] _onLoginSuccess: FAILED to save token: $stErr");
|
||||
// ignore
|
||||
}
|
||||
|
||||
print("[Auth] Calling webWindow.redirectTo: $redirectTo");
|
||||
webWindow.redirectTo(redirectTo); // Removed await as it's void
|
||||
return;
|
||||
}
|
||||
|
||||
// [Priority 2] OIDC Challenge Handling
|
||||
if (_loginChallenge != null && _loginChallenge!.isNotEmpty) {
|
||||
print("[Auth] _onLoginSuccess: Has loginChallenge. Attempting auto-accept...");
|
||||
try {
|
||||
// Save token first, it's needed for acceptance
|
||||
final providerName = provider ?? AuthTokenStore.getProvider();
|
||||
AuthTokenStore.setToken(token, provider: providerName);
|
||||
print("[Auth] _onLoginSuccess: Token saved for auto-accept.");
|
||||
|
||||
final res = await AuthProxyService.acceptOidcLogin(
|
||||
_loginChallenge!,
|
||||
token: token,
|
||||
);
|
||||
final nextRedirectTo = res['redirectTo'] as String?;
|
||||
print("[Auth] Auto-accept response: $res");
|
||||
|
||||
if (nextRedirectTo != null && nextRedirectTo.isNotEmpty) {
|
||||
print("[Auth] OIDC login accepted. Redirecting to: $nextRedirectTo");
|
||||
webWindow.redirectTo(nextRedirectTo); // Removed await
|
||||
return;
|
||||
} else {
|
||||
print("[Auth] Auto-accept successful but no redirectTo provided.");
|
||||
}
|
||||
} catch (e) {
|
||||
print("[Auth] Auto-accept failed: $e");
|
||||
_showError(
|
||||
tr(
|
||||
'msg.userfront.login.oidc_failed',
|
||||
@@ -1193,7 +1172,6 @@ class _LoginScreenState extends ConsumerState<LoginScreen>
|
||||
}
|
||||
}
|
||||
|
||||
print("[Auth] _onLoginSuccess: Standard Login Flow");
|
||||
_logTokenDetails(token);
|
||||
|
||||
final providerName = provider ?? AuthTokenStore.getProvider();
|
||||
@@ -1205,7 +1183,7 @@ class _LoginScreenState extends ConsumerState<LoginScreen>
|
||||
try {
|
||||
await ref.read(profileProvider.notifier).loadProfile();
|
||||
} catch (e) {
|
||||
print("[Auth] Failed to pre-fetch profile: $e");
|
||||
// ignore
|
||||
}
|
||||
|
||||
final uri = Uri.base;
|
||||
@@ -1215,21 +1193,17 @@ class _LoginScreenState extends ConsumerState<LoginScreen>
|
||||
redirectParam != null && redirectParam.isNotEmpty;
|
||||
|
||||
if (WebAuthIntegration.isPopup() || hasRedirectParam) {
|
||||
print(
|
||||
"[Auth] External integration detected (popup or redirect). Notifying...",
|
||||
);
|
||||
WebAuthIntegration.sendLoginSuccess(token);
|
||||
AuthNotifier.instance.notify();
|
||||
return;
|
||||
}
|
||||
|
||||
print("[Auth] Login success. Navigating to root.");
|
||||
AuthNotifier.instance.notify();
|
||||
if (mounted) {
|
||||
context.go('/');
|
||||
}
|
||||
} catch (globalErr) {
|
||||
print("[Auth] CRITICAL ERROR in _onLoginSuccess: $globalErr");
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1286,10 +1286,12 @@ class _SignupScreenState extends State<SignupScreen> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
bool canGoNext = false;
|
||||
if (_currentStep == 1 && _termsAccepted && _privacyAccepted)
|
||||
if (_currentStep == 1 && _termsAccepted && _privacyAccepted) {
|
||||
canGoNext = true;
|
||||
if (_currentStep == 2 && _isEmailVerified && _isPhoneVerified)
|
||||
}
|
||||
if (_currentStep == 2 && _isEmailVerified && _isPhoneVerified) {
|
||||
canGoNext = true;
|
||||
}
|
||||
if (_currentStep == 3) {
|
||||
final nameOk = _nameController.text.trim().isNotEmpty;
|
||||
if (_affiliationType == 'GENERAL') {
|
||||
|
||||
Reference in New Issue
Block a user