@@ -144,6 +144,33 @@ func (s *subroutine) Process(ctx context.Context, instance runtimeobject.Runtime
144144
145145 log .Info ().Str ("email" , invite .Spec .Email ).Msg ("User does not exist, creating user and sending invite" )
146146
147+ clientQueryParams := url.Values {
148+ "clientId" : {realm },
149+ }
150+
151+ res , err = s .keycloak .Get (fmt .Sprintf ("%s/admin/realms/%s/clients?%s" , s .keycloakBaseURL , realm , clientQueryParams .Encode ()))
152+ if err != nil {
153+ log .Err (err ).Msg ("Failed to verify client exists" )
154+ return ctrl.Result {}, errors .NewOperatorError (err , true , false )
155+ }
156+ defer res .Body .Close () //nolint:errcheck
157+
158+ if res .StatusCode != http .StatusOK {
159+ return ctrl.Result {}, errors .NewOperatorError (fmt .Errorf ("failed to verify client exists: %s" , res .Status ), true , false )
160+ }
161+
162+ var clients []keycloakClient
163+ if err = json .NewDecoder (res .Body ).Decode (& clients ); err != nil {
164+ return ctrl.Result {}, errors .NewOperatorError (err , true , false )
165+ }
166+
167+ if len (clients ) == 0 {
168+ log .Info ().Str ("clientId" , realm ).Msg ("Client does not exist yet, requeuing" )
169+ return ctrl.Result {}, errors .NewOperatorError (fmt .Errorf ("client %s does not exist yet" , realm ), true , false )
170+ }
171+
172+ log .Debug ().Str ("clientId" , realm ).Msg ("Client verified" )
173+
147174 // Create user
148175 newUser := keycloakUser {
149176 Email : invite .Spec .Email ,
@@ -186,33 +213,6 @@ func (s *subroutine) Process(ctx context.Context, instance runtimeobject.Runtime
186213
187214 log .Debug ().Str ("email" , invite .Spec .Email ).Str ("id" , newUser .ID ).Msg ("User created" )
188215
189- clientQueryParams := url.Values {
190- "clientId" : {realm },
191- }
192-
193- res , err = s .keycloak .Get (fmt .Sprintf ("%s/admin/realms/%s/clients?%s" , s .keycloakBaseURL , realm , clientQueryParams .Encode ()))
194- if err != nil {
195- log .Err (err ).Msg ("Failed to verify client exists" )
196- return ctrl.Result {}, errors .NewOperatorError (err , true , false )
197- }
198- defer res .Body .Close () //nolint:errcheck
199-
200- if res .StatusCode != http .StatusOK {
201- return ctrl.Result {}, errors .NewOperatorError (fmt .Errorf ("failed to verify client exists: %s" , res .Status ), true , false )
202- }
203-
204- var clients []keycloakClient
205- if err = json .NewDecoder (res .Body ).Decode (& clients ); err != nil {
206- return ctrl.Result {}, errors .NewOperatorError (err , true , false )
207- }
208-
209- if len (clients ) == 0 {
210- log .Info ().Str ("clientId" , realm ).Msg ("Client does not exist yet, requeuing" )
211- return ctrl.Result {}, errors .NewOperatorError (fmt .Errorf ("client %s does not exist yet" , realm ), true , false )
212- }
213-
214- log .Debug ().Str ("clientId" , realm ).Msg ("Client verified" )
215-
216216 queryParams := url.Values {
217217 "redirect_uri" : {fmt .Sprintf ("https://%s.%s/" , realm , s .baseDomain )},
218218 "client_id" : {realm },
0 commit comments