access_control

package
v0.0.0-...-8122643 Latest Latest
Warning

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

Go to latest
Published: Feb 5, 2024 License: Apache-2.0 Imports: 4 Imported by: 0

Documentation

Index

Constants

View Source
const (
	Read          AccessType = 0x1
	Create        AccessType = 0x2
	UpdateReplace AccessType = 0x4
	UpdatePartial AccessType = 0x8
	Update        AccessType = UpdateReplace | UpdatePartial

	Delete AccessType = 0x10

	Post  = Create
	Get   = Read
	Put   = UpdateReplace
	Patch = UpdatePartial

	All AccessType = 0xFFFFFFFF
)

Variables

This section is empty.

Functions

func Access2HttpMethod

func Access2HttpMethod(access AccessType) string

func Check

func Check(accessMask AccessType, accessType AccessType) bool

func HttpContentInQuery

func HttpContentInQuery(accessType AccessType) bool

Types

type Access

type Access interface {
	Grant(accessType AccessType)
	Revoke(accessType AccessType)
	Check(accessType AccessType) bool
	Mask() uint32
}

type AccessBase

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

func NewAccess

func NewAccess(mask uint32) AccessBase

func (*AccessBase) Check

func (a *AccessBase) Check(accessType AccessType) bool

func (*AccessBase) Grant

func (a *AccessBase) Grant(accessType AccessType)

func (*AccessBase) Mask

func (a *AccessBase) Mask() uint32

func (*AccessBase) Revoke

func (a *AccessBase) Revoke(accessType AccessType)

type AccessControl

type AccessControl interface {
	CheckAccess(ctx op_context.Context, resource Resource, subject Subject, accessType AccessType) bool
	DefaultAccess() Access
	SetDefaultAccess(Access)
}

Interface for access controllers.

type AccessControlBase

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

Base implementation of access controller.

func NewAccessControl

func NewAccessControl(acl Acl, resourceManager ResourceManager, defaultAccess ...Access) *AccessControlBase

func (*AccessControlBase) CheckAccess

func (a *AccessControlBase) CheckAccess(ctx op_context.Context, resource Resource, subject Subject, accessType AccessType) (bool, error)

func (*AccessControlBase) DefaultAccess

func (a *AccessControlBase) DefaultAccess() Access

func (*AccessControlBase) Init

func (a *AccessControlBase) Init(acl Acl, resourceManager ResourceManager, defaultAccess ...Access)

func (*AccessControlBase) SetDefaultAccess

func (a *AccessControlBase) SetDefaultAccess(access Access)

type AccessType

type AccessType uint32

func HttpMethod2Access

func HttpMethod2Access(method string) AccessType

type Acl

type Acl interface {
	FindRule(ctx op_context.Context, resourcePath string, tag string, role Role) (Rule, error)
}

type Operation

type Operation uint32

type Resource

type Resource interface {
	common.WithNameAndPath
	IsOwner(subject Subject) bool
	OwnerAccess() Access
}

type ResourceBase

type ResourceBase struct {
	common.WithNameAndPathBase
}

type ResourceManager

type ResourceManager interface {
	FindResource(ctx op_context.Context, path string) (Resource, error)
	ResourceTags(ctx op_context.Context, path string) ([]string, error)
}

type Role

type Role interface {
	common.WithName
}

type RoleBase

type RoleBase struct {
	common.WithNameBase
}

type Rule

type Rule interface {
	Resource() Resource
	Role() Role
	Access() Access
	Tags() []string
}

type Subject

type Subject interface {
	Roles() []Role
}

Jump to

Keyboard shortcuts

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