From 4f828c41d4182e5363c74be31a487affb145599d Mon Sep 17 00:00:00 2001 From: Tom Quarendon Date: Sat, 27 Jan 2024 17:12:31 +0000 Subject: [PATCH 1/3] Add support for permission_resource_format/permission_resource_matching_uri --- models.go | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/models.go b/models.go index 1744fd8..1f8e0a4 100644 --- a/models.go +++ b/models.go @@ -965,18 +965,20 @@ func (t *TokenOptions) FormData() map[string]string { // RequestingPartyTokenOptions represents the options to obtain a requesting party token type RequestingPartyTokenOptions struct { - GrantType *string `json:"grant_type,omitempty"` - Ticket *string `json:"ticket,omitempty"` - ClaimToken *string `json:"claim_token,omitempty"` - ClaimTokenFormat *string `json:"claim_token_format,omitempty"` - RPT *string `json:"rpt,omitempty"` - Permissions *[]string `json:"-"` - Audience *string `json:"audience,omitempty"` - ResponseIncludeResourceName *bool `json:"response_include_resource_name,string,omitempty"` - ResponsePermissionsLimit *uint32 `json:"response_permissions_limit,omitempty"` - SubmitRequest *bool `json:"submit_request,string,omitempty"` - ResponseMode *string `json:"response_mode,omitempty"` - SubjectToken *string `json:"subject_token,omitempty"` + GrantType *string `json:"grant_type,omitempty"` + Ticket *string `json:"ticket,omitempty"` + ClaimToken *string `json:"claim_token,omitempty"` + ClaimTokenFormat *string `json:"claim_token_format,omitempty"` + RPT *string `json:"rpt,omitempty"` + Permissions *[]string `json:"-"` + PermissionResourceFormat *string `json:"permission_resource_format,omitempty"` + PermissionResourceMatchingUri *bool `json:"permission_resource_matching_uri,string,omitempty"` + Audience *string `json:"audience,omitempty"` + ResponseIncludeResourceName *bool `json:"response_include_resource_name,string,omitempty"` + ResponsePermissionsLimit *uint32 `json:"response_permissions_limit,omitempty"` + SubmitRequest *bool `json:"submit_request,string,omitempty"` + ResponseMode *string `json:"response_mode,omitempty"` + SubjectToken *string `json:"subject_token,omitempty"` } // FormData returns a map of options to be used in SetFormData function From 698747aaffb1e1fd5a6f13c0b2a16f66bc07ed7f Mon Sep 17 00:00:00 2001 From: Tom Quarendon Date: Thu, 1 Feb 2024 09:57:16 +0000 Subject: [PATCH 2/3] lint error --- models.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.go b/models.go index 1f8e0a4..a093b23 100644 --- a/models.go +++ b/models.go @@ -972,7 +972,7 @@ type RequestingPartyTokenOptions struct { RPT *string `json:"rpt,omitempty"` Permissions *[]string `json:"-"` PermissionResourceFormat *string `json:"permission_resource_format,omitempty"` - PermissionResourceMatchingUri *bool `json:"permission_resource_matching_uri,string,omitempty"` + PermissionResourceMatchingURI *bool `json:"permission_resource_matching_uri,string,omitempty"` Audience *string `json:"audience,omitempty"` ResponseIncludeResourceName *bool `json:"response_include_resource_name,string,omitempty"` ResponsePermissionsLimit *uint32 `json:"response_permissions_limit,omitempty"` From 57764053fc8cfe2ed1bef9f1ffc4ea5f6c71e919 Mon Sep 17 00:00:00 2001 From: Tom Quarendon Date: Thu, 1 Feb 2024 10:00:14 +0000 Subject: [PATCH 3/3] Add support for users-management-permissions --- client.go | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/client.go b/client.go index 9679096..ccff45f 100644 --- a/client.go +++ b/client.go @@ -508,7 +508,6 @@ func (g *GoCloak) GetRequestingPartyPermissions(ctx context.Context, token, real if err := checkForError(resp, err, errMessage); err != nil { return nil, err } - return &res, nil } @@ -4304,3 +4303,38 @@ func (g *GoCloak) RevokeToken(ctx context.Context, realm, clientID, clientSecret return checkForError(resp, err, errMessage) } + +// UpdateUsersManagementPermissions updates the management permissions for users +func (g *GoCloak) UpdateUsersManagementPermissions(ctx context.Context, accessToken, realm string, managementPermissions ManagementPermissionRepresentation) (*ManagementPermissionRepresentation, error) { + const errMessage = "could not update users management permissions" + + var result ManagementPermissionRepresentation + + resp, err := g.GetRequestWithBearerAuth(ctx, accessToken). + SetResult(&result). + SetBody(managementPermissions). + Put(g.getAdminRealmURL(realm, "users-management-permissions")) + + if err := checkForError(resp, err, errMessage); err != nil { + return nil, err + } + + return &result, nil +} + +// GetUsersManagementPermissions returns the management permissions for users +func (g *GoCloak) GetUsersManagementPermissions(ctx context.Context, accessToken, realm string) (*ManagementPermissionRepresentation, error) { + const errMessage = "could not get users management permissions" + + var result ManagementPermissionRepresentation + + resp, err := g.GetRequestWithBearerAuth(ctx, accessToken). + SetResult(&result). + Get(g.getAdminRealmURL(realm, "users-management-permissions")) + + if err := checkForError(resp, err, errMessage); err != nil { + return nil, err + } + + return &result, nil +}