permissions

package
v2.0.5 Latest Latest
Warning

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

Go to latest
Published: Aug 16, 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

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

func Evaluate

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

func NormalizePermissionIDs

func NormalizePermissionIDs(permissionIDs []string) []string

func ValidateRecord

func ValidateRecord(record Record) error

func ValidateRevokeRequest

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

func CloneRecord(record Record) Record

func NewGrant

func NewGrant(req GrantRequest) (Record, error)

func NormalizeRecord

func NormalizeRecord(record Record) Record

func Revoke

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