From e6a126d1cbd443f5fdcb0f9fadd0cd111f2964a1 Mon Sep 17 00:00:00 2001 From: Francesco Romeo Date: Fri, 20 May 2022 10:53:01 +0200 Subject: [PATCH] login / logout working, account still has to be saved and used locally --- vidaia/lib/pages/login_page.dart | 22 ++++++++++++++++++- vidaia/lib/services/auth_service.dart | 31 ++++++++++++++++++++++++++- vidaia/lib/utils/constants.dart | 3 ++- vidaia/lib/widgets/vidaia_drawer.dart | 10 +++++---- 4 files changed, 59 insertions(+), 7 deletions(-) diff --git a/vidaia/lib/pages/login_page.dart b/vidaia/lib/pages/login_page.dart index 6516ed7..e34bd85 100644 --- a/vidaia/lib/pages/login_page.dart +++ b/vidaia/lib/pages/login_page.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_login/flutter_login.dart'; import 'package:vidaia/main.dart'; import 'package:vidaia/pages/home/home_page_loader.dart'; +import 'package:vidaia/utils/constants.dart'; import 'package:vidaia/utils/globals.dart'; import 'package:vidaia/utils/wallet.dart'; import 'package:vidaia/services/auth_service.dart'; @@ -103,7 +104,26 @@ class _LoginPageState extends State { child: const Text('Auth0 Login | Register'), ) else - Text('Welcome $name'), + Expanded( + child: Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Text( + 'Welcome $name', + textAlign: TextAlign.center, + style: const TextStyle( + color: TEXT_WHITE, decoration: TextDecoration.none), + ), + const Icon( + Icons.done, + color: PRIMARY_LIGHT, + size: 130.0, + ), + ], + )), + ), ], ), ); diff --git a/vidaia/lib/services/auth_service.dart b/vidaia/lib/services/auth_service.dart index 3727d27..f2b9112 100644 --- a/vidaia/lib/services/auth_service.dart +++ b/vidaia/lib/services/auth_service.dart @@ -1,4 +1,5 @@ import 'dart:convert'; +import 'package:flutter/foundation.dart'; import 'package:http/http.dart' as http; import 'package:flutter/services.dart'; import 'package:flutter_appauth/flutter_appauth.dart'; @@ -44,13 +45,41 @@ class AuthService { } } + Future logout() async { + await secureStorage.delete(key: REFRESH_TOKEN_KEY); + final url = Uri.https( + AUTH0_DOMAIN, + '/v2/logout', + { + 'client_id': AUTH0_CLIENT_ID, + 'federated': '', + // 'returnTo': 'YOUR_RETURN_LOGOUT_URL' + }, + ); + + debugPrint('logout url: ' + url.toString()); + + final response = await http.get( + url, + headers: {'Authorization': 'Bearer $auth0AccessToken'}, + ); + + debugPrint( + 'logout: ${response.request} ${response.statusCode} ${response.body}'); + + return 'logout: ${response.request} ${response.statusCode} ${response.body}'; + } + Future login() async { try { final authorizationTokenRequest = AuthorizationTokenRequest( AUTH0_CLIENT_ID, AUTH0_REDIRECT_URI, issuer: AUTH0_ISSUER, - scopes: ['openid', 'profile', 'offline_access', 'email'], + scopes: ['openid', 'profile', 'email'], // offline_access + promptValues: ['login'], + + /// possible values login, none, consent, select_account ); final AuthorizationTokenResponse? result = diff --git a/vidaia/lib/utils/constants.dart b/vidaia/lib/utils/constants.dart index 30be867..0607fc7 100644 --- a/vidaia/lib/utils/constants.dart +++ b/vidaia/lib/utils/constants.dart @@ -4,7 +4,6 @@ const Color PRIMARY = Color(0xff0b2b2d); const Color PRIMARY_LIGHT = Color(0xff6c9772); const Color PRIMARY_DARK = Color(0xff112823); - const Color BUTTON = Color(0xffffb900); const Color CLICKED = Color(0xffd19000); @@ -13,3 +12,5 @@ const Color SPEND = Color.fromARGB(255, 245, 124, 102); const Color BACKGROUND = Color(0xfff8faf7); const Color BACKGROUND_SHADE = Color(0xffebeeea); const Color SECONDARY = Color.fromARGB(255, 197, 197, 197); + +const Color TEXT_WHITE = Color(0xfff8faf7); diff --git a/vidaia/lib/widgets/vidaia_drawer.dart b/vidaia/lib/widgets/vidaia_drawer.dart index dab8f1e..c171665 100644 --- a/vidaia/lib/widgets/vidaia_drawer.dart +++ b/vidaia/lib/widgets/vidaia_drawer.dart @@ -5,6 +5,7 @@ import 'package:vidaia/pages/home/home_page_loader.dart'; import 'package:vidaia/pages/login_page.dart'; import 'package:vidaia/pages/settings_page.dart'; import 'package:vidaia/repositories/dataRepository.dart'; +import 'package:vidaia/services/auth_service.dart'; import 'package:vidaia/utils/constants.dart'; class VidaiaDrawer extends StatelessWidget { @@ -153,10 +154,11 @@ class VidaiaDrawer extends StatelessWidget { 'Logout', style: Theme.of(context).textTheme.subtitle1, ), - onTap: () => { - Navigator.push(context, - MaterialPageRoute(builder: (context) => LoginPage())) - }), + onTap: () async { + await AuthService.instance.logout(); + Navigator.push(context, + MaterialPageRoute(builder: (context) => LoginPage())); + }), ), ]), ),