in app/registry/supplier_auth.go [22:107]
func (a *App) prepareSupplierAuthConfig(ctx *gin.Context, r *registry, values *Values,
secrets map[string]map[string]interface{}, mrActions *[]string) (bool, error) {
if r.SupAuthBrowserFlow == "" {
return false, nil
}
valuesChanged := values.Keycloak.Realms.OfficerPortal.SelfRegistration != (r.SelfRegistration == "on") ||
values.Keycloak.Realms.OfficerPortal.BrowserFlow != r.SupAuthBrowserFlow
values.Keycloak.Realms.OfficerPortal.SelfRegistration = r.SelfRegistration == "on"
values.Keycloak.Realms.OfficerPortal.BrowserFlow = r.SupAuthBrowserFlow
if r.SupAuthBrowserFlow == supAuthBrowserFlowWidget {
widgetHeight, err := strconv.ParseInt(r.SupAuthWidgetHeight, 10, 32)
if err != nil {
return false, fmt.Errorf("unable to decode int, err: %w", err)
}
if !valuesChanged {
valuesChanged = values.Keycloak.AuthFlows.OfficerAuthFlow.WidgetHeight != int(widgetHeight) ||
values.SignWidget.URL != r.SupAuthURL
}
values.Keycloak.AuthFlows.OfficerAuthFlow.WidgetHeight = int(widgetHeight)
values.SignWidget.URL = r.SupAuthURL
} else if r.SupAuthBrowserFlow == supAuthBrowserFlowIdGovUa {
if !valuesChanged {
valuesChanged = values.Keycloak.IdentityProviders.IDGovUA.URL != r.SupAuthURL
}
values.Keycloak.IdentityProviders.IDGovUA.URL = r.SupAuthURL
if r.SupAuthClientID != "" && r.SupAuthClientSecret != "" {
secretPath := a.vaultRegistryPathKey(r.Name, fmt.Sprintf("%s-%s", idGovUASecretPath,
time.Now().Format("20060201T150405Z")))
idGovUaCredsChanged, oldClientSecret, err := a.idGovUASecretChanged(values.Keycloak.IdentityProviders.IDGovUA.SecretKey, r)
if err != nil {
return false, fmt.Errorf("unable to get secret, %w", err)
}
if idGovUaCredsChanged {
var clientSecret string
if r.SupAuthClientSecret == emptyClientSecret {
clientSecret = oldClientSecret
} else {
clientSecret = r.SupAuthClientSecret
}
secrets[secretPath] = map[string]interface{}{
idGovUASecretClientID: r.SupAuthClientID,
idGovUASecretClientSecret: clientSecret,
}
values.Keycloak.IdentityProviders.IDGovUA.SecretKey = secretPath
valuesChanged = true
}
}
}
var RecIndividualAccessEnabledBool = r.RecIndividualAccessEnabled == "on"
if values.Portals.Officer.IndividualAccessEnabled != RecIndividualAccessEnabledBool {
valuesChanged = true
values.Portals.Officer.IndividualAccessEnabled = RecIndividualAccessEnabledBool
}
if !valuesChanged {
return false, nil
}
values.OriginalYaml["signWidget"] = values.SignWidget
keycloakInterface, ok := values.OriginalYaml["keycloak"]
if !ok {
keycloakInterface = map[string]interface{}{}
}
keycloakDict := keycloakInterface.(map[string]interface{})
keycloakDict["realms"] = values.Keycloak.Realms
keycloakDict["authFlows"] = values.Keycloak.AuthFlows
keycloakDict["identityProviders"] = values.Keycloak.IdentityProviders
values.OriginalYaml["keycloak"] = keycloakDict
values.OriginalYaml["portals"] = values.Portals
return true, nil
}