@@ -10,6 +10,7 @@ import (
1010 "github.com/SAP/crossplane-provider-hana/internal/clients/hana"
1111 "github.com/SAP/crossplane-provider-hana/internal/clients/hana/privilege"
1212 "github.com/SAP/crossplane-provider-hana/internal/clients/xsql"
13+ "github.com/SAP/crossplane-provider-hana/internal/utils"
1314)
1415
1516// RoleClient defines the interface for role client operations
@@ -92,12 +93,12 @@ func observeLdapGroups(ctx context.Context, db xsql.DB, roleName string) (ldapGr
9293// Create creates a new role in the db
9394func (c Client ) Create (ctx context.Context , parameters * v1alpha1.RoleParameters ) error {
9495
95- query := fmt .Sprintf (" CREATE ROLE %s" , getRoleName (parameters .Schema , parameters .RoleName ))
96+ query := fmt .Sprintf (` CREATE ROLE %s` , getRoleName (parameters .Schema , parameters .RoleName ))
9697
9798 if len (parameters .LdapGroups ) > 0 {
9899 query += " LDAP GROUP"
99100 for _ , ldapGroup := range parameters .LdapGroups {
100- query += fmt .Sprintf (" '%s'," , ldapGroup )
101+ query += fmt .Sprintf (" '%s'," , utils . EscapeSingleQuotes ( ldapGroup ) )
101102 }
102103 query = strings .TrimSuffix (query , "," )
103104 }
@@ -124,24 +125,24 @@ func (c Client) Create(ctx context.Context, parameters *v1alpha1.RoleParameters)
124125func (c Client ) UpdateLdapGroups (ctx context.Context , parameters * v1alpha1.RoleParameters , groupsToAdd , groupsToRemove []string ) error {
125126
126127 if len (groupsToAdd ) > 0 {
127- query := fmt .Sprintf (" ALTER ROLE %s ADD LDAP GROUP" , getRoleName (parameters .Schema , parameters .RoleName ))
128+ query := fmt .Sprintf (` ALTER ROLE %s ADD LDAP GROUP` , getRoleName (parameters .Schema , parameters .RoleName ))
128129 for _ , ldapGroup := range groupsToAdd {
129- query += fmt .Sprintf (" '%s'," , ldapGroup )
130+ query += fmt .Sprintf (" '%s'," , utils . EscapeSingleQuotes ( ldapGroup ) )
130131 }
131132 query = strings .TrimSuffix (query , "," )
132133 if _ , err := c .ExecContext (ctx , query ); err != nil {
133- return fmt . Errorf ( "failed to add ldap groups: %w" , err )
134+ return err
134135 }
135136 }
136137
137138 if len (groupsToRemove ) > 0 {
138139 query := fmt .Sprintf ("ALTER ROLE %s DROP LDAP GROUP" , getRoleName (parameters .Schema , parameters .RoleName ))
139140 for _ , ldapGroup := range groupsToRemove {
140- query += fmt .Sprintf (" '%s'," , ldapGroup )
141+ query += fmt .Sprintf (" '%s'," , utils . EscapeSingleQuotes ( ldapGroup ) )
141142 }
142143 query = strings .TrimSuffix (query , "," )
143144 if _ , err := c .ExecContext (ctx , query ); err != nil {
144- return fmt . Errorf ( "failed to remove ldap groups: %w" , err )
145+ return err
145146 }
146147 }
147148
@@ -185,8 +186,10 @@ func (c Client) Delete(ctx context.Context, parameters *v1alpha1.RoleParameters)
185186}
186187
187188func getRoleName (schemaName , roleName string ) string {
189+ roleNameEscaped := fmt .Sprintf (`"%s"` , utils .EscapeDoubleQuotes (roleName ))
188190 if schemaName != "" {
189- return fmt .Sprintf ("%s.%s" , schemaName , roleName )
191+ schemaNameEscaped := fmt .Sprintf (`"%s"` , utils .EscapeDoubleQuotes (schemaName ))
192+ return fmt .Sprintf ("%s.%s" , schemaNameEscaped , roleNameEscaped )
190193 }
191- return roleName
194+ return roleNameEscaped
192195}
0 commit comments