Skip to content

Commit

Permalink
Merge branch 'main' into PLT-1443
Browse files Browse the repository at this point in the history
  • Loading branch information
SivaanandM authored Nov 18, 2024
2 parents 472a9f9 + 009eeef commit 65ee957
Showing 1 changed file with 41 additions and 0 deletions.
41 changes: 41 additions & 0 deletions client/permission.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package client

import (
"fmt"

clientv1 "github.com/spectrocloud/palette-sdk-go/api/client/v1"
"github.com/spectrocloud/palette-sdk-go/api/models"
)

// PermissionScope defines the scope of a permission.
type PermissionScope string

const (
// PermissionScopeProject represents a project-level scope.
PermissionScopeProject PermissionScope = "project"

// PermissionScopeTenant represents a tenant-level scope.
PermissionScopeTenant PermissionScope = "tenant"

// PermissionScopeResource represents a resource-level scope.
PermissionScopeResource PermissionScope = "resource"
)

// GetPermissionByName retrieves an existing permission by name and permissionScope(project, tenant & resource).
func (h *V1Client) GetPermissionByName(permissionName string, permissionScope PermissionScope) (*models.V1Permission, error) {
// ACL scoped to tenant only
permScope := string(permissionScope)
params := clientv1.NewV1PermissionsListParams().WithScope(&permScope)
resp, err := h.Client.V1PermissionsList(params)
if err != nil {
return nil, err
}

for _, permission := range resp.Payload {
if permission.Name == permissionName {
return permission, nil
}
}

return nil, fmt.Errorf("permission name '%s' not found in scope '%s'", permissionName, permissionScope)
}

0 comments on commit 65ee957

Please sign in to comment.