1
0
forked from baron/baron-sso

프론트엔드 동의 화면 추가 및 OIDC 로그인 흐름 완성

This commit is contained in:
2026-02-02 14:45:04 +09:00
parent 849424f030
commit 3a3ea4879e
4 changed files with 215 additions and 42 deletions

View File

@@ -20,6 +20,7 @@ import 'core/services/auth_token_store.dart';
import 'core/services/logger_service.dart';
import 'core/notifiers/auth_notifier.dart';
import 'package:logging/logging.dart';
import 'features/auth/presentation/consent_screen.dart';
final _log = Logger('Main');
@@ -91,9 +92,10 @@ final _router = GoRouter(
GoRoute(
path: '/signin',
builder: (context, state) {
_routerLogger.info("Navigating to /signin");
return LoginScreen(key: state.pageKey);
}
final loginChallenge = state.uri.queryParameters['login_challenge'];
_routerLogger.info("Navigating to /signin with login_challenge: $loginChallenge");
return LoginScreen(key: state.pageKey, loginChallenge: loginChallenge);
},
),
GoRoute(
path: '/login',
@@ -102,6 +104,18 @@ final _router = GoRouter(
return LoginScreen(key: state.pageKey);
},
),
GoRoute(
path: '/consent',
builder: (BuildContext context, GoRouterState state) {
final consentChallenge = state.uri.queryParameters['consent_challenge'];
if (consentChallenge == null) {
_routerLogger.warning("Consent screen loaded without a challenge.");
return const Scaffold(body: Center(child: Text('Error: Consent challenge is missing.')));
}
_routerLogger.info("Navigating to /consent with challenge.");
return ConsentScreen(consentChallenge: consentChallenge);
},
),
GoRoute(
path: '/signup',
builder: (context, state) {
@@ -243,7 +257,8 @@ final _router = GoRouter(
path == '/recovery' ||
path == '/reset-password' ||
path == '/error' ||
path == '/settings';
path == '/settings' ||
path == '/consent'; // Consent page is public
_routerLogger.fine("Redirect check - Path: $path, IsLoggedIn: $isLoggedIn");
@@ -254,7 +269,12 @@ final _router = GoRouter(
// If not logged in and trying to access a protected page, redirect to /signin
if (!isLoggedIn) {
_routerLogger.info("Not logged in, redirecting to /signin");
_routerLogger.info("Not logged in, redirecting to /signin");
// Preserve OIDC challenge if present
final loginChallenge = state.uri.queryParameters['login_challenge'];
if (loginChallenge != null) {
return '/signin?login_challenge=$loginChallenge';
}
return '/signin';
}