Skip to content

Commit bdbd8a1

Browse files
authored
1091 fixed provider crash with initial_login set to false (#1097)
Signed-off-by: Sebastian Schuster <[email protected]>
1 parent 0448f48 commit bdbd8a1

5 files changed

+61
-45
lines changed

keycloak/version.go

+16-34
Original file line numberDiff line numberDiff line change
@@ -39,54 +39,36 @@ func (v Version) AsVersion() *version.Version {
3939
return vv
4040
}
4141

42-
func (KeycloakClient *KeycloakClient) Version() *version.Version {
43-
return KeycloakClient.version
44-
}
45-
46-
func (keycloakClient *KeycloakClient) VersionIsGreaterThanOrEqualTo(ctx context.Context, versionString Version) (bool, error) {
47-
if keycloakClient.version == nil {
48-
err := keycloakClient.login(ctx)
42+
func (KeycloakClient *KeycloakClient) Version(ctx context.Context) (*version.Version, error) {
43+
if KeycloakClient.version == nil {
44+
err := KeycloakClient.login(ctx)
4945
if err != nil {
50-
return false, err
46+
return nil, err
5147
}
5248
}
49+
return KeycloakClient.version, nil
50+
}
5351

54-
v, err := version.NewVersion(string(versionString))
52+
func (keycloakClient *KeycloakClient) VersionIsGreaterThanOrEqualTo(ctx context.Context, versionString Version) (bool, error) {
53+
version, err := keycloakClient.Version(ctx)
5554
if err != nil {
56-
return false, nil
55+
return false, err
5756
}
58-
59-
return keycloakClient.version.GreaterThanOrEqual(v), nil
57+
return version.GreaterThanOrEqual(versionString.AsVersion()), nil
6058
}
6159

6260
func (keycloakClient *KeycloakClient) VersionIsLessThanOrEqualTo(ctx context.Context, versionString Version) (bool, error) {
63-
if keycloakClient.version == nil {
64-
err := keycloakClient.login(ctx)
65-
if err != nil {
66-
return false, err
67-
}
68-
}
69-
70-
v, err := version.NewVersion(string(versionString))
61+
version, err := keycloakClient.Version(ctx)
7162
if err != nil {
72-
return false, nil
63+
return false, err
7364
}
74-
75-
return keycloakClient.version.LessThanOrEqual(v), nil
65+
return version.LessThanOrEqual(versionString.AsVersion()), nil
7666
}
7767

7868
func (keycloakClient *KeycloakClient) VersionIsLessThan(ctx context.Context, versionString Version) (bool, error) {
79-
if keycloakClient.version == nil {
80-
err := keycloakClient.login(ctx)
81-
if err != nil {
82-
return false, err
83-
}
84-
}
85-
86-
v, err := version.NewVersion(string(versionString))
69+
version, err := keycloakClient.Version(ctx)
8770
if err != nil {
88-
return false, nil
71+
return false, err
8972
}
90-
91-
return keycloakClient.version.LessThan(v), nil
73+
return version.LessThan(versionString.AsVersion()), nil
9274
}

provider/data_source_keycloak_realm.go

+4-1
Original file line numberDiff line numberDiff line change
@@ -541,7 +541,10 @@ func dataSourceKeycloakRealm() *schema.Resource {
541541

542542
func dataSourceKeycloakRealmRead(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
543543
keycloakClient := meta.(*keycloak.KeycloakClient)
544-
keycloakVersion := keycloakClient.Version()
544+
keycloakVersion, err := keycloakClient.Version(ctx)
545+
if err != nil {
546+
return diag.FromErr(err)
547+
}
545548

546549
realmName := data.Get("realm").(string)
547550

provider/generic_keycloak_identity_provider.go

+13-3
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,11 @@ func resourceKeycloakIdentityProviderImport(_ context.Context, d *schema.Resourc
205205
func resourceKeycloakIdentityProviderCreate(getIdentityProviderFromData identityProviderDataGetterFunc, setDataFromIdentityProvider identityProviderDataSetterFunc) func(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
206206
return func(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
207207
keycloakClient := meta.(*keycloak.KeycloakClient)
208-
keycloakVersion := keycloakClient.Version()
208+
keycloakVersion, err := keycloakClient.Version(ctx)
209+
if err != nil {
210+
return diag.FromErr(err)
211+
}
212+
209213
identityProvider, err := getIdentityProviderFromData(data, keycloakVersion)
210214
if err != nil {
211215
return diag.FromErr(err)
@@ -224,7 +228,10 @@ func resourceKeycloakIdentityProviderCreate(getIdentityProviderFromData identity
224228
func resourceKeycloakIdentityProviderRead(setDataFromIdentityProvider identityProviderDataSetterFunc) func(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
225229
return func(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
226230
keycloakClient := meta.(*keycloak.KeycloakClient)
227-
keycloakVersion := keycloakClient.Version()
231+
keycloakVersion, err := keycloakClient.Version(ctx)
232+
if err != nil {
233+
return diag.FromErr(err)
234+
}
228235
realm := data.Get("realm").(string)
229236
alias := data.Get("alias").(string)
230237
identityProvider, err := keycloakClient.GetIdentityProvider(ctx, realm, alias)
@@ -239,7 +246,10 @@ func resourceKeycloakIdentityProviderRead(setDataFromIdentityProvider identityPr
239246
func resourceKeycloakIdentityProviderUpdate(getIdentityProviderFromData identityProviderDataGetterFunc, setDataFromIdentityProvider identityProviderDataSetterFunc) func(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
240247
return func(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
241248
keycloakClient := meta.(*keycloak.KeycloakClient)
242-
keycloakVersion := keycloakClient.Version()
249+
keycloakVersion, err := keycloakClient.Version(ctx)
250+
if err != nil {
251+
return diag.FromErr(err)
252+
}
243253
identityProvider, err := getIdentityProviderFromData(data, keycloakVersion)
244254
if err != nil {
245255
return diag.FromErr(err)

provider/resource_keycloak_authentication_bindings.go

+16-4
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,10 @@ func resetAuthenticationBindingsForRealm(realm *keycloak.Realm, keycloakVersion
9393

9494
func resourceKeycloakAuthenticationBindingsCreate(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
9595
keycloakClient := meta.(*keycloak.KeycloakClient)
96-
keycloakVersion := keycloakClient.Version()
96+
keycloakVersion, err := keycloakClient.Version(ctx)
97+
if err != nil {
98+
return diag.FromErr(err)
99+
}
97100

98101
realm, err := keycloakClient.GetRealm(ctx, data.Get("realm_id").(string))
99102
if err != nil {
@@ -124,7 +127,10 @@ func resourceKeycloakAuthenticationBindingsCreate(ctx context.Context, data *sch
124127

125128
func resourceKeycloakAuthenticationBindingsRead(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
126129
keycloakClient := meta.(*keycloak.KeycloakClient)
127-
keycloakVersion := keycloakClient.Version()
130+
keycloakVersion, err := keycloakClient.Version(ctx)
131+
if err != nil {
132+
return diag.FromErr(err)
133+
}
128134

129135
realm, err := keycloakClient.GetRealm(ctx, data.Id())
130136
if err != nil {
@@ -138,7 +144,10 @@ func resourceKeycloakAuthenticationBindingsRead(ctx context.Context, data *schem
138144

139145
func resourceKeycloakAuthenticationBindingsDelete(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
140146
keycloakClient := meta.(*keycloak.KeycloakClient)
141-
keycloakVersion := keycloakClient.Version()
147+
keycloakVersion, err := keycloakClient.Version(ctx)
148+
if err != nil {
149+
return diag.FromErr(err)
150+
}
142151

143152
realm, err := keycloakClient.GetRealm(ctx, data.Id())
144153
if err != nil {
@@ -157,7 +166,10 @@ func resourceKeycloakAuthenticationBindingsDelete(ctx context.Context, data *sch
157166

158167
func resourceKeycloakAuthenticationBindingsUpdate(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
159168
keycloakClient := meta.(*keycloak.KeycloakClient)
160-
keycloakVersion := keycloakClient.Version()
169+
keycloakVersion, err := keycloakClient.Version(ctx)
170+
if err != nil {
171+
return diag.FromErr(err)
172+
}
161173

162174
realm, err := keycloakClient.GetRealm(ctx, data.Id())
163175
if err != nil {

provider/resource_keycloak_realm.go

+12-3
Original file line numberDiff line numberDiff line change
@@ -1394,7 +1394,10 @@ func getHeaderSettings(realm *keycloak.Realm) map[string]interface{} {
13941394

13951395
func resourceKeycloakRealmCreate(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
13961396
keycloakClient := meta.(*keycloak.KeycloakClient)
1397-
keycloakVersion := keycloakClient.Version()
1397+
keycloakVersion, err := keycloakClient.Version(ctx)
1398+
if err != nil {
1399+
return diag.FromErr(err)
1400+
}
13981401

13991402
realm, err := getRealmFromData(data, keycloakVersion)
14001403
if err != nil {
@@ -1423,7 +1426,10 @@ func resourceKeycloakRealmCreate(ctx context.Context, data *schema.ResourceData,
14231426

14241427
func resourceKeycloakRealmRead(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
14251428
keycloakClient := meta.(*keycloak.KeycloakClient)
1426-
keycloakVersion := keycloakClient.Version()
1429+
keycloakVersion, err := keycloakClient.Version(ctx)
1430+
if err != nil {
1431+
return diag.FromErr(err)
1432+
}
14271433

14281434
realm, err := keycloakClient.GetRealm(ctx, data.Id())
14291435
if err != nil {
@@ -1442,7 +1448,10 @@ func resourceKeycloakRealmRead(ctx context.Context, data *schema.ResourceData, m
14421448

14431449
func resourceKeycloakRealmUpdate(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
14441450
keycloakClient := meta.(*keycloak.KeycloakClient)
1445-
keycloakVersion := keycloakClient.Version()
1451+
keycloakVersion, err := keycloakClient.Version(ctx)
1452+
if err != nil {
1453+
return diag.FromErr(err)
1454+
}
14461455

14471456
realm, err := getRealmFromData(data, keycloakVersion)
14481457
if err != nil {

0 commit comments

Comments
 (0)