Skip to content

Commit

Permalink
Add LinShare Headers in /jwt request
Browse files Browse the repository at this point in the history
(cherry picked from commit e47e000)
  • Loading branch information
hoangdat committed Oct 12, 2023
1 parent 18786a9 commit 4c8f809
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ class AuthenticationOIDCDataSourceImpl implements AuthenticationOIDCDataSource {
final permanentToken = await linShareHttpClient.createPermanentTokenWithOIDC(
baseUrl,
apiVersion,
tokenOIDC.token,
tokenOIDC,
PermanentTokenBodyRequest('Token-${deviceManager.getPlatformString()}-$deviceName'),
otpCode: otpCode);
return permanentToken.toToken();
Expand Down
17 changes: 11 additions & 6 deletions data/lib/src/network/linshare_http_client.dart
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@

import 'dart:async';
import 'dart:convert';
import 'dart:developer' as developer;
import 'dart:io';

import 'package:data/data.dart';
Expand Down Expand Up @@ -77,16 +78,15 @@ import 'model/request/add_shared_space_member_body_request.dart';
import 'model/request/add_upload_body_request.dart';
import 'model/request/copy_body_request.dart';
import 'model/request/create_shared_space_node_folder_request.dart';
import 'model/request/update_shared_space_member_body_request.dart';
import 'model/request/update_drive_member_body_request.dart';
import 'model/request/update_shared_space_member_body_request.dart';
import 'model/request/update_workspace_member_body_request.dart';
import 'model/response/document_details_response.dart';
import 'model/response/upload_request_response.dart';
import 'model/response/user_response.dart';
import 'model/share/share_dto.dart';
import 'model/sharedspacedocument/work_group_document_dto.dart';
import 'model/sharedspacedocument/work_group_folder_dto.dart';
import 'dart:developer' as developer;

class LinShareHttpClient {
final DioClient _dioClient;
Expand All @@ -112,20 +112,25 @@ class LinShareHttpClient {
Future<PermanentToken> createPermanentTokenWithOIDC(
Uri authenticateUrl,
APIVersionSupported apiVersion,
String oidcToken,
TokenOIDC oidcToken,
PermanentTokenBodyRequest bodyRequest,
{OTPCode? otpCode}) async {
final bearerAuth = 'Bearer $oidcToken';
final bearerAuth = 'Bearer ${oidcToken.token}';
final resultJson = await _dioClient.post(
Endpoint.authentication.generateAuthenticationUrl(authenticateUrl, apiVersion),
options: Options(headers: _buildPermanentTokenRequestParam(bearerAuth, otpCode: otpCode)),
options: Options(headers: _buildPermanentTokenRequestParam(bearerAuth, otpCode: otpCode, tokenId: oidcToken.tokenId.uuid)),
data: bodyRequest.toJson());
return PermanentToken.fromJson(resultJson);
}

Map<String, dynamic> _buildPermanentTokenRequestParam(String authorizationHeader, {OTPCode? otpCode}) {
Map<String, dynamic> _buildPermanentTokenRequestParam(String authorizationHeader, {OTPCode? otpCode, String? tokenId}) {
final headerParam = _dioClient.getHeaders();
headerParam[HttpHeaders.authorizationHeader] = authorizationHeader;
headerParam['X-LinShare-Auth-Provider'] = 'Oidc-Jwt';
headerParam['X-LinShare-Client-App'] = 'Linshare-Web';
if (tokenId != null) {
headerParam['X-Linshare-Id-Token'] = tokenId;
}
if (otpCode != null && otpCode.value.isNotEmpty) {
headerParam[Constant.linShare2FAPin] = otpCode.value;
}
Expand Down

0 comments on commit 4c8f809

Please sign in to comment.