@@ -869,6 +869,24 @@ func (g *GoCloak) UpdateGroup(ctx context.Context, token, realm string, updatedG
869
869
return checkForError (resp , err , errMessage )
870
870
}
871
871
872
+ // UpdateGroupManagementPermissions updates the given group management permissions
873
+ func (g * GoCloak ) UpdateGroupManagementPermissions (ctx context.Context , accessToken , realm string , idOfGroup string , managementPermissions ManagementPermissionRepresentation ) (* ManagementPermissionRepresentation , error ) {
874
+ const errMessage = "could not update group management permissions"
875
+
876
+ var result ManagementPermissionRepresentation
877
+
878
+ resp , err := g .GetRequestWithBearerAuth (ctx , accessToken ).
879
+ SetResult (& result ).
880
+ SetBody (managementPermissions ).
881
+ Put (g .getAdminRealmURL (realm , "groups" , idOfGroup , "management" , "permissions" ))
882
+
883
+ if err := checkForError (resp , err , errMessage ); err != nil {
884
+ return nil , err
885
+ }
886
+
887
+ return & result , nil
888
+ }
889
+
872
890
// UpdateClient updates the given Client
873
891
func (g * GoCloak ) UpdateClient (ctx context.Context , token , realm string , updatedClient Client ) error {
874
892
const errMessage = "could not update client"
@@ -906,6 +924,24 @@ func (g *GoCloak) UpdateClientRepresentation(ctx context.Context, accessToken, r
906
924
return & result , nil
907
925
}
908
926
927
+ // UpdateClientManagementPermissions updates the given client management permissions
928
+ func (g * GoCloak ) UpdateClientManagementPermissions (ctx context.Context , accessToken , realm string , idOfClient string , managementPermissions ManagementPermissionRepresentation ) (* ManagementPermissionRepresentation , error ) {
929
+ const errMessage = "could not update client management permissions"
930
+
931
+ var result ManagementPermissionRepresentation
932
+
933
+ resp , err := g .GetRequestWithBearerAuth (ctx , accessToken ).
934
+ SetResult (& result ).
935
+ SetBody (managementPermissions ).
936
+ Put (g .getAdminRealmURL (realm , "clients" , idOfClient , "management" , "permissions" ))
937
+
938
+ if err := checkForError (resp , err , errMessage ); err != nil {
939
+ return nil , err
940
+ }
941
+
942
+ return & result , nil
943
+ }
944
+
909
945
// UpdateRole updates the given role.
910
946
func (g * GoCloak ) UpdateRole (ctx context.Context , token , realm , idOfClient string , role Role ) error {
911
947
const errMessage = "could not update role"
@@ -1682,6 +1718,23 @@ func (g *GoCloak) GetGroups(ctx context.Context, token, realm string, params Get
1682
1718
return result , nil
1683
1719
}
1684
1720
1721
+ // GetGroupManagementPermissions returns whether group Authorization permissions have been initialized or not and a reference
1722
+ // to the managed permissions
1723
+ func (g * GoCloak ) GetGroupManagementPermissions (ctx context.Context , token , realm string , idOfGroup string ) (* ManagementPermissionRepresentation , error ) {
1724
+ const errMessage = "could not get management permissions"
1725
+
1726
+ var result ManagementPermissionRepresentation
1727
+ resp , err := g .GetRequestWithBearerAuth (ctx , token ).
1728
+ SetResult (& result ).
1729
+ Get (g .getAdminRealmURL (realm , "groups" , idOfGroup , "management" , "permissions" ))
1730
+
1731
+ if err := checkForError (resp , err , errMessage ); err != nil {
1732
+ return nil , err
1733
+ }
1734
+
1735
+ return & result , nil
1736
+ }
1737
+
1685
1738
// GetGroupsByRole gets groups assigned with a specific role of a realm
1686
1739
func (g * GoCloak ) GetGroupsByRole (ctx context.Context , token , realm string , roleName string ) ([]* Group , error ) {
1687
1740
const errMessage = "could not get groups"
@@ -1944,6 +1997,23 @@ func (g *GoCloak) GetClients(ctx context.Context, token, realm string, params Ge
1944
1997
return result , nil
1945
1998
}
1946
1999
2000
+ // GetClientManagementPermissions returns whether client Authorization permissions have been initialized or not and a reference
2001
+ // to the managed permissions
2002
+ func (g * GoCloak ) GetClientManagementPermissions (ctx context.Context , token , realm string , idOfClient string ) (* ManagementPermissionRepresentation , error ) {
2003
+ const errMessage = "could not get management permissions"
2004
+
2005
+ var result ManagementPermissionRepresentation
2006
+ resp , err := g .GetRequestWithBearerAuth (ctx , token ).
2007
+ SetResult (& result ).
2008
+ Get (g .getAdminRealmURL (realm , "clients" , idOfClient , "management" , "permissions" ))
2009
+
2010
+ if err := checkForError (resp , err , errMessage ); err != nil {
2011
+ return nil , err
2012
+ }
2013
+
2014
+ return & result , nil
2015
+ }
2016
+
1947
2017
// UserAttributeContains checks if the given attribute value is set
1948
2018
func UserAttributeContains (attributes map [string ][]string , attribute , value string ) bool {
1949
2019
for _ , item := range attributes [attribute ] {
@@ -3316,6 +3386,34 @@ func (g *GoCloak) CreateScope(ctx context.Context, token, realm, idOfClient stri
3316
3386
return & result , nil
3317
3387
}
3318
3388
3389
+ // GetPermissionScope gets the permission scope associated with the client
3390
+ func (g * GoCloak ) GetPermissionScope (ctx context.Context , token , realm , idOfClient string , idOfScope string ) (* PolicyRepresentation , error ) {
3391
+ const errMessage = "could not get permission scope"
3392
+
3393
+ var result PolicyRepresentation
3394
+ resp , err := g .GetRequestWithBearerAuth (ctx , token ).
3395
+ SetResult (& result ).
3396
+ SetBody (result ).
3397
+ Get (g .getAdminRealmURL (realm , "clients" , idOfClient , "authz" , "resource-server" , "permission" , "scope" , idOfScope ))
3398
+
3399
+ if err := checkForError (resp , err , errMessage ); err != nil {
3400
+ return nil , err
3401
+ }
3402
+
3403
+ return & result , nil
3404
+ }
3405
+
3406
+ // UpdatePermissionScope updates a permission scope associated with the client
3407
+ func (g * GoCloak ) UpdatePermissionScope (ctx context.Context , token , realm , idOfClient string , idOfScope string , policy PolicyRepresentation ) error {
3408
+ const errMessage = "could not create permission scope"
3409
+
3410
+ resp , err := g .GetRequestWithBearerAuth (ctx , token ).
3411
+ SetBody (policy ).
3412
+ Put (g .getAdminRealmURL (realm , "clients" , idOfClient , "authz" , "resource-server" , "permission" , "scope" , idOfScope ))
3413
+
3414
+ return checkForError (resp , err , errMessage )
3415
+ }
3416
+
3319
3417
// UpdateScope updates a scope associated with the client
3320
3418
func (g * GoCloak ) UpdateScope (ctx context.Context , token , realm , idOfClient string , scope ScopeRepresentation ) error {
3321
3419
const errMessage = "could not update scope"
0 commit comments