From 24ce7aee819e9d13be088586de9a433e6dd90755 Mon Sep 17 00:00:00 2001 From: Francesco Romeo Date: Fri, 20 May 2022 17:41:04 +0200 Subject: [PATCH] custom claim tested --- vidaia/lib/pages/home/home_page_loader.dart | 4 ++-- vidaia/lib/services/auth_service.dart | 25 ++++++++++++--------- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/vidaia/lib/pages/home/home_page_loader.dart b/vidaia/lib/pages/home/home_page_loader.dart index 1a835d2..17195d3 100644 --- a/vidaia/lib/pages/home/home_page_loader.dart +++ b/vidaia/lib/pages/home/home_page_loader.dart @@ -39,7 +39,7 @@ class _HomePage2State extends State { isDataLoaded, //Future that returns bool ]), builder: (BuildContext context, AsyncSnapshot> snapshot) { - if (snapshot.connectionState == ConnectionState.done && AuthService.instance.profile!.id.isNotEmpty && snapshot.data?[0] == true) { + if (snapshot.connectionState == ConnectionState.done && AuthService.instance.profile != null && AuthService.instance.profile!.id.isNotEmpty && snapshot.data?[0] == true) { return HomePageStack(_pages); } else if (snapshot.connectionState == ConnectionState.done && snapshot.hasError) { return Padding( @@ -49,7 +49,7 @@ class _HomePage2State extends State { style: TextStyle(fontSize: 20), ), ); - } else if (snapshot.data?[0] == false) { + } else if (AuthService.instance.profile == null || AuthService.instance.profile!.id.isEmpty) { return const LoginPage(); } else { return Center( diff --git a/vidaia/lib/services/auth_service.dart b/vidaia/lib/services/auth_service.dart index f2b9112..e6ea4a5 100644 --- a/vidaia/lib/services/auth_service.dart +++ b/vidaia/lib/services/auth_service.dart @@ -64,8 +64,7 @@ class AuthService { headers: {'Authorization': 'Bearer $auth0AccessToken'}, ); - debugPrint( - 'logout: ${response.request} ${response.statusCode} ${response.body}'); + debugPrint('logout: ${response.request} ${response.statusCode} ${response.body}'); return 'logout: ${response.request} ${response.statusCode} ${response.body}'; } @@ -82,8 +81,7 @@ class AuthService { /// possible values login, none, consent, select_account ); - final AuthorizationTokenResponse? result = - await appAuth.authorizeAndExchangeCode( + final AuthorizationTokenResponse? result = await appAuth.authorizeAndExchangeCode( authorizationTokenRequest, ); @@ -111,28 +109,35 @@ class AuthService { } Future getUserDetails(String accessToken) async { + Auth0User auth0user; + final url = Uri.https( AUTH0_DOMAIN, '/userinfo', ); - final response = await http.get( + final responseAuth0UserInfo = await http.get( url, headers: {'Authorization': 'Bearer $accessToken'}, ); - print('getUserDetails ${response.body}'); + print('getUserDetails ${responseAuth0UserInfo.body}'); + + if (responseAuth0UserInfo.statusCode == 200) { + auth0user = Auth0User.fromJson(jsonDecode(responseAuth0UserInfo.body)); + } else { + throw Exception('Failed to get user details'); + } - if (response.statusCode == 200) { - return Auth0User.fromJson(jsonDecode(response.body)); + if (responseAuth0UserInfo.statusCode == 200) { + return auth0user; } else { throw Exception('Failed to get user details'); } } Future _setLocalVariables(result) async { - final bool isValidResult = - result != null && result.accessToken != null && result.idToken != null; + final bool isValidResult = result != null && result.accessToken != null && result.idToken != null; if (isValidResult) { auth0AccessToken = result.accessToken;