1
0
forked from baron/baron-sso

userfront gateway 분리.

This commit is contained in:
Lectom C Han
2026-01-30 16:14:20 +09:00
parent 35552943d7
commit 1db7ce8f10
8 changed files with 302 additions and 99 deletions

View File

@@ -17,11 +17,12 @@ class _ApproveQrScreenState extends State<ApproveQrScreen> {
String? _message;
bool _success = false;
bool _isCheckingSession = false;
bool _redirectingToLogin = false;
@override
void initState() {
super.initState();
_bootstrapCookieSession();
_bootstrapCookieSession().then((_) => _redirectIfNotLoggedIn());
}
Future<bool> _bootstrapCookieSession() async {
@@ -45,6 +46,21 @@ class _ApproveQrScreenState extends State<ApproveQrScreen> {
}
}
void _redirectIfNotLoggedIn() {
if (_redirectingToLogin || !mounted) return;
final hasStoredToken = AuthTokenStore.getToken() != null;
final hasDescopeSession = Descope.sessionManager.session?.refreshToken.isExpired == false;
final usesCookie = AuthTokenStore.usesCookie();
final isLoggedIn = hasStoredToken || hasDescopeSession || usesCookie;
if (!isLoggedIn) {
_redirectingToLogin = true;
WidgetsBinding.instance.addPostFrameCallback((_) {
if (!mounted) return;
context.go('/signin?notice=qr_login_required');
});
}
}
Future<void> _handleApprove() async {
if (widget.pendingRef == null) return;
@@ -56,8 +72,9 @@ class _ApproveQrScreenState extends State<ApproveQrScreen> {
hasCookie = await _bootstrapCookieSession();
}
if (storedToken == null && (session == null || session.refreshToken.isExpired) && !hasCookie) {
setState(() => _message = "Please log in on your phone first.");
context.go('/signin'); // Redirect to login
if (mounted) {
context.go('/signin?notice=qr_login_required');
}
return;
}
@@ -96,6 +113,10 @@ class _ApproveQrScreenState extends State<ApproveQrScreen> {
final usesCookie = AuthTokenStore.usesCookie();
final isLoggedIn = hasStoredToken || hasDescopeSession || usesCookie || _isCheckingSession;
if (!isLoggedIn && !_redirectingToLogin) {
_redirectIfNotLoggedIn();
}
return Scaffold(
appBar: AppBar(title: const Text("QR Login Approval")),
body: Center(