forked from baron/baron-sso
프론트엔드 동의 화면 추가 및 OIDC 로그인 흐름 완성
This commit is contained in:
@@ -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';
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user