1
0
forked from baron/baron-sso

fix userfront verify link routing

This commit is contained in:
2026-05-21 19:35:45 +09:00
parent 9fc6459636
commit dc68b7da41
9 changed files with 330 additions and 20 deletions

View File

@@ -16,6 +16,7 @@ import 'features/auth/presentation/forgot_password_screen.dart';
import 'features/auth/presentation/reset_password_screen.dart';
import 'features/auth/presentation/error_screen.dart';
import 'features/auth/domain/login_link_route_policy.dart';
import 'features/auth/domain/verification_completion_route.dart';
import 'features/dashboard/presentation/dashboard_screen.dart';
import 'features/admin/presentation/user_management_screen.dart';
import 'features/profile/presentation/pages/profile_page.dart';
@@ -154,10 +155,19 @@ Future<void> _silentSessionRecovery() async {
bool _shouldRunStartupSessionRecovery(Uri uri) {
final requestedLocale = extractLocaleFromPath(uri);
final path = stripLocalePath(uri);
final verificationPayloadRedirect = buildDedicatedVerificationRedirect(
uri,
localeCode: requestedLocale ?? resolvePreferredLocaleCode(),
);
if (verificationPayloadRedirect != null ||
isDedicatedVerificationRoute(uri) ||
path == verificationCompletionRoutePath) {
return false;
}
if (requestedLocale == null) {
return true;
}
final path = stripLocalePath(uri);
return !isPublicAuthPath(path, uri);
}
@@ -283,6 +293,18 @@ final _router = GoRouter(
);
},
),
GoRoute(
path: verificationCompletionRouteName,
builder: (context, state) {
return ScopedTheme(
controller: ThemeController.auth,
child: LoginScreen(
key: state.pageKey,
verificationCompleteOnly: true,
),
);
},
),
GoRoute(
path: 'login',
builder: (context, state) {
@@ -482,6 +504,13 @@ final _router = GoRouter(
final uri = state.uri;
final requestedLocale = extractLocaleFromPath(uri);
final preferredLocale = resolvePreferredLocaleCode();
final verificationPayloadRedirect = buildDedicatedVerificationRedirect(
uri,
localeCode: requestedLocale ?? preferredLocale,
);
if (verificationPayloadRedirect != null) {
return verificationPayloadRedirect;
}
if (requestedLocale == null) {
final localizedPath = buildLocalizedPath(preferredLocale, uri);