TF-571 Update token for interceptors dio

This commit is contained in:
dab246
2022-05-20 16:05:14 +07:00
committed by Dat H. Pham
parent 4804a1659a
commit ea598c20b8
9 changed files with 42 additions and 25 deletions
@@ -0,0 +1,32 @@
import 'dart:convert';
import 'dart:io';
import 'package:dio/dio.dart';
import 'package:model/model.dart';
class AuthorizationInterceptors extends InterceptorsWrapper {
String? _authorization;
Token? _token;
void changeAuthorization(String? userName, String? password) {
_authorization = base64Encode(utf8.encode('$userName:$password'));
}
void setToken(Token? newToken) {
_token = newToken;
}
@override
void onRequest(RequestOptions options, RequestInterceptorHandler handler) {
if (_authorization != null) {
options.headers[HttpHeaders.authorizationHeader] = _getAuthorizationAsBasicHeader(_authorization);
} else if (_token != null && _token?.isTokenValid() == true) {
options.headers[HttpHeaders.authorizationHeader] = _getTokenAsBearerHeader(_token!.token);
}
super.onRequest(options, handler);
}
String _getAuthorizationAsBasicHeader(String? authorization) => 'Basic $authorization';
String _getTokenAsBearerHeader(String token) => 'Bearer $token';
}
@@ -6,6 +6,7 @@ import 'package:tmail_ui_user/features/login/data/datasource/authentication_data
import 'package:tmail_ui_user/features/login/data/datasource/authentication_oidc_datasource.dart';
import 'package:tmail_ui_user/features/login/data/datasource_impl/authentication_datasource_impl.dart';
import 'package:tmail_ui_user/features/login/data/datasource_impl/authentication_oidc_datasource_impl.dart';
import 'package:tmail_ui_user/features/login/data/network/config/authorization_interceptors.dart';
import 'package:tmail_ui_user/features/login/data/network/oidc_http_client.dart';
import 'package:tmail_ui_user/features/login/data/repository/authentication_oidc_repository_impl.dart';
import 'package:tmail_ui_user/features/login/data/repository/authentication_repository_impl.dart';
@@ -4,6 +4,7 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:get/get.dart';
import 'package:model/model.dart';
import 'package:tmail_ui_user/features/login/data/network/config/authorization_interceptors.dart';
import 'package:tmail_ui_user/features/login/domain/state/authentication_user_state.dart';
import 'package:tmail_ui_user/features/login/domain/state/check_oidc_is_available_state.dart';
import 'package:tmail_ui_user/features/login/domain/state/get_oidc_configuration_state.dart';
@@ -172,8 +173,11 @@ class LoginController extends GetxController {
}
void _getTokenOIDCSuccess(GetTokenOIDCSuccess success) {
log('LoginController::_getTokenOIDCSuccess(): ');
log('LoginController::_getTokenOIDCSuccess(): ${success.tokenOIDC.toString()}');
loginState.value = LoginState(Right(success));
_dynamicUrlInterceptors.changeBaseUrl(kIsWeb ? AppConfig.baseUrl : _urlText);
_authorizationInterceptors.setToken(success.tokenOIDC.toToken());
pushAndPop(AppRoutes.SESSION);
}
void _loginAction(Uri baseUrl, UserName userName, Password password) async {