resource

package
v0.7.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 8, 2024 License: Apache-2.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

View Source
const (
	NON_RESOURCE_ID = "*"

	AuditEntity = "resource"
)

Variables

View Source
var (
	ErrNotExist                 = errors.New("resource doesn't exist")
	ErrInvalidUUID              = errors.New("invalid syntax of uuid")
	ErrInvalidID                = errors.New("resource id is invalid")
	ErrInvalidURN               = errors.New("resource urn is invalid")
	ErrConflict                 = errors.New("resource already exist")
	ErrInvalidDetail            = errors.New("invalid resource detail")
	ErrLogActivity              = errors.New("error while logging activity")
	ErrUpsertConfigNotSupported = errors.New("upsert resource config is currently not supported")
	ErrMarshal                  = errors.New("error while marshalling resource config")
)

Functions

This section is empty.

Types

type ActivityService added in v0.6.15

type ActivityService interface {
	Log(ctx context.Context, action string, actor activity.Actor, data any) error
}

type Filter

type Filter struct {
	ProjectID      string
	GroupID        string
	OrganizationID string
	NamespaceID    string
	Limit          int32
	Page           int32
}

type GroupService added in v0.6.13

type GroupService interface {
	GetBySlug(ctx context.Context, id string) (group.Group, error)
}

type LogData added in v0.6.25

type LogData struct {
	Entity         string `mapstructure:"entity"`
	URN            string `mapstructure:"urn"`
	Name           string `mapstructure:"name"`
	OrganizationID string `mapstructure:"organization_id"`
	ProjectID      string `mapstructure:"project_id"`
	NamespaceID    string `mapstructure:"namespace_id"`
	UserID         string `mapstructure:"user_id"`
}

type NamespaceService added in v0.6.33

type NamespaceService interface {
	List(ctx context.Context) ([]namespace.Namespace, error)
}

type OrganizationService added in v0.6.13

type OrganizationService interface {
	Get(ctx context.Context, id string) (organization.Organization, error)
}

type PagedResources added in v0.6.14

type PagedResources struct {
	Count     int32
	Resources []Resource
}

type PolicyService added in v0.6.33

type PolicyService interface {
	List(ctx context.Context, filter policy.Filters) ([]policy.Policy, error)
}

type ProjectService

type ProjectService interface {
	Get(ctx context.Context, id string) (project.Project, error)
}

type RelationService

type RelationService interface {
	Create(ctx context.Context, rel relation.RelationV2) (relation.RelationV2, error)
	Delete(ctx context.Context, rel relation.Relation) error
	CheckPermission(ctx context.Context, usr user.User, resourceNS namespace.Namespace, resourceIdxa string, action action.Action) (bool, error)
	BulkCheckPermission(ctx context.Context, rels []relation.Relation, acts []action.Action) ([]relation.Permission, error)
	DeleteSubjectRelations(ctx context.Context, resourceType, optionalResourceID string) error
	LookupResources(ctx context.Context, resourceType, permission, subjectType, subjectID string) ([]string, error)
}

type Repository

type Repository interface {
	GetByID(ctx context.Context, id string) (Resource, error)
	GetByURN(ctx context.Context, urn string) (Resource, error)
	Upsert(ctx context.Context, resource Resource) (Resource, error)
	Create(ctx context.Context, resource Resource) (Resource, error)
	List(ctx context.Context, flt Filter) ([]Resource, error)
	Update(ctx context.Context, id string, resource Resource) (Resource, error)
	GetByNamespace(ctx context.Context, name string, ns string) (Resource, error)
}

type Resource

type Resource struct {
	Idxa           string
	URN            string
	Name           string
	ProjectID      string
	OrganizationID string
	NamespaceID    string
	UserID         string
	CreatedAt      time.Time
	UpdatedAt      time.Time
}

func (Resource) CreateURN

func (res Resource) CreateURN() string

func (Resource) ToLogData added in v0.6.25

func (resource Resource) ToLogData() LogData

type ResourcePermissions added in v0.6.33

type ResourcePermissions = map[string][]string

type SchemaService added in v0.6.34

type SchemaService interface {
	UpsertConfig(ctx context.Context, name string, config string) (schema.Config, error)
}

type Service

type Service struct {
	// contains filtered or unexported fields
}

func NewService

func NewService(logger log.Logger, repository Repository, relationService RelationService, userService UserService, projectService ProjectService, organizationService OrganizationService, groupService GroupService, policyService PolicyService, namespaceService NamespaceService, schemaService SchemaService, activityService ActivityService) *Service

func (Service) AddOrgToResource

func (s Service) AddOrgToResource(ctx context.Context, org organization.Organization, res Resource) error

func (Service) AddProjectToResource

func (s Service) AddProjectToResource(ctx context.Context, project project.Project, res Resource) error

func (Service) BulkCheckAuthz added in v0.6.30

func (s Service) BulkCheckAuthz(ctx context.Context, resources []Resource, actions []action.Action) ([]relation.Permission, error)

func (Service) CheckAuthz

func (s Service) CheckAuthz(ctx context.Context, res Resource, act action.Action) (bool, error)

TODO(krkvrm): Separate Authz for Resources & System Namespaces

func (Service) Create

func (s Service) Create(ctx context.Context, res Resource) (Resource, error)

func (Service) Get

func (s Service) Get(ctx context.Context, id string) (Resource, error)

func (Service) GetByURN added in v0.6.22

func (s Service) GetByURN(ctx context.Context, id string) (Resource, error)

func (Service) List

func (s Service) List(ctx context.Context, flt Filter) (PagedResources, error)

func (Service) ListAllUserResources added in v0.6.33

func (s Service) ListAllUserResources(ctx context.Context, userID string, resourceTypes []string, permissions []string) (map[string]ResourcePermissions, error)

func (Service) ListUserResourcesByType added in v0.6.33

func (s Service) ListUserResourcesByType(ctx context.Context, userID string, resourceType string, permissions []string) (ResourcePermissions, error)

func (Service) Update

func (s Service) Update(ctx context.Context, id string, resource Resource) (Resource, error)

func (Service) Upsert added in v0.6.21

func (s Service) Upsert(ctx context.Context, res Resource) (Resource, error)

func (Service) UpsertConfig added in v0.6.34

func (s Service) UpsertConfig(ctx context.Context, name string, config string) (schema.Config, error)

type UserService

type UserService interface {
	FetchCurrentUser(ctx context.Context) (user.User, error)
	Get(ctx context.Context, userID string) (user.User, error)
}

type YAML

type YAML struct {
	Name         string              `json:"name" yaml:"name"`
	Backend      string              `json:"backend" yaml:"backend"`
	ResourceType string              `json:"resource_type" yaml:"resource_type"`
	Actions      map[string][]string `json:"actions" yaml:"actions"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL