6177214e-ce7c-49e3-99de-ff9721b26f63 — Commit 884388a6

AuthorMikkel Thygesen<mth@dwarf.dk>
Date2025-08-25 10:12:45 +0200
2094: retrieved jwt from fragment

Changed files

comwell_key_app/lib/login/cubit/login_cubit.dart | 11 +++++++----
 comwell_key_app/lib/routing/app_router.dart      | 20 ++++++++++++--------
 2 files changed, 19 insertions(+), 12 deletions(-)

Diff

diff --git a/comwell_key_app/lib/login/cubit/login_cubit.dart b/comwell_key_app/lib/login/cubit/login_cubit.dart
index 754eccb7..2a81d16b 100644
--- a/comwell_key_app/lib/login/cubit/login_cubit.dart
+++ b/comwell_key_app/lib/login/cubit/login_cubit.dart
@@ -12,22 +12,25 @@ class LoginCubit extends Cubit<LoginState> {
Uri constructUrl(Auth authType) {
final tenantName = dotenv.env["ENTRA_ID_TENANT_NAME"]!;
- final tenantId = dotenv.env["ENTRA_ID_TENANT_ID"]!;
final clientId = dotenv.env["ENTRA_ID_CLIENT_ID"]!;
- final redirect = dotenv.env["ENTRA_ID_REDIRECT_URL"]!; // should probably be an env variable
+ final redirect = dotenv
+ .env["ENTRA_ID_REDIRECT_URL"]!; // should probably be an env variable
const scopes = "openid"; //"email+User.Read+profile+openid+offline_access";
- const responseType = "code";
+ const responseType = "id_token";
+ const prompt = "login";
final state = dotenv.env["ENTRA_ID_STATE"]!;
const ssoReload = true;
final uri = Uri.parse(
- "https://$tenantName.ciamlogin.com/$tenantId/oauth2/v2.0/authorize",
+ "https://$tenantName.ciamlogin.com/$tenantName.onmicrosoft.com/oauth2/v2.0/authorize",
);
final queryParams = {
"redirect_uri": redirect,
"client_id": clientId,
"scope": scopes,
+ "prompt": prompt,
"response_type": responseType,
"state": state,
+ "nonce": "Ou_mR9zKKK",
"sso_reload": "$ssoReload"
};
UriBuilder uriBuilder = UriBuilder.fromUri(uri);
diff --git a/comwell_key_app/lib/routing/app_router.dart b/comwell_key_app/lib/routing/app_router.dart
index 0a1ffd60..27e1c1ac 100644
--- a/comwell_key_app/lib/routing/app_router.dart
+++ b/comwell_key_app/lib/routing/app_router.dart
@@ -214,19 +214,23 @@ GoRouter goRouter() {
path: "/api/auth/login/callback",
name: AppRoutes.overview.name,
builder: (context, state) {
+ print("qqq uri=${state.uri}");
print("qqq keys=${state.uri.queryParameters.keys.toList()}");
- final code = state.uri.queryParameters['code'] ?? '';
- final uriState = state.uri.queryParameters['state'] ?? '';
- final sessionState =
- state.uri.queryParameters['session_state'] ?? '';
+ print("qqq fragments=${state.uri.fragment}");
+
+ final code = state.uri.fragment.split('=')[1];
print("${{
"qqq": "",
"code": code,
- "uriState": uriState,
- "sessionState": sessionState
}}");
- authRepo.loginWithCode(code);
- return const OverviewPage();
+ return FutureBuilder(
+ future: authRepo.loginWithCode(code),
+ builder: (context, snapshot) {
+ if (snapshot.connectionState == ConnectionState.waiting) {
+ return const Scaffold();
+ }
+ return const OverviewPage();
+ });
},
routes: [
GoRoute(