drone/types/enum/authz.go
Johannes Batzill 1115a5083b Add Paths support and error improvements (#11)
This change is adding the concept of Paths.
A repository and space always have a Primary Path which always is represents the ancestry to the root space.
All access history / resource visibility / child listings / UI traversal / etc. is done via that path.

Additionally, repos and spaces can have Alias Paths, which as the name states are aliases. via the primary path.
They sole impact is that a space or repo can be reached via different paths from the UI / rest apis / git apis.
This fulfills two major purposes:
- Customers can rename or move projects and spaces without breaking any existing references from CI pipeliens / code bases / local repos / ...
- Customer can create shorter aliases for important repos when in harness embeded mode! (acc/org/proj/repo can be shortened to acc/repo, or acc/repo'

Apart from the path changes, this PR adds:

Improved User facing errors
Improved internal error handling and wrapping
update / rename operation for repo and space
path list / delete / create operation for repo and space
2022-09-08 21:39:15 -07:00

49 lines
1.5 KiB
Go

// Copyright 2022 Harness Inc. All rights reserved.
// Use of this source code is governed by the Polyform Free Trial License
// that can be found in the LICENSE.md file for this repository.
package enum
// Represents the different types of resources that can be guarded with permissions.
type ResourceType string
const (
ResourceTypeSpace ResourceType = "SPACE"
ResourceTypeRepo ResourceType = "REPOSITORY"
// ResourceType_Branch ResourceType = "BRANCH"
)
// Represents the available permissions
type Permission string
const (
// ----- SPACE -----
PermissionSpaceCreate Permission = "space_create"
PermissionSpaceView Permission = "space_view"
PermissionSpaceEdit Permission = "space_edit"
PermissionSpaceDelete Permission = "space_delete"
// ----- REPOSITORY -----
PermissionRepoCreate Permission = "repository_create"
PermissionRepoView Permission = "repository_view"
PermissionRepoEdit Permission = "repository_edit"
PermissionRepoDelete Permission = "repository_delete"
// ----- BRANCH -----
// PermissionBranchCreate Permission = "branch_create"
// PermissionBranchView Permission = "branch_view"
// PermissionBranchEdit Permission = "branch_edit"
// PermissionBranchDelete Permission = "branch_delete"
)
// Represents the type of the entity requesting permission
type PrincipalType string
const (
// Represents actions executed by a loged-in user
PrincipalTypeUser PrincipalType = "USER"
// Represents actions executed by an entity with an api key
PrincipalTypeApiKey PrincipalType = "API_KEY"
)