storage

package
v0.0.0-...-6ac2db8 Latest Latest
Warning

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

Go to latest
Published: Apr 19, 2025 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrRoleNotFound        = errors.New("storage: role not found")
	ErrRoleAlreadyExists   = errors.New("storage: role already exists")
	ErrUserAlreadyHasRole  = errors.New("storage: user already has role")
	ErrUserDoesNotHaveRole = errors.New("storage: user does not have role")
	ErrPermissionNotFound  = errors.New("storage: permission not found")
)

Common errors

Functions

This section is empty.

Types

type MemoryStorage

type MemoryStorage struct {
	// contains filtered or unexported fields
}

MemoryStorage implements Storage interface using in-memory maps

func (*MemoryStorage) AddRolePermission

func (s *MemoryStorage) AddRolePermission(roleID, resource, action string) error

func (*MemoryStorage) AddUserRole

func (s *MemoryStorage) AddUserRole(userID, roleID string) error

func (*MemoryStorage) CreateRole

func (s *MemoryStorage) CreateRole(role *Role) error

func (*MemoryStorage) DeleteRole

func (s *MemoryStorage) DeleteRole(roleID string) error

func (*MemoryStorage) GetRole

func (s *MemoryStorage) GetRole(roleID string) (*Role, error)

func (*MemoryStorage) GetUserRoles

func (s *MemoryStorage) GetUserRoles(userID string) ([]string, error)

func (*MemoryStorage) HasPermission

func (s *MemoryStorage) HasPermission(roleID, resource, action string) (bool, error)

func (*MemoryStorage) ListRoles

func (s *MemoryStorage) ListRoles() ([]*Role, error)

func (*MemoryStorage) RemoveRolePermission

func (s *MemoryStorage) RemoveRolePermission(roleID, resource string) error

func (*MemoryStorage) RemoveUserRole

func (s *MemoryStorage) RemoveUserRole(userID, roleID string) error

func (*MemoryStorage) UpdateRole

func (s *MemoryStorage) UpdateRole(role *Role) error

type Role

type Role struct {
	ID          string
	Name        string
	Description string
	Permissions map[string][]string // resource -> []actions
	CreatedAt   time.Time
	UpdatedAt   time.Time
}

Role represents a role in the RBAC system.

func NewRole

func NewRole(id, name, description string) *Role

NewRole creates a new role.

type Storage

type Storage interface {
	// Role management
	CreateRole(role *Role) error
	GetRole(roleID string) (*Role, error)
	UpdateRole(role *Role) error
	DeleteRole(roleID string) error
	ListRoles() ([]*Role, error)

	// User-Role management
	AddUserRole(userID, roleID string) error
	RemoveUserRole(userID, roleID string) error
	GetUserRoles(userID string) ([]string, error)

	// Permission management
	AddRolePermission(roleID, resource, action string) error
	RemoveRolePermission(roleID, resource string) error
	HasPermission(roleID, resource, action string) (bool, error)
}

Storage defines the interface for persistence operations.

func NewMemoryStorage

func NewMemoryStorage() Storage

NewMemoryStorage creates a new memory-based storage

Jump to

Keyboard shortcuts

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