acl

package module
v0.0.0-...-99a9ac5 Latest Latest
Warning

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

Go to latest
Published: Jul 8, 2021 License: Apache-2.0 Imports: 9 Imported by: 0

README

acl

ACL module

Documentation

Index

Constants

View Source
const (
	ErrCodeKey          string = "code"
	ErrNameKey          string = "name"
	ErrFieldRequiredKey string = "required"
)
View Source
const (
	ErrRelationNotFoundCode = iota + 1
	ErrNamespaceNotFoundCode
	ErrParamsRequiredCode
)

Variables

This section is empty.

Functions

This section is empty.

Types

type ACL

type ACL struct {
	StoreId  int64  `protobuf:"int64,1,opt,name=object,proto3" json:"id,omitempty"`
	AddedAt  int64  `protobuf:"int64,2,opt,name=object,proto3" json:"added_at,omitempty"`
	Object   string `protobuf:"bytes,3,opt,name=object,proto3" json:"object,omitempty"`
	Relation string `protobuf:"bytes,4,opt,name=relation,proto3" json:"relation,omitempty"`
	Subject  string `protobuf:"bytes,5,opt,name=subject,proto3" json:"subject,omitempty"`
}

type BaseHandler

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

func (*BaseHandler) CheckACL

func (b *BaseHandler) CheckACL(ctx context.Context, subjectName string, set *SubjectSet, opts CheckACLOptions) (bool, error)

func (*BaseHandler) DeleteACL

func (b *BaseHandler) DeleteACL(ctx context.Context, a *ACL, opts DeleteACLOptions) error

func (*BaseHandler) DeleteNamespaceConfig

func (b *BaseHandler) DeleteNamespaceConfig(ctx context.Context, namespaceID string, opts DeleteNamespaceOptions) error

func (*BaseHandler) GetNamespaceConfig

func (b *BaseHandler) GetNamespaceConfig(ctx context.Context, namespaceID string, opts GetNamespaceOptions) (*NamespaceConfig, error)

func (*BaseHandler) GetObjectACL

func (b *BaseHandler) GetObjectACL(ctx context.Context, objectID string, opts GetObjectACLOptions) ([]*ACL, error)

func (*BaseHandler) GetObjectNames

func (b *BaseHandler) GetObjectNames(ctx context.Context, set *ObjectSet, opts GetObjectsNamesOptions) ([]string, error)

func (*BaseHandler) GetSubjectACL

func (b *BaseHandler) GetSubjectACL(ctx context.Context, subjectID string, opts GetSubjectACLOptions) ([]*ACL, error)

func (*BaseHandler) GetSubjectNames

func (b *BaseHandler) GetSubjectNames(ctx context.Context, set *SubjectSet, opts GetSubjectsNamesOptions) ([]string, error)

func (*BaseHandler) SaveACL

func (b *BaseHandler) SaveACL(ctx context.Context, a *ACL, opts SaveACLOptions) error

func (*BaseHandler) SaveNamespaceConfig

func (b *BaseHandler) SaveNamespaceConfig(ctx context.Context, cfg *NamespaceConfig, opts SaveNamespaceConfigOptions) error

type CheckACLOptions

type CheckACLOptions struct{}

type CheckACLRequest

type CheckACLRequest struct {
	Subject    string `json:"subject"`
	SubjectSet string `json:"subject_set"`
}

type CheckACLResponse

type CheckACLResponse struct {
	CheckedOk bool `json:"checked_ok"`
}

type DeleteACLOptions

type DeleteACLOptions struct{}

type DeleteACLRequest

type DeleteACLRequest struct {
	ACL *ACL
}

type DeleteACLResponse

type DeleteACLResponse struct{}

type DeleteNamespaceConfigRequest

type DeleteNamespaceConfigRequest struct {
	ConfigId string `json:"config_id"`
}

type DeleteNamespaceConfigResponse

type DeleteNamespaceConfigResponse struct{}

type DeleteNamespaceOptions

type DeleteNamespaceOptions struct{}

type GetACLResponse

type GetACLResponse struct {
	List []*ACL `json:"list"`
}

type GetNamespaceOptions

type GetNamespaceOptions struct{}

type GetObjectACLOptions

type GetObjectACLOptions struct{}

type GetObjectRequest

type GetObjectRequest struct {
	ForObject string `json:"for_object"`
}

type GetObjectsNamesOptions

type GetObjectsNamesOptions struct{}

type GetObjectsNamesRequest

type GetObjectsNamesRequest struct {
	Set *ObjectSet `json:"set"`
}

type GetObjectsNamesResponse

type GetObjectsNamesResponse struct {
	Names []string `json:"names"`
}

type GetObjectsSetOptions

type GetObjectsSetOptions struct{}

type GetSubjectACLOptions

type GetSubjectACLOptions struct{}

type GetSubjectACLRequest

type GetSubjectACLRequest struct {
	Subject string `json:"subject"`
}

type GetSubjectACLResponse

type GetSubjectACLResponse struct {
	List []*ACL `json:"list"`
}

type GetSubjectNameRequest

type GetSubjectNameRequest struct {
	Set *SubjectSet `json:"set"`
}

type GetSubjectNameResponse

type GetSubjectNameResponse struct {
	Names []string `json:"names"`
}

type GetSubjectSet

type GetSubjectSet struct {
	Subject     string `protobuf:"bytes,1,opt,name=subject,proto3" json:"subject,omitempty"`
	Relation    string `protobuf:"bytes,2,opt,name=relation,proto3" json:"relation,omitempty"`
	StateMinAge int64  `protobuf:"bytes,3,opt,name=relation,proto3" json:"state_min_age,omitempty"`
}

type GetSubjectsNamesOptions

type GetSubjectsNamesOptions struct{}

type Handler

type Handler interface {
	SaveNamespaceConfig(ctx context.Context, cfg *NamespaceConfig, opts SaveNamespaceConfigOptions) error
	GetNamespaceConfig(ctx context.Context, namespaceID string, opts GetNamespaceOptions) (*NamespaceConfig, error)
	DeleteNamespaceConfig(ctx context.Context, namespaceID string, opts DeleteNamespaceOptions) error

	SaveACL(ctx context.Context, a *ACL, opts SaveACLOptions) error
	DeleteACL(ctx context.Context, a *ACL, opts DeleteACLOptions) error
	CheckACL(ctx context.Context, subjectName string, set *SubjectSet, opts CheckACLOptions) (bool, error)
	GetObjectACL(ctx context.Context, objectID string, opts GetObjectACLOptions) ([]*ACL, error)
	GetSubjectACL(ctx context.Context, subjectID string, opts GetSubjectACLOptions) ([]*ACL, error)

	GetSubjectNames(ctx context.Context, set *SubjectSet, opts GetSubjectsNamesOptions) ([]string, error)
	GetObjectNames(ctx context.Context, set *ObjectSet, opts GetObjectsNamesOptions) ([]string, error)
}

type ListNamespaceConfigResponse

type ListNamespaceConfigResponse struct {
	Configs []*NamespaceConfig `json:"configs"`
}

type ListNamespaceConfigsRequest

type ListNamespaceConfigsRequest struct{}

type NamespaceConfig

type NamespaceConfig struct {
	Sid       int64                          `protobuf:"varint,1,opt,name=sid,proto3" json:"sid,omitempty"`
	Namespace string                         `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"`
	Relations map[string]*RelationDefinition `` /* 159-byte string literal not displayed */
}

type ObjectSet

type ObjectSet struct {
	Subject  string `protobuf:"bytes,1,opt,name=subject,proto3" json:"subject,omitempty"`
	Relation string `protobuf:"bytes,2,opt,name=relation,proto3" json:"relation,omitempty"`
}

type RelationDefinition

type RelationDefinition struct {
	Name              string                  `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	SubjectSetRewrite []*SubjectSetDefinition `protobuf:"bytes,2,rep,name=subject_set_rewrite,json=subjectSetRewrite,proto3" json:"subject_set_rewrite,omitempty"`
}

type Repository

type Repository interface {
	GetNamespace(namespaceId string) (*NamespaceConfig, error)
	GetRelationDefinition(namespaceID string, relationName string) (*RelationDefinition, error)
	SaveNamespace(config *NamespaceConfig) error
	DeleteNamespace(namespaceId string) error

	Save(a *ACL) error
	Exists(a *ACL) (bool, error)
	GetForObject(minAge int64, objectID string) ([]*ACL, error)
	GetForSubject(minAge int64, subjectID string) ([]*ACL, error)
	GetSubjects(minAge int64, set *SubjectSet) ([]string, error)
	GetObjects(minAge int64, set *ObjectSet) ([]string, error)
	Delete(a *ACL) error
}

func NewSQLRepository

func NewSQLRepository(db *sql.DB, dialect string, tablePrefix string) (Repository, error)

type RouteOption

type RouteOption func(*routesOptions)

type RouteProviderFunc

type RouteProviderFunc func(final Handler, opts ...RouteOption) Handler

func (RouteProviderFunc) GetHandler

func (f RouteProviderFunc) GetHandler(final Handler, opts ...RouteOption) Handler

type Router

type Router interface {
	// GetHandler returns a sequence of handler
	GetHandler(final Handler, opts ...RouteOption) Handler
}

type RouterProvideFunc

type RouterProvideFunc func(ctx context.Context) Router

func (RouterProvideFunc) GetRouter

func (f RouterProvideFunc) GetRouter(ctx context.Context) Router

type RouterProvider

type RouterProvider interface {
	//GetRouter returns a router
	GetRouter(ctx context.Context) Router
}

type SaveACLOptions

type SaveACLOptions struct{}

type SaveACLRequest

type SaveACLRequest struct {
	ACL *ACL
}

type SaveACLResponse

type SaveACLResponse struct{}

type SaveNamespaceConfigOptions

type SaveNamespaceConfigOptions struct {
	UpdateExisting bool `json:"update_existing"`
}

type SaveNamespaceConfigRequest

type SaveNamespaceConfigRequest struct {
	Config *NamespaceConfig `json:"config"`
}

type SaveNamespaceConfigResponse

type SaveNamespaceConfigResponse struct{}

type Service

type Service interface {
	SaveACL(ctx context.Context, relation *ACL) error
	DeleteACL(ctx context.Context, relation *ACL) error
	CheckACL(ctx context.Context, username string, subjectSet *SubjectSet) (bool, error)
	GetObjectACL(ctx context.Context, objectID string) ([]*ACL, error)
	GetSubjectACL(ctx context.Context, subjectID string) ([]*ACL, error)

	GetSubjectsNames(ctx context.Context, set *SubjectSet) ([]string, error)
	GetObjectsNames(ctx context.Context, set *ObjectSet) ([]string, error)

	SaveNamespaceConfig(ctx context.Context, config *NamespaceConfig) error
	GetNamespaceConfig(ctx context.Context, name string) (*NamespaceConfig, error)
	DeleteNamespaceConfig(ctx context.Context, name string) error
}

func NewService

func NewService(repository Repository) Service

type SubjectSet

type SubjectSet struct {
	Object   string `protobuf:"bytes,1,opt,name=object,proto3" json:"object,omitempty"`
	Relation string `protobuf:"bytes,2,opt,name=relation,proto3" json:"relation,omitempty"`
}

type SubjectSetDefinition

type SubjectSetDefinition struct {
	Type  SubjectSetType `protobuf:"varint,1,opt,name=type,proto3,enum=SubjectSetType" json:"type,omitempty"`
	Value string         `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
}

type SubjectSetType

type SubjectSetType int32
const (
	This      SubjectSetType = 0
	Computed  SubjectSetType = 1
	FromTuple SubjectSetType = 2
)

type SubjectsInRelationWithObjectRelatedObject

type SubjectsInRelationWithObjectRelatedObject struct {
	ObjectRelation  string `protobuf:"bytes,1,opt,name=object_relation,json=objectRelation,proto3" json:"object_relation,omitempty"`
	SubjectRelation string `protobuf:"bytes,2,opt,name=subject_relation,json=subjectRelation,proto3" json:"subject_relation,omitempty"`
}

Jump to

Keyboard shortcuts

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