authz

package
v0.4.0 Latest Latest
Warning

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

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

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func UserIdToSubjectString

func UserIdToSubjectString(userId string) string

Types

type FilterOptions

type FilterOptions struct {
	ObjectType string
	ObjectId   string
	Relation   string
	Subject    *SubjectSpec
	Context    *context.ContextSetSpec
	ObjectIds  []string
	SubjectIds []string
}

FilterOptions type for the filter options available on the warrant table

type MySQLRepository

type MySQLRepository struct {
	database.SQLRepository
}

func NewMySQLRepository

func NewMySQLRepository(db *database.MySQL) MySQLRepository

func (MySQLRepository) Create

func (repo MySQLRepository) Create(ctx context.Context, warrant Warrant) (int64, error)

func (MySQLRepository) DeleteAllByObject

func (repo MySQLRepository) DeleteAllByObject(ctx context.Context, objectType string, objectId string) error

func (MySQLRepository) DeleteAllBySubject

func (repo MySQLRepository) DeleteAllBySubject(ctx context.Context, subjectType string, subjectId string) error

func (MySQLRepository) DeleteById

func (repo MySQLRepository) DeleteById(ctx context.Context, id int64) error

func (MySQLRepository) Get

func (repo MySQLRepository) Get(ctx context.Context, objectType string, objectId string, relation string, subjectType string, subjectId string, subjectRelation string, contextHash string) (*Warrant, error)

func (MySQLRepository) GetAllMatchingObjectAndRelation

func (repo MySQLRepository) GetAllMatchingObjectAndRelation(ctx context.Context, objectType string, objectId string, relation string, subjectType string, contextHash string) ([]Warrant, error)

func (MySQLRepository) GetAllMatchingObjectAndSubject

func (repo MySQLRepository) GetAllMatchingObjectAndSubject(ctx context.Context, objectType string, objectId string, subjectType string, subjectId string, subjectRelation string) ([]Warrant, error)

func (MySQLRepository) GetAllMatchingSubjectAndRelation

func (repo MySQLRepository) GetAllMatchingSubjectAndRelation(ctx context.Context, objectType string, relation string, subjectType string, subjectId string, subjectRelation string) ([]Warrant, error)

func (MySQLRepository) GetAllMatchingWildcard

func (repo MySQLRepository) GetAllMatchingWildcard(ctx context.Context, objectType string, objectId string, relation string, contextHash string) ([]Warrant, error)

func (MySQLRepository) GetByID

func (repo MySQLRepository) GetByID(ctx context.Context, id int64) (*Warrant, error)

func (MySQLRepository) GetWithContextMatch

func (repo MySQLRepository) GetWithContextMatch(ctx context.Context, objectType string, objectId string, relation string, subjectType string, subjectId string, subjectRelation string, contextHash string) (*Warrant, error)

func (MySQLRepository) List

func (repo MySQLRepository) List(ctx context.Context, filterOptions *FilterOptions, listParams middleware.ListParams) ([]Warrant, error)

type ObjectSpec

type ObjectSpec struct {
	ObjectType string `json:"objectType" validate:"required,valid_object_type"`
	ObjectId   string `json:"objectId" validate:"required,valid_object_id"`
}

ObjectSpec type

func StringToObjectSpec

func StringToObjectSpec(str string) (*ObjectSpec, error)

type PostgresRepository added in v0.4.0

type PostgresRepository struct {
	database.SQLRepository
}

func NewPostgresRepository added in v0.4.0

func NewPostgresRepository(db *database.Postgres) PostgresRepository

func (PostgresRepository) Create added in v0.4.0

func (repo PostgresRepository) Create(ctx context.Context, warrant Warrant) (int64, error)

func (PostgresRepository) DeleteAllByObject added in v0.4.0

func (repo PostgresRepository) DeleteAllByObject(ctx context.Context, objectType string, objectId string) error

func (PostgresRepository) DeleteAllBySubject added in v0.4.0

func (repo PostgresRepository) DeleteAllBySubject(ctx context.Context, subjectType string, subjectId string) error

func (PostgresRepository) DeleteById added in v0.4.0

func (repo PostgresRepository) DeleteById(ctx context.Context, id int64) error

func (PostgresRepository) Get added in v0.4.0

func (repo PostgresRepository) Get(ctx context.Context, objectType string, objectId string, relation string, subjectType string, subjectId string, subjectRelation string, contextHash string) (*Warrant, error)

func (PostgresRepository) GetAllMatchingObjectAndRelation added in v0.4.0

func (repo PostgresRepository) GetAllMatchingObjectAndRelation(ctx context.Context, objectType string, objectId string, relation string, subjectType string, contextHash string) ([]Warrant, error)

func (PostgresRepository) GetAllMatchingObjectAndSubject added in v0.4.0

func (repo PostgresRepository) GetAllMatchingObjectAndSubject(ctx context.Context, objectType string, objectId string, subjectType string, subjectId string, subjectRelation string) ([]Warrant, error)

func (PostgresRepository) GetAllMatchingSubjectAndRelation added in v0.4.0

func (repo PostgresRepository) GetAllMatchingSubjectAndRelation(ctx context.Context, objectType string, relation string, subjectType string, subjectId string, subjectRelation string) ([]Warrant, error)

func (PostgresRepository) GetAllMatchingWildcard added in v0.4.0

func (repo PostgresRepository) GetAllMatchingWildcard(ctx context.Context, objectType string, objectId string, relation string, contextHash string) ([]Warrant, error)

func (PostgresRepository) GetByID added in v0.4.0

func (repo PostgresRepository) GetByID(ctx context.Context, id int64) (*Warrant, error)

func (PostgresRepository) GetWithContextMatch added in v0.4.0

func (repo PostgresRepository) GetWithContextMatch(ctx context.Context, objectType string, objectId string, relation string, subjectType string, subjectId string, subjectRelation string, contextHash string) (*Warrant, error)

func (PostgresRepository) List added in v0.4.0

func (repo PostgresRepository) List(ctx context.Context, filterOptions *FilterOptions, listParams middleware.ListParams) ([]Warrant, error)

type SortOptions

type SortOptions struct {
	Column      string
	IsAscending bool
}

SortOptions type for sorting filtered results from the warrant table

type SubjectSpec

type SubjectSpec struct {
	UserId     string `json:"userId,omitempty" validate:"required_without_all=ObjectType ObjectId Relation"`
	ObjectType string `json:"objectType,omitempty" validate:"required_with=ObjectId,valid_object_type"`
	ObjectId   string `json:"objectId,omitempty" validate:"required_with=ObjectType,valid_object_id"`
	Relation   string `json:"relation,omitempty" validate:"valid_relation"`
}

SubjectSpec type

func StringToSubjectSpec

func StringToSubjectSpec(str string) (*SubjectSpec, error)

func UserIdToSubjectSpec

func UserIdToSubjectSpec(userId string) *SubjectSpec

func (*SubjectSpec) String

func (spec *SubjectSpec) String() string

type Warrant

type Warrant struct {
	ID              int64               `mysql:"id" postgres:"id"`
	ObjectType      string              `mysql:"objectType" postgres:"object_type"`
	ObjectId        string              `mysql:"objectId" postgres:"object_id"`
	Relation        string              `mysql:"relation" postgres:"relation"`
	SubjectType     string              `mysql:"subjectType" postgres:"subject_type"`
	SubjectId       string              `mysql:"subjectId" postgres:"subject_id"`
	SubjectRelation database.NullString `mysql:"subjectRelation" postgres:"subject_relation"`
	ContextHash     string              `mysql:"contextHash" postgres:"context_hash"`
	Context         []context.Context   `mysql:"context" postgres:"context"`
	CreatedAt       time.Time           `mysql:"createdAt" postgres:"created_at"`
	UpdatedAt       time.Time           `mysql:"updatedAt" postgres:"updated_at"`
	DeletedAt       database.NullTime   `mysql:"deletedAt" postgres:"deleted_at"`
}

Warrant model

func StringToWarrant

func StringToWarrant(warrantString string) (*Warrant, error)

func (Warrant) String added in v0.4.0

func (warrant Warrant) String() string

func (Warrant) ToWarrantSpec

func (warrant Warrant) ToWarrantSpec() *WarrantSpec

type WarrantListParamParser

type WarrantListParamParser struct{}

func (WarrantListParamParser) GetDefaultSortBy

func (parser WarrantListParamParser) GetDefaultSortBy() string

func (WarrantListParamParser) GetSupportedSortBys

func (parser WarrantListParamParser) GetSupportedSortBys() []string

func (WarrantListParamParser) ParseValue

func (parser WarrantListParamParser) ParseValue(val string, sortBy string) (interface{}, error)

type WarrantRepository

type WarrantRepository interface {
	Create(ctx context.Context, warrant Warrant) (int64, error)
	Get(ctx context.Context, objectType string, objectId string, relation string, subjectType string, subjectId string, subjectRelation string, contextHash string) (*Warrant, error)
	GetByID(ctx context.Context, id int64) (*Warrant, error)
	GetWithContextMatch(ctx context.Context, objectType string, objectId string, relation string, subjectType string, subjectId string, subjectRelation string, contextHash string) (*Warrant, error)
	GetAllMatchingWildcard(ctx context.Context, objectType string, objectId string, relation string, contextHash string) ([]Warrant, error)
	GetAllMatchingObjectAndRelation(ctx context.Context, objectType string, objectId string, relation string, subjectType string, contextHash string) ([]Warrant, error)
	GetAllMatchingObjectAndSubject(ctx context.Context, objectType string, objectId string, subjectType string, subjectId string, subjectRelation string) ([]Warrant, error)
	GetAllMatchingSubjectAndRelation(ctx context.Context, objectType string, relation string, subjectType string, subjectId string, subjectRelation string) ([]Warrant, error)
	List(ctx context.Context, filterOptions *FilterOptions, listParams middleware.ListParams) ([]Warrant, error)
	DeleteById(ctx context.Context, id int64) error
	DeleteAllByObject(ctx context.Context, objectType string, objectId string) error
	DeleteAllBySubject(ctx context.Context, subjectType string, subjectId string) error
}

func NewRepository

func NewRepository(db database.Database) (WarrantRepository, error)

type WarrantService

type WarrantService struct {
	service.BaseService
	// contains filtered or unexported fields
}

func NewService

func NewService(env service.Env) WarrantService

func (WarrantService) Create

func (svc WarrantService) Create(ctx context.Context, warrantSpec WarrantSpec) (*WarrantSpec, error)

func (WarrantService) Delete

func (svc WarrantService) Delete(ctx context.Context, warrantSpec WarrantSpec) error

func (WarrantService) DeleteRelatedWarrants

func (svc WarrantService) DeleteRelatedWarrants(ctx context.Context, objectType string, objectId string) error

func (WarrantService) Get

func (svc WarrantService) Get(ctx context.Context, objectType string, objectId string, relation string, subjectType string, subjectId string, subjectRelation string, wntCtx wntContext.ContextSetSpec) (*WarrantSpec, error)

func (WarrantService) GetRoutes

func (svc WarrantService) GetRoutes() []service.Route

GetRoutes registers all route handlers for this module

func (WarrantService) List

func (svc WarrantService) List(ctx context.Context, filterOptions *FilterOptions, listParams middleware.ListParams) ([]*WarrantSpec, error)

type WarrantSpec

type WarrantSpec struct {
	ObjectType string                 `json:"objectType" validate:"required,valid_object_type"`
	ObjectId   string                 `json:"objectId" validate:"required,valid_object_id"`
	Relation   string                 `json:"relation" validate:"required,valid_relation"`
	Subject    *SubjectSpec           `json:"subject" validate:"required_without=User"`
	User       *SubjectSpec           `json:"user,omitempty" validate:"required_without=Subject"`
	Context    context.ContextSetSpec `json:"context,omitempty"`
	IsImplicit *bool                  `json:"isImplicit,omitempty"`
	CreatedAt  time.Time              `json:"createdAt"`
}

WarrantSpec type

func StringToWarrantSpec

func StringToWarrantSpec(warrantString string) (*WarrantSpec, error)

func (WarrantSpec) String

func (spec WarrantSpec) String() string

func (*WarrantSpec) ToMap

func (spec *WarrantSpec) ToMap() map[string]interface{}

func (*WarrantSpec) ToWarrant

func (spec *WarrantSpec) ToWarrant() *Warrant

Jump to

Keyboard shortcuts

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