From b4855be46579835b49c1948d88cfb6edbd5047e2 Mon Sep 17 00:00:00 2001 From: Sivaanand Murugesan Date: Thu, 14 Nov 2024 09:39:51 +0530 Subject: [PATCH] PLT-1455: Added support for role management (#141) * Added support to get role by id. * Added role CRUD operations * fix --- client/role.go | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/client/role.go b/client/role.go index 2bd0a13f..a6c92814 100644 --- a/client/role.go +++ b/client/role.go @@ -27,3 +27,43 @@ func (h *V1Client) GetRole(roleName string) (*models.V1Role, error) { return nil, fmt.Errorf("role '%s' not found", roleName) } + +// GetRoleByID retrieves an existing role by ID. +func (h *V1Client) GetRoleByID(roleUID string) (*models.V1Role, error) { + // ACL scoped to tenant only + params := clientv1.NewV1RolesUIDGetParams().WithUID(roleUID) + resp, err := h.Client.V1RolesUIDGet(params) + if err != nil { + return nil, err + } + + return resp.Payload, nil +} + +// CreateRole create new role. +func (h *V1Client) CreateRole(role *models.V1Role) (string, error) { + // ACL scoped to tenant only + params := clientv1.NewV1RolesCreateParams().WithBody(role) + resp, err := h.Client.V1RolesCreate(params) + if err != nil { + return "", err + } + + return *resp.Payload.UID, nil +} + +// UpdateRole Update existing role with ID +func (h *V1Client) UpdateRole(role *models.V1Role, roleUID string) error { + // ACL scoped to tenant only + params := clientv1.NewV1RolesUIDUpdateParams().WithBody(role).WithUID(roleUID) + _, err := h.Client.V1RolesUIDUpdate(params) + return err +} + +// DeleteRole Delete existing role with ID +func (h *V1Client) DeleteRole(roleUID string) error { + // ACL scoped to tenant only + params := clientv1.NewV1RolesUIDDeleteParams().WithUID(roleUID) + _, err := h.Client.V1RolesUIDDelete(params) + return err +}