diff --git a/env.file b/env.file index 6c44a3be4..989479a99 100644 --- a/env.file +++ b/env.file @@ -1,6 +1,7 @@ SERVER_URL=http://localhost/ DOMAIN_REDIRECT_URL=http://localhost:3000 WEB_OIDC_CLIENT_ID=teammail-web +OIDC_SCOPES=openid,profile,email APP_GRID_AVAILABLE=supported FCM_AVAILABLE=supported IOS_FCM=supported \ No newline at end of file diff --git a/lib/features/login/data/local/oidc_configuration_cache_manager.dart b/lib/features/login/data/local/oidc_configuration_cache_manager.dart index a8590d42b..88ed6988f 100644 --- a/lib/features/login/data/local/oidc_configuration_cache_manager.dart +++ b/lib/features/login/data/local/oidc_configuration_cache_manager.dart @@ -3,6 +3,7 @@ import 'package:model/oidc/oidc_configuration.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:tmail_ui_user/features/login/data/network/config/oidc_constant.dart'; import 'package:tmail_ui_user/features/login/data/network/oidc_error.dart'; +import 'package:tmail_ui_user/main/utils/app_config.dart'; class OidcConfigurationCacheManager { final SharedPreferences _sharedPreferences; @@ -17,7 +18,7 @@ class OidcConfigurationCacheManager { return OIDCConfiguration( authority: authority, clientId: OIDCConstant.clientId, - scopes: OIDCConstant.oidcScope); + scopes: AppConfig.oidcScopes); } } diff --git a/lib/features/login/data/network/config/oidc_constant.dart b/lib/features/login/data/network/config/oidc_constant.dart index d54846230..2ad4a3898 100644 --- a/lib/features/login/data/network/config/oidc_constant.dart +++ b/lib/features/login/data/network/config/oidc_constant.dart @@ -3,7 +3,7 @@ import 'package:tmail_ui_user/main/utils/app_config.dart'; class OIDCConstant { static String get mobileOidcClientId => 'teammail-mobile'; - static List get oidcScope => ['openid', 'offline_access']; + static List get oidcScope => ['openid', 'email']; static const keyAuthorityOidc = 'KEY_AUTHORITY_OIDC'; static const authResponseKey = "auth_info"; diff --git a/lib/features/login/data/network/oidc_http_client.dart b/lib/features/login/data/network/oidc_http_client.dart index 3526e62c7..db372d8e7 100644 --- a/lib/features/login/data/network/oidc_http_client.dart +++ b/lib/features/login/data/network/oidc_http_client.dart @@ -6,12 +6,13 @@ import 'package:core/data/network/dio_client.dart'; import 'package:core/utils/app_logger.dart'; import 'package:model/oidc/oidc_configuration.dart'; import 'package:model/oidc/request/oidc_request.dart'; -import 'package:model/oidc/response/oidc_response.dart'; import 'package:model/oidc/response/oidc_discovery_response.dart'; +import 'package:model/oidc/response/oidc_response.dart'; import 'package:tmail_ui_user/features/login/data/extensions/service_path_extension.dart'; import 'package:tmail_ui_user/features/login/data/network/config/oidc_constant.dart'; import 'package:tmail_ui_user/features/login/data/network/endpoint.dart'; import 'package:tmail_ui_user/features/login/data/network/oidc_error.dart'; +import 'package:tmail_ui_user/main/utils/app_config.dart'; class OIDCHttpClient { @@ -45,7 +46,7 @@ class OIDCHttpClient { return OIDCConfiguration( authority: oidcResponse.links[0].href.toString(), clientId: OIDCConstant.clientId, - scopes: OIDCConstant.oidcScope + scopes: AppConfig.oidcScopes ); } diff --git a/lib/main/utils/app_config.dart b/lib/main/utils/app_config.dart index ab6620885..438716759 100644 --- a/lib/main/utils/app_config.dart +++ b/lib/main/utils/app_config.dart @@ -2,6 +2,7 @@ import 'dart:io'; import 'package:flutter/foundation.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; +import 'package:tmail_ui_user/features/login/data/network/config/oidc_constant.dart'; class AppConfig { static String get baseUrl => dotenv.get('SERVER_URL', fallback: ''); @@ -28,4 +29,18 @@ class AppConfig { static String appFCMConfigurationPath = "configurations/env.fcm"; static String get fcmVapidPublicKeyWeb => dotenv.get('FIREBASE_WEB_VAPID_PUBLIC_KEY', fallback: ''); + + static List get oidcScopes { + try { + final envScopes = dotenv.get('OIDC_SCOPES', fallback: ''); + + if (envScopes.isNotEmpty) { + return envScopes.split(','); + } + + return OIDCConstant.oidcScope; + } catch (e) { + return OIDCConstant.oidcScope; + } + } } \ No newline at end of file