authz

package
v0.13.0 Latest Latest
Warning

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

Go to latest
Published: May 4, 2023 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CreateHandler added in v0.11.0

func CreateHandler(svc WarrantService, w http.ResponseWriter, r *http.Request) error

func DeleteHandler added in v0.11.0

func DeleteHandler(svc WarrantService, w http.ResponseWriter, r *http.Request) error

func ListHandler added in v0.11.0

func ListHandler(svc WarrantService, w http.ResponseWriter, r *http.Request) error

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 Model added in v0.8.0

type Model interface {
	GetID() int64
	GetObjectType() string
	GetObjectId() string
	GetRelation() string
	GetSubjectType() string
	GetSubjectId() string
	GetSubjectRelation() *string
	GetContextHash() string
	GetCreatedAt() time.Time
	GetUpdatedAt() time.Time
	GetDeletedAt() *time.Time
	ToWarrantSpec() *WarrantSpec
	String() string
}

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, model Model) (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) (Model, error)

func (MySQLRepository) GetAllMatchingObjectAndRelation

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

func (MySQLRepository) GetAllMatchingWildcard

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

func (MySQLRepository) GetByID

func (repo MySQLRepository) GetByID(ctx context.Context, id int64) (Model, 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) (Model, error)

func (MySQLRepository) List

func (repo MySQLRepository) List(ctx context.Context, filterOptions *FilterOptions, listParams middleware.ListParams) ([]Model, 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, model Model) (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) (Model, 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) ([]Model, error)

func (PostgresRepository) GetAllMatchingWildcard added in v0.4.0

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

func (PostgresRepository) GetByID added in v0.4.0

func (repo PostgresRepository) GetByID(ctx context.Context, id int64) (Model, 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) (Model, error)

func (PostgresRepository) List added in v0.4.0

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

type SQLiteRepository added in v0.11.0

type SQLiteRepository struct {
	database.SQLRepository
}

func NewSQLiteRepository added in v0.11.0

func NewSQLiteRepository(db *database.SQLite) SQLiteRepository

func (SQLiteRepository) Create added in v0.11.0

func (repo SQLiteRepository) Create(ctx context.Context, model Model) (int64, error)

func (SQLiteRepository) DeleteAllByObject added in v0.11.0

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

func (SQLiteRepository) DeleteAllBySubject added in v0.11.0

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

func (SQLiteRepository) DeleteById added in v0.11.0

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

func (SQLiteRepository) Get added in v0.11.0

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

func (SQLiteRepository) GetAllMatchingObjectAndRelation added in v0.11.0

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

func (SQLiteRepository) GetAllMatchingWildcard added in v0.11.0

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

func (SQLiteRepository) GetByID added in v0.11.0

func (repo SQLiteRepository) GetByID(ctx context.Context, id int64) (Model, error)

func (SQLiteRepository) GetWithContextMatch added in v0.11.0

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

func (SQLiteRepository) List added in v0.11.0

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

type SessionWarrantSpec added in v0.7.0

type SessionWarrantSpec 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"`
	Context    context.ContextSetSpec `json:"context,omitempty"`
	CreatedAt  time.Time              `json:"createdAt"`
}

type SortOptions

type SortOptions struct {
	Column      string
	IsAscending bool
}

SortOptions type for sorting filtered results from the warrant table

type SubjectSpec

type SubjectSpec struct {
	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:"omitempty,valid_relation"`
}

func StringToSubjectSpec

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

func (*SubjectSpec) String

func (spec *SubjectSpec) String() string

type Warrant

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

func StringToWarrant

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

func (Warrant) GetContextHash added in v0.8.0

func (warrant Warrant) GetContextHash() string

func (Warrant) GetCreatedAt added in v0.8.0

func (warrant Warrant) GetCreatedAt() time.Time

func (Warrant) GetDeletedAt added in v0.8.0

func (warrant Warrant) GetDeletedAt() *time.Time

func (Warrant) GetID added in v0.8.0

func (warrant Warrant) GetID() int64

func (Warrant) GetObjectId added in v0.8.0

func (warrant Warrant) GetObjectId() string

func (Warrant) GetObjectType added in v0.8.0

func (warrant Warrant) GetObjectType() string

func (Warrant) GetRelation added in v0.8.0

func (warrant Warrant) GetRelation() string

func (Warrant) GetSubjectId added in v0.8.0

func (warrant Warrant) GetSubjectId() string

func (Warrant) GetSubjectRelation added in v0.8.0

func (warrant Warrant) GetSubjectRelation() *string

func (Warrant) GetSubjectType added in v0.8.0

func (warrant Warrant) GetSubjectType() string

func (Warrant) GetUpdatedAt added in v0.8.0

func (warrant Warrant) GetUpdatedAt() time.Time

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 Model) (int64, error)
	Get(ctx context.Context, objectType string, objectId string, relation string, subjectType string, subjectId string, subjectRelation *string, contextHash string) (Model, error)
	GetByID(ctx context.Context, id int64) (Model, error)
	GetWithContextMatch(ctx context.Context, objectType string, objectId string, relation string, subjectType string, subjectId string, subjectRelation *string, contextHash string) (Model, error)
	GetAllMatchingWildcard(ctx context.Context, objectType string, objectId string, relation string, contextHash string) ([]Model, error)
	GetAllMatchingObjectAndRelation(ctx context.Context, objectType string, objectId string, relation string, subjectType string, contextHash string) ([]Model, error)
	List(ctx context.Context, filterOptions *FilterOptions, listParams middleware.ListParams) ([]Model, 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
	Repository    WarrantRepository
	EventSvc      event.EventService
	ObjectTypeSvc objecttype.ObjectTypeService
	CtxSvc        wntContext.ContextService
}

func NewService

func NewService(env service.Env, repository WarrantRepository, eventSvc event.EventService, objectTypeSvc objecttype.ObjectTypeService, ctxSvc wntContext.ContextService) 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) List

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

func (WarrantService) Routes added in v0.8.0

func (svc WarrantService) Routes() ([]service.Route, error)

GetRoutes registers all route handlers for this module

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"`
	Context    context.ContextSetSpec `json:"context,omitempty"`
	CreatedAt  time.Time              `json:"createdAt"`
}

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