Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ import com.infomaniak.core.network.api.ApiController
import com.infomaniak.core.network.utils.await
import com.infomaniak.core.network.utils.bodyAsStringOrNull
import com.infomaniak.core.sentry.SentryLog
import okhttp3.MultipartBody
import okhttp3.FormBody
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.RequestBody
Expand Down Expand Up @@ -68,15 +68,14 @@ class DerivedTokenGeneratorImpl(
is Xor.First -> result.value
is Xor.Second -> return result
}
val form = MultipartBody.Builder().also {
it.setType(MultipartBody.FORM)
it.addFormDataPart("grant_type", "urn:ietf:params:oauth:grant-type:token-exchange")
it.addFormDataPart("subject_token", token)
it.addFormDataPart("subject_token_type", "urn:ietf:params:oauth:token-type:access_token")
it.addFormDataPart("client_assertion_type", "urn:ietf:params:oauth:client-assertion-type:jwt-bearer")
it.addFormDataPart("client_assertion", attestationToken)
it.addFormDataPart("client_id", clientId())
if (accessType == null) it.addFormDataPart("duration", "infinite")
val form = FormBody.Builder().also {
it.add("grant_type", "urn:ietf:params:oauth:grant-type:token-exchange")
it.add("subject_token", token)
it.add("subject_token_type", "urn:ietf:params:oauth:token-type:access_token")
it.add("client_assertion_type", "urn:ietf:params:oauth:client-assertion-type:jwt-bearer")
it.add("client_assertion", attestationToken)
it.add("client_id", clientId())
if (accessType == null) it.add("duration", "infinite")
}.build()

val okHttpClient = OkHttpClient()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import com.infomaniak.core.network.api.ApiController.gson
import com.infomaniak.core.network.networking.DefaultHttpClientProvider
import com.infomaniak.core.network.utils.await
import com.infomaniak.core.network.utils.bodyAsStringOrNull
import okhttp3.MultipartBody
import okhttp3.FormBody
import okhttp3.Request

object AuthRepository {
Expand All @@ -38,13 +38,12 @@ object AuthRepository {
throw RefreshTokenException()
}

val formBuilder: MultipartBody.Builder = MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("grant_type", "refresh_token")
.addFormDataPart("client_id", AuthConfiguration.clientId())
.addFormDataPart("refresh_token", refreshToken)
val formBuilder: FormBody.Builder = FormBody.Builder()
.add("grant_type", "refresh_token")
.add("client_id", AuthConfiguration.clientId())
.add("refresh_token", refreshToken)

if (AuthConfiguration.accessType == null) formBuilder.addFormDataPart("duration", "infinite")
if (AuthConfiguration.accessType == null) formBuilder.add("duration", "infinite")

val request = Request.Builder()
.url(ApiRoutesCore.TOKEN_URL)
Expand Down
30 changes: 14 additions & 16 deletions Login/src/main/java/com/infomaniak/core/login/InfomaniakLogin.kt
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.invoke
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
import okhttp3.MultipartBody
import okhttp3.FormBody
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.RequestBody
Expand Down Expand Up @@ -289,26 +289,24 @@ class InfomaniakLogin(
}

suspend fun getToken(okHttpClient: OkHttpClient, code: String): TokenResult {
val formBuilder: MultipartBody.Builder = MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("grant_type", "authorization_code")
.addFormDataPart("client_id", clientID)
.addFormDataPart("code", code)
.addFormDataPart("code_verifier", getCodeVerifier())
.addFormDataPart("redirect_uri", getRedirectURI())
val formBuilder: FormBody.Builder = FormBody.Builder()
.add("grant_type", "authorization_code")
.add("client_id", clientID)
.add("code", code)
.add("code_verifier", getCodeVerifier())
.add("redirect_uri", getRedirectURI())

return getToken(okHttpClient = okHttpClient, body = formBuilder.build())
}

suspend fun getToken(okHttpClient: OkHttpClient, username: String, password: String): TokenResult {
val formBuilder: MultipartBody.Builder = MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("grant_type", "password")
.addFormDataPart("client_id", clientID)
.addFormDataPart("username", username)
.addFormDataPart("password", password)

accessType?.let { formBuilder.addFormDataPart("access_type", it.apiValue) }
val formBuilder: FormBody.Builder = FormBody.Builder()
.add("grant_type", "password")
.add("client_id", clientID)
.add("username", username)
.add("password", password)

accessType?.let { formBuilder.add("access_type", it.apiValue) }

return getToken(okHttpClient = okHttpClient, body = formBuilder.build())
}
Expand Down
Loading