🐛 Fix oidc callback
This commit is contained in:
@@ -15,6 +15,7 @@ import 'package:island/pods/websocket.dart';
|
|||||||
import 'package:island/screens/account/me/profile_update.dart';
|
import 'package:island/screens/account/me/profile_update.dart';
|
||||||
import 'package:island/services/event_bus.dart';
|
import 'package:island/services/event_bus.dart';
|
||||||
import 'package:island/services/notify.dart';
|
import 'package:island/services/notify.dart';
|
||||||
|
import 'package:island/services/udid.dart';
|
||||||
import 'package:island/widgets/alert.dart';
|
import 'package:island/widgets/alert.dart';
|
||||||
import 'package:material_symbols_icons/symbols.dart';
|
import 'package:material_symbols_icons/symbols.dart';
|
||||||
import 'package:styled_widget/styled_widget.dart';
|
import 'package:styled_widget/styled_widget.dart';
|
||||||
@@ -180,7 +181,7 @@ class CreateAccountContent extends HookConsumerWidget {
|
|||||||
} else {
|
} else {
|
||||||
// Existing user, switch to login
|
// Existing user, switch to login
|
||||||
showSnackBar('Account already exists. Redirecting to login.');
|
showSnackBar('Account already exists. Redirecting to login.');
|
||||||
context.goNamed('login');
|
if (context.mounted) context.goNamed('login');
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
showErrorAlert(err);
|
showErrorAlert(err);
|
||||||
@@ -192,10 +193,15 @@ class CreateAccountContent extends HookConsumerWidget {
|
|||||||
Future<void> withOidc(String provider) async {
|
Future<void> withOidc(String provider) async {
|
||||||
waitingForOidc.value = true;
|
waitingForOidc.value = true;
|
||||||
final serverUrl = ref.watch(serverUrlProvider);
|
final serverUrl = ref.watch(serverUrlProvider);
|
||||||
|
final deviceId = await getUdid();
|
||||||
final url =
|
final url =
|
||||||
Uri.parse('$serverUrl/pass/auth/login/${provider.toLowerCase()}')
|
Uri.parse('$serverUrl/pass/auth/login/${provider.toLowerCase()}')
|
||||||
.replace(
|
.replace(
|
||||||
queryParameters: {'redirect_uri': 'solian://auth/callback'},
|
queryParameters: {
|
||||||
|
'returnUrl': 'solian://auth/callback',
|
||||||
|
'deviceId': deviceId,
|
||||||
|
'flow': 'login',
|
||||||
|
},
|
||||||
)
|
)
|
||||||
.toString();
|
.toString();
|
||||||
final isLaunched = await launchUrlString(
|
final isLaunched = await launchUrlString(
|
||||||
|
|||||||
@@ -653,8 +653,9 @@ class _LoginLookupScreen extends HookConsumerWidget {
|
|||||||
final token = ref.watch(tokenProvider);
|
final token = ref.watch(tokenProvider);
|
||||||
final deviceId = await getUdid();
|
final deviceId = await getUdid();
|
||||||
final queryParams = <String, String>{
|
final queryParams = <String, String>{
|
||||||
'redirect_uri': 'solian://auth/callback',
|
'returnUrl': 'solian://auth/callback',
|
||||||
'device_id': deviceId,
|
'deviceId': deviceId,
|
||||||
|
'flow': 'login',
|
||||||
};
|
};
|
||||||
if (token?.token != null) {
|
if (token?.token != null) {
|
||||||
queryParams['token'] = token!.token;
|
queryParams['token'] = token!.token;
|
||||||
|
|||||||
@@ -116,8 +116,10 @@ class _AppWrapperState extends ConsumerState<AppWrapper>
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _handleDeepLink(Uri uri, WidgetRef ref) {
|
void _handleDeepLink(Uri uri, WidgetRef ref) {
|
||||||
|
String path = '/${uri.host}${uri.path}';
|
||||||
|
|
||||||
// Special handling for OIDC auth callback
|
// Special handling for OIDC auth callback
|
||||||
if (uri.path == '/auth/callback' &&
|
if (path == '/auth/callback' &&
|
||||||
uri.queryParameters.containsKey('challenge')) {
|
uri.queryParameters.containsKey('challenge')) {
|
||||||
final challenge = uri.queryParameters['challenge']!;
|
final challenge = uri.queryParameters['challenge']!;
|
||||||
eventBus.fire(OidcAuthCallbackEvent(challenge));
|
eventBus.fire(OidcAuthCallbackEvent(challenge));
|
||||||
@@ -129,7 +131,6 @@ class _AppWrapperState extends ConsumerState<AppWrapper>
|
|||||||
}
|
}
|
||||||
|
|
||||||
final router = ref.read(routerProvider);
|
final router = ref.read(routerProvider);
|
||||||
String path = '/${uri.host}${uri.path}';
|
|
||||||
if (uri.queryParameters.isNotEmpty) {
|
if (uri.queryParameters.isNotEmpty) {
|
||||||
path =
|
path =
|
||||||
Uri.parse(
|
Uri.parse(
|
||||||
|
|||||||
Reference in New Issue
Block a user