Skip to content

Commit cb48042

Browse files
committed
fix: add advancedAuth to PartialUserConfigRead (#16455)
1 parent d9fa4f4 commit cb48042

File tree

3 files changed

+81
-45
lines changed

3 files changed

+81
-45
lines changed

airbyte-server/src/main/kotlin/io/airbyte/server/apis/controllers/ConfigTemplateController.kt

Lines changed: 6 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,11 @@ package io.airbyte.server.apis.controllers
66

77
import com.fasterxml.jackson.databind.JsonNode
88
import io.airbyte.api.generated.ConfigTemplateApi
9-
import io.airbyte.api.model.generated.AdvancedAuth
10-
import io.airbyte.api.model.generated.AdvancedAuth.AuthFlowTypeEnum
119
import io.airbyte.api.model.generated.ConfigTemplateList
1210
import io.airbyte.api.model.generated.ConfigTemplateListItem
1311
import io.airbyte.api.model.generated.ConfigTemplateRead
1412
import io.airbyte.api.model.generated.ConfigTemplateRequestBody
1513
import io.airbyte.api.model.generated.ListConfigTemplatesRequestBody
16-
import io.airbyte.api.model.generated.OAuthConfigSpecification
1714
import io.airbyte.commons.auth.generated.Intent
1815
import io.airbyte.commons.auth.permissions.RequiresIntent
1916
import io.airbyte.commons.entitlements.Entitlement
@@ -23,6 +20,7 @@ import io.airbyte.data.services.ConfigTemplateService
2320
import io.airbyte.data.services.impls.data.mappers.objectMapper
2421
import io.airbyte.domain.models.OrganizationId
2522
import io.airbyte.persistence.job.WorkspaceHelper
23+
import io.airbyte.server.helpers.ConfigTemplateAdvancedAuthHelper
2624
import io.micronaut.http.annotation.Controller
2725

2826
@Controller
@@ -80,31 +78,11 @@ private fun ConfigTemplateWithActorDetails.toApiModel(): ConfigTemplateRead {
8078

8179
if (this.configTemplate.advancedAuth != null) {
8280
configTemplate.advancedAuth(
83-
AdvancedAuth()
84-
.authFlowType(
85-
when (this.configTemplate.advancedAuth!!.authFlowType) {
86-
io.airbyte.protocol.models.v0.AdvancedAuth.AuthFlowType.OAUTH_1_0 -> AuthFlowTypeEnum.OAUTH1_0
87-
io.airbyte.protocol.models.v0.AdvancedAuth.AuthFlowType.OAUTH_2_0 -> AuthFlowTypeEnum.OAUTH2_0
88-
null -> AuthFlowTypeEnum.OAUTH2_0
89-
},
90-
).predicateKey(this.configTemplate.advancedAuth!!.predicateKey)
91-
.predicateValue(this.configTemplate.advancedAuth!!.predicateValue)
92-
.oauthConfigSpecification(
93-
OAuthConfigSpecification()
94-
.completeOAuthOutputSpecification(
95-
this.configTemplate.advancedAuth!!
96-
.oauthConfigSpecification.completeOauthOutputSpecification,
97-
).oauthUserInputFromConnectorConfigSpecification(
98-
this.configTemplate.advancedAuth!!
99-
.oauthConfigSpecification.oauthUserInputFromConnectorConfigSpecification,
100-
).completeOAuthServerInputSpecification(
101-
this.configTemplate.advancedAuth!!
102-
.oauthConfigSpecification.completeOauthServerInputSpecification,
103-
).completeOAuthServerOutputSpecification(
104-
this.configTemplate.advancedAuth!!
105-
.oauthConfigSpecification.completeOauthServerOutputSpecification,
106-
),
107-
),
81+
ConfigTemplateAdvancedAuthHelper.mapAdvancedAuth(this.configTemplate.advancedAuth!!),
82+
)
83+
// Use the appropriate method signature for setting global credentials
84+
configTemplate.advancedAuthGlobalCredentialsAvailable(
85+
this.configTemplate.advancedAuthGlobalCredentialsAvailable,
10886
)
10987
}
11088
return configTemplate

airbyte-server/src/main/kotlin/io/airbyte/server/apis/controllers/PartialUserConfigController.kt

Lines changed: 31 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import io.airbyte.config.PartialUserConfigWithFullDetails
2222
import io.airbyte.data.services.PartialUserConfigService
2323
import io.airbyte.data.services.impls.data.mappers.objectMapper
2424
import io.airbyte.server.handlers.PartialUserConfigHandler
25+
import io.airbyte.server.helpers.ConfigTemplateAdvancedAuthHelper
2526
import io.micronaut.http.annotation.Body
2627
import io.micronaut.http.annotation.Controller
2728
import io.micronaut.http.annotation.Post
@@ -95,22 +96,35 @@ class PartialUserConfigController(
9596
return PartialUserConfigReadList().partialUserConfigs(items)
9697
}
9798

98-
private fun PartialUserConfigWithFullDetails.toApiModel(): PartialUserConfigRead =
99-
PartialUserConfigRead()
100-
.id(
101-
this.partialUserConfig.id,
102-
).actorId(this.partialUserConfig.actorId)
103-
.connectionConfiguration(this.connectionConfiguration)
104-
.configTemplate(
105-
ConfigTemplateRead()
106-
.id(
107-
this.configTemplate.id,
108-
).configTemplateSpec(
109-
this.configTemplate.userConfigSpec.let {
110-
objectMapper.valueToTree(it)
111-
},
112-
).icon(this.actorIcon)
113-
.name(this.actorName)
114-
.sourceDefinitionId(this.configTemplate.actorDefinitionId),
99+
private fun PartialUserConfigWithFullDetails.toApiModel(): PartialUserConfigRead {
100+
val partialUserConfig =
101+
PartialUserConfigRead()
102+
.id(
103+
this.partialUserConfig.id,
104+
).actorId(this.partialUserConfig.actorId)
105+
.connectionConfiguration(this.connectionConfiguration)
106+
.configTemplate(
107+
ConfigTemplateRead()
108+
.id(
109+
this.configTemplate.id,
110+
).configTemplateSpec(
111+
this.configTemplate.userConfigSpec.let {
112+
objectMapper.valueToTree(it)
113+
},
114+
).icon(this.actorIcon)
115+
.name(this.actorName)
116+
.sourceDefinitionId(this.configTemplate.actorDefinitionId),
117+
)
118+
119+
if (this.configTemplate.advancedAuth != null) {
120+
partialUserConfig.configTemplate.advancedAuth(
121+
ConfigTemplateAdvancedAuthHelper.mapAdvancedAuth(this.configTemplate.advancedAuth!!),
122+
)
123+
partialUserConfig.configTemplate.advancedAuthGlobalCredentialsAvailable(
124+
this.configTemplate.advancedAuthGlobalCredentialsAvailable,
115125
)
126+
}
127+
128+
return partialUserConfig
129+
}
116130
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/*
2+
* Copyright (c) 2020-2025 Airbyte, Inc., all rights reserved.
3+
*/
4+
5+
package io.airbyte.server.helpers
6+
7+
import io.airbyte.api.model.generated.AdvancedAuth
8+
import io.airbyte.api.model.generated.OAuthConfigSpecification
9+
10+
/**
11+
* Utility class to handle advanced authentication mapping and configuration.
12+
*/
13+
class ConfigTemplateAdvancedAuthHelper {
14+
companion object {
15+
/**
16+
* Maps v0 AdvancedAuth model to the generated API AdvancedAuth model.
17+
*
18+
* @param sourceAdvancedAuth The source v0 advanced auth configuration
19+
* @return A new AdvancedAuth object populated with the mapped values
20+
*/
21+
fun mapAdvancedAuth(sourceAdvancedAuth: io.airbyte.protocol.models.v0.AdvancedAuth): AdvancedAuth =
22+
AdvancedAuth()
23+
.authFlowType(
24+
when (sourceAdvancedAuth.authFlowType) {
25+
io.airbyte.protocol.models.v0.AdvancedAuth.AuthFlowType.OAUTH_1_0 -> AdvancedAuth.AuthFlowTypeEnum.OAUTH1_0
26+
io.airbyte.protocol.models.v0.AdvancedAuth.AuthFlowType.OAUTH_2_0 -> AdvancedAuth.AuthFlowTypeEnum.OAUTH2_0
27+
null -> AdvancedAuth.AuthFlowTypeEnum.OAUTH2_0
28+
},
29+
).predicateKey(sourceAdvancedAuth.predicateKey)
30+
.predicateValue(sourceAdvancedAuth.predicateValue)
31+
.oauthConfigSpecification(
32+
OAuthConfigSpecification()
33+
.completeOAuthOutputSpecification(
34+
sourceAdvancedAuth.oauthConfigSpecification.completeOauthOutputSpecification,
35+
).oauthUserInputFromConnectorConfigSpecification(
36+
sourceAdvancedAuth.oauthConfigSpecification.oauthUserInputFromConnectorConfigSpecification,
37+
).completeOAuthServerInputSpecification(
38+
sourceAdvancedAuth.oauthConfigSpecification.completeOauthServerInputSpecification,
39+
).completeOAuthServerOutputSpecification(
40+
sourceAdvancedAuth.oauthConfigSpecification.completeOauthServerOutputSpecification,
41+
),
42+
)
43+
}
44+
}

0 commit comments

Comments
 (0)