Skip to content

Commit

Permalink
1091 fixed provider crash with initial_login set to false (#1103)
Browse files Browse the repository at this point in the history
Signed-off-by: Sebastian Schuster <[email protected]>
  • Loading branch information
sschu authored Jan 29, 2025
1 parent 3c821d2 commit f778c59
Show file tree
Hide file tree
Showing 5 changed files with 61 additions and 45 deletions.
50 changes: 16 additions & 34 deletions keycloak/version.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,54 +39,36 @@ func (v Version) AsVersion() *version.Version {
return vv
}

func (KeycloakClient *KeycloakClient) Version() *version.Version {
return KeycloakClient.version
}

func (keycloakClient *KeycloakClient) VersionIsGreaterThanOrEqualTo(ctx context.Context, versionString Version) (bool, error) {
if keycloakClient.version == nil {
err := keycloakClient.login(ctx)
func (KeycloakClient *KeycloakClient) Version(ctx context.Context) (*version.Version, error) {
if KeycloakClient.version == nil {
err := KeycloakClient.login(ctx)
if err != nil {
return false, err
return nil, err
}
}
return KeycloakClient.version, nil
}

v, err := version.NewVersion(string(versionString))
func (keycloakClient *KeycloakClient) VersionIsGreaterThanOrEqualTo(ctx context.Context, versionString Version) (bool, error) {
version, err := keycloakClient.Version(ctx)
if err != nil {
return false, nil
return false, err
}

return keycloakClient.version.GreaterThanOrEqual(v), nil
return version.GreaterThanOrEqual(versionString.AsVersion()), nil
}

func (keycloakClient *KeycloakClient) VersionIsLessThanOrEqualTo(ctx context.Context, versionString Version) (bool, error) {
if keycloakClient.version == nil {
err := keycloakClient.login(ctx)
if err != nil {
return false, err
}
}

v, err := version.NewVersion(string(versionString))
version, err := keycloakClient.Version(ctx)
if err != nil {
return false, nil
return false, err
}

return keycloakClient.version.LessThanOrEqual(v), nil
return version.LessThanOrEqual(versionString.AsVersion()), nil
}

func (keycloakClient *KeycloakClient) VersionIsLessThan(ctx context.Context, versionString Version) (bool, error) {
if keycloakClient.version == nil {
err := keycloakClient.login(ctx)
if err != nil {
return false, err
}
}

v, err := version.NewVersion(string(versionString))
version, err := keycloakClient.Version(ctx)
if err != nil {
return false, nil
return false, err
}

return keycloakClient.version.LessThan(v), nil
return version.LessThan(versionString.AsVersion()), nil
}
5 changes: 4 additions & 1 deletion provider/data_source_keycloak_realm.go
Original file line number Diff line number Diff line change
Expand Up @@ -541,7 +541,10 @@ func dataSourceKeycloakRealm() *schema.Resource {

func dataSourceKeycloakRealmRead(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
keycloakClient := meta.(*keycloak.KeycloakClient)
keycloakVersion := keycloakClient.Version()
keycloakVersion, err := keycloakClient.Version(ctx)
if err != nil {
return diag.FromErr(err)
}

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

Expand Down
16 changes: 13 additions & 3 deletions provider/generic_keycloak_identity_provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,11 @@ func resourceKeycloakIdentityProviderImport(_ context.Context, d *schema.Resourc
func resourceKeycloakIdentityProviderCreate(getIdentityProviderFromData identityProviderDataGetterFunc, setDataFromIdentityProvider identityProviderDataSetterFunc) func(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
return func(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
keycloakClient := meta.(*keycloak.KeycloakClient)
keycloakVersion := keycloakClient.Version()
keycloakVersion, err := keycloakClient.Version(ctx)
if err != nil {
return diag.FromErr(err)
}

identityProvider, err := getIdentityProviderFromData(data, keycloakVersion)
if err != nil {
return diag.FromErr(err)
Expand All @@ -224,7 +228,10 @@ func resourceKeycloakIdentityProviderCreate(getIdentityProviderFromData identity
func resourceKeycloakIdentityProviderRead(setDataFromIdentityProvider identityProviderDataSetterFunc) func(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
return func(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
keycloakClient := meta.(*keycloak.KeycloakClient)
keycloakVersion := keycloakClient.Version()
keycloakVersion, err := keycloakClient.Version(ctx)
if err != nil {
return diag.FromErr(err)
}
realm := data.Get("realm").(string)
alias := data.Get("alias").(string)
identityProvider, err := keycloakClient.GetIdentityProvider(ctx, realm, alias)
Expand All @@ -239,7 +246,10 @@ func resourceKeycloakIdentityProviderRead(setDataFromIdentityProvider identityPr
func resourceKeycloakIdentityProviderUpdate(getIdentityProviderFromData identityProviderDataGetterFunc, setDataFromIdentityProvider identityProviderDataSetterFunc) func(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
return func(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
keycloakClient := meta.(*keycloak.KeycloakClient)
keycloakVersion := keycloakClient.Version()
keycloakVersion, err := keycloakClient.Version(ctx)
if err != nil {
return diag.FromErr(err)
}
identityProvider, err := getIdentityProviderFromData(data, keycloakVersion)
if err != nil {
return diag.FromErr(err)
Expand Down
20 changes: 16 additions & 4 deletions provider/resource_keycloak_authentication_bindings.go
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,10 @@ func resetAuthenticationBindingsForRealm(realm *keycloak.Realm, keycloakVersion

func resourceKeycloakAuthenticationBindingsCreate(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
keycloakClient := meta.(*keycloak.KeycloakClient)
keycloakVersion := keycloakClient.Version()
keycloakVersion, err := keycloakClient.Version(ctx)
if err != nil {
return diag.FromErr(err)
}

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

func resourceKeycloakAuthenticationBindingsRead(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
keycloakClient := meta.(*keycloak.KeycloakClient)
keycloakVersion := keycloakClient.Version()
keycloakVersion, err := keycloakClient.Version(ctx)
if err != nil {
return diag.FromErr(err)
}

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

func resourceKeycloakAuthenticationBindingsDelete(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
keycloakClient := meta.(*keycloak.KeycloakClient)
keycloakVersion := keycloakClient.Version()
keycloakVersion, err := keycloakClient.Version(ctx)
if err != nil {
return diag.FromErr(err)
}

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

func resourceKeycloakAuthenticationBindingsUpdate(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
keycloakClient := meta.(*keycloak.KeycloakClient)
keycloakVersion := keycloakClient.Version()
keycloakVersion, err := keycloakClient.Version(ctx)
if err != nil {
return diag.FromErr(err)
}

realm, err := keycloakClient.GetRealm(ctx, data.Id())
if err != nil {
Expand Down
15 changes: 12 additions & 3 deletions provider/resource_keycloak_realm.go
Original file line number Diff line number Diff line change
Expand Up @@ -1394,7 +1394,10 @@ func getHeaderSettings(realm *keycloak.Realm) map[string]interface{} {

func resourceKeycloakRealmCreate(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
keycloakClient := meta.(*keycloak.KeycloakClient)
keycloakVersion := keycloakClient.Version()
keycloakVersion, err := keycloakClient.Version(ctx)
if err != nil {
return diag.FromErr(err)
}

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

func resourceKeycloakRealmRead(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
keycloakClient := meta.(*keycloak.KeycloakClient)
keycloakVersion := keycloakClient.Version()
keycloakVersion, err := keycloakClient.Version(ctx)
if err != nil {
return diag.FromErr(err)
}

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

func resourceKeycloakRealmUpdate(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
keycloakClient := meta.(*keycloak.KeycloakClient)
keycloakVersion := keycloakClient.Version()
keycloakVersion, err := keycloakClient.Version(ctx)
if err != nil {
return diag.FromErr(err)
}

realm, err := getRealmFromData(data, keycloakVersion)
if err != nil {
Expand Down

0 comments on commit f778c59

Please sign in to comment.