TF-624 Setup DOMAIN_REDIRECT_URL/WEB_OIDC_CLIENT_ID in env file

This commit is contained in:
dab246
2022-06-08 11:25:40 +07:00
committed by Dat H. Pham
parent a30dd68b1b
commit 831f34f137
12 changed files with 50 additions and 14 deletions
+2
View File
@@ -1 +1,3 @@
SERVER_URL=http://localhost
DOMAIN_REDIRECT_URL=http://localhost:3000
WEB_OIDC_CLIENT_ID=teammail-web
@@ -4,6 +4,7 @@ import 'package:dartz/dartz.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:tmail_ui_user/features/email/domain/repository/email_repository.dart';
import 'package:tmail_ui_user/features/email/domain/state/download_attachments_state.dart';
import 'package:tmail_ui_user/features/login/data/extensions/oidc_configuration_extensions.dart';
import 'package:tmail_ui_user/features/login/data/network/config/authorization_interceptors.dart';
import 'package:tmail_ui_user/features/login/domain/exceptions/authentication_exception.dart';
import 'package:tmail_ui_user/features/login/domain/repository/account_repository.dart';
@@ -0,0 +1,31 @@
import 'package:core/utils/build_utils.dart';
import 'package:model/model.dart';
import 'package:tmail_ui_user/main/utils/app_config.dart';
extension OidcConfigurationExtensions on OIDCConfiguration {
String get redirectUrl {
if (BuildUtils.isWeb) {
if (AppConfig.domainRedirectUrl.endsWith('/')) {
return AppConfig.domainRedirectUrl + loginRedirectOidcWeb;
} else {
return AppConfig.domainRedirectUrl + '/' + loginRedirectOidcWeb;
}
} else {
return redirectOidcMobile;
}
}
String get logoutRedirectUrl {
if (BuildUtils.isWeb) {
if (AppConfig.domainRedirectUrl.endsWith('/')) {
return AppConfig.domainRedirectUrl + logoutRedirectOidcWeb;
} else {
return AppConfig.domainRedirectUrl + '/' + logoutRedirectOidcWeb;
}
} else {
return redirectOidcMobile;
}
}
}
@@ -6,6 +6,7 @@ import 'package:model/oidc/oidc_configuration.dart';
import 'package:model/oidc/token_id.dart';
import 'package:model/oidc/token_oidc.dart';
import 'package:tmail_ui_user/features/login/data/extensions/authentication_token_extension.dart';
import 'package:tmail_ui_user/features/login/data/extensions/oidc_configuration_extensions.dart';
import 'package:tmail_ui_user/features/login/data/extensions/token_response_extension.dart';
import 'package:tmail_ui_user/features/login/data/network/authentication_client/authentication_client_base.dart';
import 'package:tmail_ui_user/features/login/domain/exceptions/authentication_exception.dart';
@@ -2,8 +2,10 @@
import 'package:core/utils/app_logger.dart';
import 'package:get/get.dart';
import 'package:tmail_ui_user/features/login/data/extensions/authentication_token_extension.dart';
import 'package:tmail_ui_user/features/login/data/extensions/oidc_configuration_extensions.dart';
import 'package:tmail_ui_user/features/login/data/extensions/token_response_extension.dart';
import 'package:tmail_ui_user/features/login/data/network/config/oidc_constant.dart';
import 'package:tmail_ui_user/features/login/data/utils/library_platform/app_auth_plugin/app_auth_plugin.dart';
import 'package:tmail_ui_user/features/login/domain/exceptions/authentication_exception.dart';
import 'package:universal_html/html.dart' as html;
import 'package:tmail_ui_user/features/login/data/network/authentication_client/authentication_client_base.dart';
@@ -12,8 +14,6 @@ import 'package:model/oidc/oidc_configuration.dart';
import 'package:model/oidc/token_id.dart';
import 'package:model/oidc/token_oidc.dart';
import '../../utils/library_platform/app_auth_plugin/app_auth_plugin.dart';
class AuthenticationClientWeb implements AuthenticationClientBase {
final AppAuthWebPlugin _appAuthWeb;
@@ -8,6 +8,7 @@ import 'package:model/account/authentication_type.dart';
import 'package:model/oidc/oidc_configuration.dart';
import 'package:model/oidc/token.dart';
import 'package:model/oidc/token_oidc.dart';
import 'package:tmail_ui_user/features/login/data/extensions/oidc_configuration_extensions.dart';
import 'package:tmail_ui_user/features/login/data/local/account_cache_manager.dart';
import 'package:tmail_ui_user/features/login/data/local/token_oidc_cache_manager.dart';
import 'package:tmail_ui_user/features/login/data/network/authentication_client/authentication_client_base.dart';
@@ -1,11 +1,11 @@
import 'package:core/core.dart';
import 'package:tmail_ui_user/main/utils/app_config.dart';
class OIDCConstant {
static String get mobileOidcClientId => 'teammail-mobile';
static String get webOidcClientId => 'teammail-web';
static List<String> get oidcScope => ['openid', 'offline_access'];
static const keyAuthorityOidc = 'KEY_AUTHORITY_OIDC';
static const authResponseKey = "auth_info";
static String get clientId => BuildUtils.isWeb ? webOidcClientId : mobileOidcClientId;
static String get clientId => BuildUtils.isWeb ? AppConfig.webOidcClientId : mobileOidcClientId;
}
@@ -4,6 +4,7 @@ import 'package:core/presentation/state/success.dart';
import 'package:core/utils/app_logger.dart';
import 'package:dartz/dartz.dart';
import 'package:model/oidc/oidc_configuration.dart';
import 'package:tmail_ui_user/features/login/data/extensions/oidc_configuration_extensions.dart';
import 'package:tmail_ui_user/features/login/domain/repository/authentication_oidc_repository.dart';
import 'package:tmail_ui_user/features/login/domain/state/authenticate_oidc_on_browser_state.dart';
@@ -7,6 +7,7 @@ import 'package:model/account/account.dart';
import 'package:model/account/authentication_type.dart';
import 'package:model/oidc/oidc_configuration.dart';
import 'package:model/oidc/token_oidc.dart';
import 'package:tmail_ui_user/features/login/data/extensions/oidc_configuration_extensions.dart';
import 'package:tmail_ui_user/features/login/domain/repository/account_repository.dart';
import 'package:tmail_ui_user/features/login/domain/repository/authentication_oidc_repository.dart';
import 'package:tmail_ui_user/features/login/domain/repository/credential_repository.dart';
@@ -2,6 +2,7 @@
import 'package:core/core.dart';
import 'package:dartz/dartz.dart';
import 'package:model/model.dart';
import 'package:tmail_ui_user/features/login/data/extensions/oidc_configuration_extensions.dart';
import 'package:tmail_ui_user/features/login/domain/repository/account_repository.dart';
import 'package:tmail_ui_user/features/login/domain/repository/authentication_oidc_repository.dart';
import 'package:tmail_ui_user/features/login/domain/state/refresh_token_oidc_state.dart';
+2
View File
@@ -2,4 +2,6 @@ import 'package:flutter_dotenv/flutter_dotenv.dart';
class AppConfig {
static String get baseUrl => dotenv.get('SERVER_URL', fallback: '');
static String get domainRedirectUrl => dotenv.get('DOMAIN_REDIRECT_URL', fallback: '');
static String get webOidcClientId => dotenv.get('WEB_OIDC_CLIENT_ID', fallback: '');
}
+4 -9
View File
@@ -1,12 +1,11 @@
import 'package:core/utils/build_utils.dart';
import 'package:equatable/equatable.dart';
class OIDCConfiguration with EquatableMixin {
static const redirectOidcMobile = 'teammail.mobile://oauthredirect';
static const redirectOidcWeb = 'http://localhost:3000/login-callback.html';
static const logoutRedirectOidcWeb = 'http://localhost:3000/logout-callback.html';
static const wellKnownOpenId = '.well-known/openid-configuration';
final redirectOidcMobile = 'teammail.mobile://oauthredirect';
final wellKnownOpenId = '.well-known/openid-configuration';
final loginRedirectOidcWeb = 'login-callback.html';
final logoutRedirectOidcWeb = 'logout-callback.html';
final String authority;
final String clientId;
@@ -26,10 +25,6 @@ class OIDCConfiguration with EquatableMixin {
}
}
String get redirectUrl => BuildUtils.isWeb ? redirectOidcWeb : redirectOidcMobile;
String get logoutRedirectUrl => BuildUtils.isWeb ? logoutRedirectOidcWeb : redirectOidcMobile;
String get clientIdHash => clientId.hashCode.toString();
@override