|
4 | 4 | "bytes" |
5 | 5 | "fmt" |
6 | 6 | "os" |
| 7 | + "strings" |
7 | 8 |
|
8 | 9 | kc "github.com/movewp3/keycloakclient-controller/api/v1alpha1" |
9 | 10 | "github.com/movewp3/keycloakclient-controller/pkg/common" |
@@ -171,33 +172,35 @@ func (i *DedicatedKeycloakClientReconciler) ReconcileScopeMappings(state *common |
171 | 172 | } |
172 | 173 | } |
173 | 174 |
|
174 | | -func getAdditionalDefaultClientScope() string { |
175 | | - additionalDefaultClientScope, found := os.LookupEnv("ADDITIONAL_DEFAULT_CLIENT_SCOPE") |
| 175 | +func getAdditionalDefaultClientScopes() []string { |
| 176 | + additionalDefaultClientScopes, found := os.LookupEnv("ADDITIONAL_DEFAULT_CLIENT_SCOPES") |
176 | 177 | if !found { |
177 | | - return "" |
| 178 | + return []string{} |
178 | 179 | } |
179 | | - return additionalDefaultClientScope |
| 180 | + |
| 181 | + return strings.Split(additionalDefaultClientScopes, ",") |
180 | 182 | } |
181 | 183 |
|
182 | 184 | func (i *DedicatedKeycloakClientReconciler) ReconcileClientScopes(state *common.ClientState, cr *kc.KeycloakClient, desired *common.DesiredClusterState) { |
183 | 185 |
|
184 | 186 | logKcc.Info(fmt.Sprintf("ReconcileClientScopes %s", cr.Spec.Client.Name)) |
185 | 187 |
|
186 | | - oldClientScopes := []string{} |
| 188 | + oldClientScopes := cr.Spec.Client.DefaultClientScopes |
187 | 189 | //addedDefaultClientScope := false |
188 | 190 |
|
189 | 191 | additionalDefaultClientScopes := cr.Spec.Client.DefaultClientScopes |
190 | | - if getAdditionalDefaultClientScope() != "" && !slices.Contains(cr.Spec.Client.DefaultClientScopes, getAdditionalDefaultClientScope()) && cr.Spec.Client.PublicClient { |
191 | | - logKcc.Info(fmt.Sprintf("Add default client scope %v", |
192 | | - getAdditionalDefaultClientScope())) |
193 | | - |
194 | | - oldClientScopes = cr.Spec.Client.DefaultClientScopes |
195 | | - //addedDefaultClientScope = true |
196 | | - additionalDefaultClientScopes = append(cr.Spec.Client.DefaultClientScopes, getAdditionalDefaultClientScope()) |
197 | | - |
| 192 | + if cr.Spec.Client.PublicClient { |
| 193 | + for _, scope := range getAdditionalDefaultClientScopes() { |
| 194 | + if !slices.Contains(cr.Spec.Client.DefaultClientScopes, scope) { |
| 195 | + logKcc.Info(fmt.Sprintf("Add default client scope %v", |
| 196 | + getAdditionalDefaultClientScopes())) |
| 197 | + additionalDefaultClientScopes = append(additionalDefaultClientScopes, scope) |
| 198 | + } |
| 199 | + } |
198 | 200 | defer func() { |
199 | 201 | cr.Spec.Client.DefaultClientScopes = oldClientScopes |
200 | 202 | }() |
| 203 | + |
201 | 204 | } |
202 | 205 |
|
203 | 206 | defaultClientScopes := model.FilterClientScopesByNames(state.AvailableClientScopes, additionalDefaultClientScopes) |
|
0 commit comments