forked from baron/baron-sso
접근 이력 스크롤 조회 기능 추가
This commit is contained in:
@@ -417,7 +417,17 @@ class _LoginScreenState extends ConsumerState<LoginScreen>
|
||||
),
|
||||
const SizedBox(height: 24),
|
||||
FilledButton(
|
||||
onPressed: () => context.go(_verificationActionPath),
|
||||
onPressed: () {
|
||||
final hasLocalSession = AuthTokenStore.getToken() != null || AuthTokenStore.usesCookie();
|
||||
final target = hasLocalSession ? '/' : '/signin';
|
||||
if (mounted) {
|
||||
setState(() {
|
||||
_verificationOnly = false;
|
||||
_verificationApproved = false;
|
||||
});
|
||||
}
|
||||
context.go(target);
|
||||
},
|
||||
child: Text(_verificationActionLabel),
|
||||
),
|
||||
],
|
||||
@@ -438,10 +448,14 @@ class _LoginScreenState extends ConsumerState<LoginScreen>
|
||||
final jwt = res['token'] ?? res['sessionJwt'];
|
||||
final status = res['status']?.toString();
|
||||
final hasLocalSession = await _hasValidLocalSession();
|
||||
final actionPath = hasLocalSession ? '/' : '/signin';
|
||||
|
||||
if (status == 'approved' || (jwt == null && _verificationOnly)) {
|
||||
if (mounted) {
|
||||
_markVerificationApproved("승인되었습니다. 로그인은 요청하신 창에서 완료됩니다.");
|
||||
_markVerificationApproved(
|
||||
"승인되었습니다. 로그인은 요청하신 창에서 완료됩니다.",
|
||||
actionPath: actionPath,
|
||||
);
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -450,15 +464,22 @@ class _LoginScreenState extends ConsumerState<LoginScreen>
|
||||
if (hasLocalSession) {
|
||||
_markVerificationApproved(
|
||||
"승인 되었습니다. 이 기기는 로그인되어 있는 상태입니다. 원격 창도 로그인이 될 예정입니다",
|
||||
actionPath: actionPath,
|
||||
);
|
||||
return;
|
||||
}
|
||||
_markVerificationApproved("승인되었습니다. 로그인은 요청하신 창에서 완료됩니다.");
|
||||
_markVerificationApproved(
|
||||
"승인되었습니다. 로그인은 요청하신 창에서 완료됩니다.",
|
||||
actionPath: actionPath,
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
if (mounted) {
|
||||
_markVerificationApproved("승인되었습니다. 로그인은 요청하신 창에서 완료됩니다.");
|
||||
_markVerificationApproved(
|
||||
"승인되었습니다. 로그인은 요청하신 창에서 완료됩니다.",
|
||||
actionPath: actionPath,
|
||||
);
|
||||
}
|
||||
} catch (e) {
|
||||
debugPrint("[Auth] Verification FAILED for token: $token. Error: $e");
|
||||
@@ -476,15 +497,20 @@ class _LoginScreenState extends ConsumerState<LoginScreen>
|
||||
sanitizedLoginId,
|
||||
code,
|
||||
pendingRef: pendingRef,
|
||||
verifyOnly: _verificationOnly,
|
||||
);
|
||||
final jwt = res['sessionJwt'] ?? res['token'];
|
||||
final status = res['status']?.toString();
|
||||
debugPrint("[Auth] Code verification successful for loginId: $sanitizedLoginId");
|
||||
final hasLocalSession = await _hasValidLocalSession();
|
||||
final actionPath = hasLocalSession ? '/' : '/signin';
|
||||
|
||||
if (jwt == null && status == 'approved') {
|
||||
if (mounted) {
|
||||
_markVerificationApproved("승인되었습니다. 로그인은 요청하신 창에서 완료됩니다.");
|
||||
_markVerificationApproved(
|
||||
"승인되었습니다. 로그인은 요청하신 창에서 완료됩니다.",
|
||||
actionPath: actionPath,
|
||||
);
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -493,11 +519,15 @@ class _LoginScreenState extends ConsumerState<LoginScreen>
|
||||
if (hasLocalSession) {
|
||||
_markVerificationApproved(
|
||||
"승인 되었습니다. 이 기기는 로그인되어 있는 상태입니다. 원격 창도 로그인이 될 예정입니다",
|
||||
actionPath: actionPath,
|
||||
);
|
||||
return;
|
||||
}
|
||||
if (_verificationOnly) {
|
||||
_markVerificationApproved("승인되었습니다. 로그인은 요청하신 창에서 완료됩니다.");
|
||||
_markVerificationApproved(
|
||||
"승인되었습니다. 로그인은 요청하신 창에서 완료됩니다.",
|
||||
actionPath: actionPath,
|
||||
);
|
||||
return;
|
||||
}
|
||||
_markVerificationApproved("링크로 로그인 되었습니다. 잠시 후 로그인 화면으로 이동합니다.",
|
||||
@@ -511,7 +541,10 @@ class _LoginScreenState extends ConsumerState<LoginScreen>
|
||||
}
|
||||
|
||||
if (_verificationOnly && mounted) {
|
||||
_markVerificationApproved("승인되었습니다. 로그인은 요청하신 창에서 완료됩니다.");
|
||||
_markVerificationApproved(
|
||||
"승인되었습니다. 로그인은 요청하신 창에서 완료됩니다.",
|
||||
actionPath: actionPath,
|
||||
);
|
||||
}
|
||||
} catch (e) {
|
||||
debugPrint("[Auth] Code verification FAILED for loginId: $sanitizedLoginId. Error: $e");
|
||||
@@ -526,15 +559,22 @@ class _LoginScreenState extends ConsumerState<LoginScreen>
|
||||
if (sanitized.isEmpty) return;
|
||||
debugPrint("[Auth] Starting short code verification for code: $sanitized");
|
||||
try {
|
||||
final res = await AuthProxyService.verifyLoginShortCode(sanitized);
|
||||
final res = await AuthProxyService.verifyLoginShortCode(
|
||||
sanitized,
|
||||
verifyOnly: _verificationOnly,
|
||||
);
|
||||
final jwt = res['sessionJwt'] ?? res['token'];
|
||||
final status = res['status']?.toString();
|
||||
debugPrint("[Auth] Short code verification successful");
|
||||
final hasLocalSession = await _hasValidLocalSession();
|
||||
final actionPath = hasLocalSession ? '/' : '/signin';
|
||||
|
||||
if (jwt == null && status == 'approved') {
|
||||
if (mounted) {
|
||||
_markVerificationApproved("승인되었습니다. 로그인은 요청하신 창에서 완료됩니다.");
|
||||
_markVerificationApproved(
|
||||
"승인되었습니다. 로그인은 요청하신 창에서 완료됩니다.",
|
||||
actionPath: actionPath,
|
||||
);
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -543,11 +583,15 @@ class _LoginScreenState extends ConsumerState<LoginScreen>
|
||||
if (hasLocalSession) {
|
||||
_markVerificationApproved(
|
||||
"승인 되었습니다. 이 기기는 로그인되어 있는 상태입니다. 원격 창도 로그인이 될 예정입니다",
|
||||
actionPath: actionPath,
|
||||
);
|
||||
return;
|
||||
}
|
||||
if (_verificationOnly) {
|
||||
_markVerificationApproved("승인되었습니다. 로그인은 요청하신 창에서 완료됩니다.");
|
||||
_markVerificationApproved(
|
||||
"승인되었습니다. 로그인은 요청하신 창에서 완료됩니다.",
|
||||
actionPath: actionPath,
|
||||
);
|
||||
return;
|
||||
}
|
||||
_completeLoginFromToken(jwt, provider: res['provider'] as String?);
|
||||
@@ -555,7 +599,10 @@ class _LoginScreenState extends ConsumerState<LoginScreen>
|
||||
}
|
||||
|
||||
if (_verificationOnly && mounted) {
|
||||
_markVerificationApproved("승인되었습니다. 로그인은 요청하신 창에서 완료됩니다.");
|
||||
_markVerificationApproved(
|
||||
"승인되었습니다. 로그인은 요청하신 창에서 완료됩니다.",
|
||||
actionPath: actionPath,
|
||||
);
|
||||
}
|
||||
} catch (e) {
|
||||
debugPrint("[Auth] Short code verification FAILED. Error: $e");
|
||||
|
||||
Reference in New Issue
Block a user