permissions

package
v0.6.19 Latest Latest
Warning

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

Go to latest
Published: Jul 26, 2026 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrInvalidPermission = errors.New("permission grant is invalid")
	ErrPermissionDenied  = errors.New("plugin permission grant is required")
	ErrGrantNotFound     = errors.New("permission grant not found")
)

Functions

func Active added in v0.5.0

func Active(record Record, now time.Time) bool

func Evaluate added in v0.5.0

func Evaluate(records []Record, req CheckRequest) (bool, []string, error)

func NormalizePermissionIDs added in v0.5.0

func NormalizePermissionIDs(permissionIDs []string) []string

func ValidateRecord added in v0.5.0

func ValidateRecord(record Record) error

func ValidateRevokeRequest added in v0.5.0

func ValidateRevokeRequest(req RevokeRequest) error

Types

type CheckRequest

type CheckRequest struct {
	PluginInstanceID string    `json:"plugin_instance_id"`
	PermissionIDs    []string  `json:"permission_ids"`
	Now              time.Time `json:"-"`
}

type Effect

type Effect string
const (
	EffectGrant Effect = "grant"
	EffectDeny  Effect = "deny"
)

type GrantRequest

type GrantRequest struct {
	PluginInstanceID string    `json:"plugin_instance_id"`
	PermissionID     string    `json:"permission_id"`
	GrantedBy        string    `json:"granted_by,omitempty"`
	Now              time.Time `json:"-"`
	ExpiresAt        time.Time `json:"expires_at,omitempty"`
}

type Record

type Record struct {
	PluginInstanceID string     `json:"plugin_instance_id"`
	PermissionID     string     `json:"permission_id"`
	Effect           Effect     `json:"effect"`
	GrantedBy        string     `json:"granted_by,omitempty"`
	GrantedAt        time.Time  `json:"granted_at"`
	ExpiresAt        *time.Time `json:"expires_at,omitempty"`
	RevokedAt        *time.Time `json:"revoked_at,omitempty"`
	RevokedBy        string     `json:"revoked_by,omitempty"`
	RevokedReason    string     `json:"revoked_reason,omitempty"`
}

func CloneRecord added in v0.5.0

func CloneRecord(record Record) Record

func NewGrant added in v0.5.0

func NewGrant(req GrantRequest) (Record, error)

func NormalizeRecord added in v0.5.0

func NormalizeRecord(record Record) Record

func Revoke added in v0.5.0

func Revoke(record Record, req RevokeRequest) (Record, error)

type RevokeRequest

type RevokeRequest struct {
	PluginInstanceID string    `json:"plugin_instance_id"`
	PermissionID     string    `json:"permission_id"`
	RevokedBy        string    `json:"revoked_by,omitempty"`
	Reason           string    `json:"reason,omitempty"`
	Now              time.Time `json:"-"`
}

Jump to

Keyboard shortcuts

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