Documentation
¶
Index ¶
- Constants
- type ACL
- type BaseHandler
- func (b *BaseHandler) CheckACL(ctx context.Context, subjectName string, set *SubjectSet, opts CheckACLOptions) (bool, error)
- func (b *BaseHandler) DeleteACL(ctx context.Context, a *ACL, opts DeleteACLOptions) error
- func (b *BaseHandler) DeleteNamespaceConfig(ctx context.Context, namespaceID string, opts DeleteNamespaceOptions) error
- func (b *BaseHandler) GetNamespaceConfig(ctx context.Context, namespaceID string, opts GetNamespaceOptions) (*NamespaceConfig, error)
- func (b *BaseHandler) GetObjectACL(ctx context.Context, objectID string, opts GetObjectACLOptions) ([]*ACL, error)
- func (b *BaseHandler) GetObjectNames(ctx context.Context, set *ObjectSet, opts GetObjectsNamesOptions) ([]string, error)
- func (b *BaseHandler) GetSubjectACL(ctx context.Context, subjectID string, opts GetSubjectACLOptions) ([]*ACL, error)
- func (b *BaseHandler) GetSubjectNames(ctx context.Context, set *SubjectSet, opts GetSubjectsNamesOptions) ([]string, error)
- func (b *BaseHandler) SaveACL(ctx context.Context, a *ACL, opts SaveACLOptions) error
- func (b *BaseHandler) SaveNamespaceConfig(ctx context.Context, cfg *NamespaceConfig, opts SaveNamespaceConfigOptions) error
- type CheckACLOptions
- type CheckACLRequest
- type CheckACLResponse
- type DeleteACLOptions
- type DeleteACLRequest
- type DeleteACLResponse
- type DeleteNamespaceConfigRequest
- type DeleteNamespaceConfigResponse
- type DeleteNamespaceOptions
- type GetACLResponse
- type GetNamespaceOptions
- type GetObjectACLOptions
- type GetObjectRequest
- type GetObjectsNamesOptions
- type GetObjectsNamesRequest
- type GetObjectsNamesResponse
- type GetObjectsSetOptions
- type GetSubjectACLOptions
- type GetSubjectACLRequest
- type GetSubjectACLResponse
- type GetSubjectNameRequest
- type GetSubjectNameResponse
- type GetSubjectSet
- type GetSubjectsNamesOptions
- type Handler
- type ListNamespaceConfigResponse
- type ListNamespaceConfigsRequest
- type NamespaceConfig
- type ObjectSet
- type RelationDefinition
- type Repository
- type RouteOption
- type RouteProviderFunc
- type Router
- type RouterProvideFunc
- type RouterProvider
- type SaveACLOptions
- type SaveACLRequest
- type SaveACLResponse
- type SaveNamespaceConfigOptions
- type SaveNamespaceConfigRequest
- type SaveNamespaceConfigResponse
- type Service
- type SubjectSet
- type SubjectSetDefinition
- type SubjectSetType
- type SubjectsInRelationWithObjectRelatedObject
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 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 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 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 ¶
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 RouterProvider ¶
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 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"`
}
Click to show internal directories.
Click to hide internal directories.