relation

package
v0.5.1 Latest Latest
Warning

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

Go to latest
Published: Mar 23, 2023 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNotExist                      = errors.New("relation doesn't exist")
	ErrInvalidUUID                   = errors.New("invalid syntax of uuid")
	ErrInvalidID                     = errors.New("relation id is invalid")
	ErrConflict                      = errors.New("relation already exist")
	ErrInvalidDetail                 = errors.New("invalid relation detail")
	ErrCreatingRelationInStore       = errors.New("error while creating relation")
	ErrCreatingRelationInAuthzEngine = errors.New("error while creating relation in authz engine")
	ErrFetchingUser                  = errors.New("error while fetching user")
)
View Source
var RelationTypes = struct {
	Role      RelationType
	Namespace RelationType
}{
	Role:      "role",
	Namespace: "namespace",
}

Functions

This section is empty.

Types

type AuthzRepository

type AuthzRepository interface {
	Add(ctx context.Context, rel Relation) error
	Check(ctx context.Context, rel Relation, act action.Action) (bool, error)
	DeleteV2(ctx context.Context, rel RelationV2) error
	DeleteSubjectRelations(ctx context.Context, resourceType, optionalResourceID string) error
	AddV2(ctx context.Context, rel RelationV2) error
}

type Object added in v0.5.0

type Object struct {
	ID          string
	NamespaceID string
}

type Relation

type Relation struct {
	ID                 string
	SubjectNamespace   namespace.Namespace
	SubjectNamespaceID string `json:"subject_namespace_id"`
	SubjectID          string `json:"subject_id"`
	SubjectRoleID      string `json:"subject_role_id"`
	ObjectNamespace    namespace.Namespace
	ObjectNamespaceID  string `json:"object_namespace_id"`
	ObjectID           string `json:"object_id"`
	Role               role.Role
	RoleID             string       `json:"role_id"`
	RelationType       RelationType `json:"role_type"`
	CreatedAt          time.Time
	UpdatedAt          time.Time
}

type RelationType

type RelationType string

type RelationV2 added in v0.5.0

type RelationV2 struct {
	ID        string
	Object    Object
	Subject   Subject
	CreatedAt time.Time
	UpdatedAt time.Time
}

type Repository

type Repository interface {
	Get(ctx context.Context, id string) (RelationV2, error)
	Create(ctx context.Context, relation RelationV2) (RelationV2, error)
	List(ctx context.Context) ([]RelationV2, error)
	Update(ctx context.Context, toUpdate Relation) (Relation, error)
	DeleteByID(ctx context.Context, id string) error
	GetByFields(ctx context.Context, rel RelationV2) (RelationV2, error)
}

type RoleService added in v0.5.0

type RoleService interface {
	Get(ctx context.Context, id string) (role.Role, error)
}

type Service

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

func NewService

func NewService(repository Repository, authzRepository AuthzRepository, roleService RoleService, userService UserService) *Service

func (Service) CheckPermission

func (s Service) CheckPermission(ctx context.Context, usr user.User, resourceNS namespace.Namespace, resourceIdxa string, action action.Action) (bool, error)

func (Service) Create

func (s Service) Create(ctx context.Context, rel RelationV2) (RelationV2, error)

func (Service) Delete

func (s Service) Delete(ctx context.Context, rel Relation) error

func (Service) DeleteSubjectRelations

func (s Service) DeleteSubjectRelations(ctx context.Context, resourceType, optionalResourceID string) error

func (Service) DeleteV2 added in v0.5.0

func (s Service) DeleteV2(ctx context.Context, rel RelationV2) error

func (Service) Get

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

func (Service) GetRelationByFields added in v0.5.0

func (s Service) GetRelationByFields(ctx context.Context, rel RelationV2) (RelationV2, error)

func (Service) List

func (s Service) List(ctx context.Context) ([]RelationV2, error)

func (Service) Update

func (s Service) Update(ctx context.Context, toUpdate Relation) (Relation, error)

TODO: Update & Delete planned for v0.6

type Subject added in v0.5.0

type Subject struct {
	ID        string
	Namespace string
	RoleID    string
}

type UserService added in v0.5.0

type UserService interface {
	GetByEmail(ctx context.Context, email string) (user.User, error)
}

Jump to

Keyboard shortcuts

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