Skip to content

Commit

Permalink
chore: rename keycloak_generic_client_protocol_mapper to keycloak_gen…
Browse files Browse the repository at this point in the history
…eric_protocol_mapper (#742)
  • Loading branch information
mrparkers authored Oct 4, 2022
1 parent ef388b7 commit 66319a4
Show file tree
Hide file tree
Showing 7 changed files with 500 additions and 71 deletions.
72 changes: 36 additions & 36 deletions keycloak/generic_client_description_converter.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,42 +8,42 @@ import (

// https://www.keycloak.org/docs-api/6.0/javadocs/org/keycloak/representations/idm/ClientRepresentation.html
type GenericClientRepresentation struct {
Access map[string]string `json:"access"`
AdminUrl string `json:"adminUrl"`
Attributes map[string]string `json:"attributes"`
AuthenticationFlowBindingOverrides map[string]string `json:"authenticationFlowBindingOverrides"`
AuthorizationServicesEnabled bool `json:"authorizationServicesEnabled"`
AuthorizationSettings map[string]string `json:"authorizationSettings"`
BaseUrl string `json:"baseUrl"`
BearerOnly bool `json:"bearerOnly"`
ClientAuthenticatorType string `json:"clientAuthenticatorType"`
ClientId string `json:"clientId"`
ConsentRequired string `json:"consentRequired"`
DefaultClientScopes []string `json:"defaultClientScopes"`
DefaultRoles []string `json:"defaultRoles"`
Description string `json:"description"`
DirectAccessGrantsEnabled bool `json:"directAccessGrantsEnabled"`
Enabled bool `json:"enabled"`
FrontchannelLogout bool `json:"frontchannelLogout"`
FullScopeAllowed bool `json:"fullScopeAllowed"`
Id string `json:"id"`
ImplicitFlowEnabled bool `json:"implicitFlowEnabled"`
Name string `json:"name"`
NotBefore int `json:"notBefore"`
OptionalClientScopes []string `json:"optionalClientScopes"`
Origin string `json:"origin"`
Protocol string `json:"protocol"`
ProtocolMappers []*GenericClientProtocolMapper `json:"protocolMappers"`
PublicClient bool `json:"publicClient"`
RedirectUris []string `json:"redirectUris"`
RegisteredNodes map[string]string `json:"registeredNodes"`
RegistrationAccessToken string `json:"registrationAccessToken"`
RootUrl string `json:"rootUrl"`
Secret string `json:"secret"`
ServiceAccountsEnabled bool `json:"serviceAccountsEnabled"`
StandardFlowEnabled bool `json:"standardFlowEnabled"`
SurrogateAuthRequired bool `json:"surrogateAuthRequired"`
WebOrigins []string `json:"webOrigins"`
Access map[string]string `json:"access"`
AdminUrl string `json:"adminUrl"`
Attributes map[string]string `json:"attributes"`
AuthenticationFlowBindingOverrides map[string]string `json:"authenticationFlowBindingOverrides"`
AuthorizationServicesEnabled bool `json:"authorizationServicesEnabled"`
AuthorizationSettings map[string]string `json:"authorizationSettings"`
BaseUrl string `json:"baseUrl"`
BearerOnly bool `json:"bearerOnly"`
ClientAuthenticatorType string `json:"clientAuthenticatorType"`
ClientId string `json:"clientId"`
ConsentRequired string `json:"consentRequired"`
DefaultClientScopes []string `json:"defaultClientScopes"`
DefaultRoles []string `json:"defaultRoles"`
Description string `json:"description"`
DirectAccessGrantsEnabled bool `json:"directAccessGrantsEnabled"`
Enabled bool `json:"enabled"`
FrontchannelLogout bool `json:"frontchannelLogout"`
FullScopeAllowed bool `json:"fullScopeAllowed"`
Id string `json:"id"`
ImplicitFlowEnabled bool `json:"implicitFlowEnabled"`
Name string `json:"name"`
NotBefore int `json:"notBefore"`
OptionalClientScopes []string `json:"optionalClientScopes"`
Origin string `json:"origin"`
Protocol string `json:"protocol"`
ProtocolMappers []*GenericProtocolMapper `json:"protocolMappers"`
PublicClient bool `json:"publicClient"`
RedirectUris []string `json:"redirectUris"`
RegisteredNodes map[string]string `json:"registeredNodes"`
RegistrationAccessToken string `json:"registrationAccessToken"`
RootUrl string `json:"rootUrl"`
Secret string `json:"secret"`
ServiceAccountsEnabled bool `json:"serviceAccountsEnabled"`
StandardFlowEnabled bool `json:"standardFlowEnabled"`
SurrogateAuthRequired bool `json:"surrogateAuthRequired"`
WebOrigins []string `json:"webOrigins"`
}

func (keycloakClient *KeycloakClient) NewGenericClientDescription(ctx context.Context, realmId string, body string) (*GenericClientRepresentation, error) {
Expand Down
52 changes: 26 additions & 26 deletions keycloak/generic_client_protocol_mapper.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import (
"fmt"
)

type GenericClientProtocolMapper struct {
type GenericProtocolMapper struct {
ClientId string `json:"-"`
ClientScopeId string `json:"-"`
Config map[string]string `json:"config"`
Expand All @@ -16,71 +16,71 @@ type GenericClientProtocolMapper struct {
RealmId string `json:"-"`
}

type OpenidClientWithGenericClientProtocolMappers struct {
type OpenidClientWithGenericProtocolMappers struct {
OpenidClient
ProtocolMappers []*GenericClientProtocolMapper
ProtocolMappers []*GenericProtocolMapper
}

func (keycloakClient *KeycloakClient) NewGenericClientProtocolMapper(ctx context.Context, genericClientProtocolMapper *GenericClientProtocolMapper) error {
path := protocolMapperPath(genericClientProtocolMapper.RealmId, genericClientProtocolMapper.ClientId, genericClientProtocolMapper.ClientScopeId)
func (keycloakClient *KeycloakClient) NewGenericProtocolMapper(ctx context.Context, genericProtocolMapper *GenericProtocolMapper) error {
path := protocolMapperPath(genericProtocolMapper.RealmId, genericProtocolMapper.ClientId, genericProtocolMapper.ClientScopeId)

_, location, err := keycloakClient.post(ctx, path, genericClientProtocolMapper)
_, location, err := keycloakClient.post(ctx, path, genericProtocolMapper)
if err != nil {
return err
}

genericClientProtocolMapper.Id = getIdFromLocationHeader(location)
genericProtocolMapper.Id = getIdFromLocationHeader(location)

return nil
}

func (keycloakClient *KeycloakClient) GetGenericClientProtocolMappers(ctx context.Context, realmId string, clientId string) (*OpenidClientWithGenericClientProtocolMappers, error) {
var openidClientWithGenericClientProtocolMappers OpenidClientWithGenericClientProtocolMappers
func (keycloakClient *KeycloakClient) GetGenericProtocolMappers(ctx context.Context, realmId string, clientId string) (*OpenidClientWithGenericProtocolMappers, error) {
var openidClientWithGenericProtocolMappers OpenidClientWithGenericProtocolMappers

err := keycloakClient.get(ctx, fmt.Sprintf("/realms/%s/clients/%s", realmId, clientId), &openidClientWithGenericClientProtocolMappers, nil)
err := keycloakClient.get(ctx, fmt.Sprintf("/realms/%s/clients/%s", realmId, clientId), &openidClientWithGenericProtocolMappers, nil)
if err != nil {
return nil, err
}

openidClientWithGenericClientProtocolMappers.RealmId = realmId
openidClientWithGenericClientProtocolMappers.ClientId = clientId
openidClientWithGenericProtocolMappers.RealmId = realmId
openidClientWithGenericProtocolMappers.ClientId = clientId

for _, protocolMapper := range openidClientWithGenericClientProtocolMappers.ProtocolMappers {
for _, protocolMapper := range openidClientWithGenericProtocolMappers.ProtocolMappers {
protocolMapper.RealmId = realmId
protocolMapper.ClientId = clientId
}

return &openidClientWithGenericClientProtocolMappers, nil
return &openidClientWithGenericProtocolMappers, nil

}

func (keycloakClient *KeycloakClient) GetGenericClientProtocolMapper(ctx context.Context, realmId string, clientId string, clientScopeId string, mapperId string) (*GenericClientProtocolMapper, error) {
var genericClientProtocolMapper GenericClientProtocolMapper
func (keycloakClient *KeycloakClient) GetGenericProtocolMapper(ctx context.Context, realmId string, clientId string, clientScopeId string, mapperId string) (*GenericProtocolMapper, error) {
var genericProtocolMapper GenericProtocolMapper

err := keycloakClient.get(ctx, individualProtocolMapperPath(realmId, clientId, clientScopeId, mapperId), &genericClientProtocolMapper, nil)
err := keycloakClient.get(ctx, individualProtocolMapperPath(realmId, clientId, clientScopeId, mapperId), &genericProtocolMapper, nil)
if err != nil {
return nil, err
}

// these values are not provided by the keycloak API
genericClientProtocolMapper.ClientId = clientId
genericClientProtocolMapper.ClientScopeId = clientScopeId
genericClientProtocolMapper.RealmId = realmId
genericProtocolMapper.ClientId = clientId
genericProtocolMapper.ClientScopeId = clientScopeId
genericProtocolMapper.RealmId = realmId

return &genericClientProtocolMapper, nil
return &genericProtocolMapper, nil
}

func (keycloakClient *KeycloakClient) UpdateGenericClientProtocolMapper(ctx context.Context, genericClientProtocolMapper *GenericClientProtocolMapper) error {
path := individualProtocolMapperPath(genericClientProtocolMapper.RealmId, genericClientProtocolMapper.ClientId, genericClientProtocolMapper.ClientScopeId, genericClientProtocolMapper.Id)
func (keycloakClient *KeycloakClient) UpdateGenericProtocolMapper(ctx context.Context, genericProtocolMapper *GenericProtocolMapper) error {
path := individualProtocolMapperPath(genericProtocolMapper.RealmId, genericProtocolMapper.ClientId, genericProtocolMapper.ClientScopeId, genericProtocolMapper.Id)

return keycloakClient.put(ctx, path, genericClientProtocolMapper)
return keycloakClient.put(ctx, path, genericProtocolMapper)
}

func (keycloakClient *KeycloakClient) DeleteGenericClientProtocolMapper(ctx context.Context, realmId string, clientId string, clientScopeId string, mapperId string) error {
func (keycloakClient *KeycloakClient) DeleteGenericProtocolMapper(ctx context.Context, realmId string, clientId string, clientScopeId string, mapperId string) error {
return keycloakClient.delete(ctx, individualProtocolMapperPath(realmId, clientId, clientScopeId, mapperId), nil)
}

func (mapper *GenericClientProtocolMapper) Validate(ctx context.Context, keycloakClient *KeycloakClient) error {
func (mapper *GenericProtocolMapper) Validate(ctx context.Context, keycloakClient *KeycloakClient) error {
if mapper.ClientId == "" && mapper.ClientScopeId == "" {
return fmt.Errorf("validation error: one of ClientId or ClientScopeId must be set")
}
Expand Down
1 change: 1 addition & 0 deletions provider/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ func KeycloakProvider(client *keycloak.KeycloakClient) *schema.Provider {
"keycloak_saml_client_default_scopes": resourceKeycloakSamlClientDefaultScopes(),
"keycloak_generic_client_protocol_mapper": resourceKeycloakGenericClientProtocolMapper(),
"keycloak_generic_client_role_mapper": resourceKeycloakGenericClientRoleMapper(),
"keycloak_generic_protocol_mapper": resourceKeycloakGenericProtocolMapper(),
"keycloak_saml_user_attribute_protocol_mapper": resourceKeycloakSamlUserAttributeProtocolMapper(),
"keycloak_saml_user_property_protocol_mapper": resourceKeycloakSamlUserPropertyProtocolMapper(),
"keycloak_saml_script_protocol_mapper": resourceKeycloakSamlScriptProtocolMapper(),
Expand Down
15 changes: 8 additions & 7 deletions provider/resource_keycloak_generic_client_protocol_mapper.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ func resourceKeycloakGenericClientProtocolMapper() *schema.Resource {
Importer: &schema.ResourceImporter{
StateContext: genericProtocolMapperImport,
},
DeprecationMessage: "please use keycloak_generic_protocol_mapper instead",
Schema: map[string]*schema.Schema{
"name": {
Type: schema.TypeString,
Expand Down Expand Up @@ -70,15 +71,15 @@ func resourceKeycloakGenericClientProtocolMapper() *schema.Resource {
}
}

func mapFromDataToGenericClientProtocolMapper(data *schema.ResourceData) *keycloak.GenericClientProtocolMapper {
func mapFromDataToGenericClientProtocolMapper(data *schema.ResourceData) *keycloak.GenericProtocolMapper {
config := make(map[string]string)
if v, ok := data.GetOk("config"); ok {
for key, value := range v.(map[string]interface{}) {
config[key] = value.(string)
}
}

return &keycloak.GenericClientProtocolMapper{
return &keycloak.GenericProtocolMapper{
ClientId: data.Get("client_id").(string),
ClientScopeId: data.Get("client_scope_id").(string),
Config: config,
Expand All @@ -90,7 +91,7 @@ func mapFromDataToGenericClientProtocolMapper(data *schema.ResourceData) *keyclo
}
}

func mapFromGenericClientProtocolMapperToData(data *schema.ResourceData, mapper *keycloak.GenericClientProtocolMapper) {
func mapFromGenericClientProtocolMapperToData(data *schema.ResourceData, mapper *keycloak.GenericProtocolMapper) {
data.SetId(mapper.Id)
if mapper.ClientId != "" {
data.Set("client_id", mapper.ClientId)
Expand All @@ -114,7 +115,7 @@ func resourceKeycloakGenericClientProtocolMapperCreate(ctx context.Context, data
return diag.FromErr(err)
}

err = keycloakClient.NewGenericClientProtocolMapper(ctx, genericClientProtocolMapper)
err = keycloakClient.NewGenericProtocolMapper(ctx, genericClientProtocolMapper)
if err != nil {
return diag.FromErr(err)
}
Expand All @@ -131,7 +132,7 @@ func resourceKeycloakGenericClientProtocolMapperRead(ctx context.Context, data *
clientScopeId := data.Get("client_scope_id").(string)
id := data.Id()

resource, err := keycloakClient.GetGenericClientProtocolMapper(ctx, realmId, clientId, clientScopeId, id)
resource, err := keycloakClient.GetGenericProtocolMapper(ctx, realmId, clientId, clientScopeId, id)
if err != nil {
return handleNotFoundError(ctx, err, data)
}
Expand All @@ -146,7 +147,7 @@ func resourceKeycloakGenericClientProtocolMapperUpdate(ctx context.Context, data

resource := mapFromDataToGenericClientProtocolMapper(data)

err := keycloakClient.UpdateGenericClientProtocolMapper(ctx, resource)
err := keycloakClient.UpdateGenericProtocolMapper(ctx, resource)
if err != nil {
return diag.FromErr(err)
}
Expand All @@ -164,5 +165,5 @@ func resourceKeycloakGenericClientProtocolMapperDelete(ctx context.Context, data
clientScopeId := data.Get("client_scope_id").(string)
id := data.Id()

return diag.FromErr(keycloakClient.DeleteGenericClientProtocolMapper(ctx, realmId, clientId, clientScopeId, id))
return diag.FromErr(keycloakClient.DeleteGenericProtocolMapper(ctx, realmId, clientId, clientScopeId, id))
}
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ func testAccKeycloakGenericClientProtocolMapperDestroy() resource.TestCheckFunc
}
}

func getGenericClientProtocolMapperUsingState(state *terraform.State, resourceName string) (*keycloak.GenericClientProtocolMapper, error) {
func getGenericClientProtocolMapperUsingState(state *terraform.State, resourceName string) (*keycloak.GenericProtocolMapper, error) {
rs, ok := state.RootModule().Resources[resourceName]
if !ok {
return nil, fmt.Errorf("resource not found in TF state: %s ", resourceName)
Expand All @@ -142,7 +142,7 @@ func getGenericClientProtocolMapperUsingState(state *terraform.State, resourceNa
clientId := rs.Primary.Attributes["client_id"]
clientScopeId := rs.Primary.Attributes["client_scope_id"]

return keycloakClient.GetGenericClientProtocolMapper(testCtx, realmId, clientId, clientScopeId, mapperId)
return keycloakClient.GetGenericProtocolMapper(testCtx, realmId, clientId, clientScopeId, mapperId)
}

func testKeycloakGenericClientProtocolMapper_basic_client(clientId string, mapperName string) string {
Expand Down
Loading

0 comments on commit 66319a4

Please sign in to comment.