adminpanel

package
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Oct 5, 2024 License: MIT Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultAdminConfig = NewDefaultAdminConfig()

Functions

func GetAppsWithReadPermissions

func GetAppsWithReadPermissions(panel *AdminPanel, data interface{}) ([]map[string]interface{}, error)

func GetErrorHTML

func GetErrorHTML(code uint, err error) (uint, string)

func GetModelsWithReadPermissions

func GetModelsWithReadPermissions(app *App, data interface{}) ([]map[string]interface{}, error)

Types

type Action

type Action string
const (
	ReadAction    Action = "read"
	CreateAction  Action = "create"
	UpdateAction  Action = "update"
	DeleteAction  Action = "delete"
	LogViewAction Action = "log_view"
)

type AdminConfig

type AdminConfig struct {
	Name                    string
	Prefix                  string
	Renderer                TemplateRenderer
	AssetsPrefix            string
	GroupPrefix             string
	DefaultInstancesPerPage uint
	NavBarGenerators        []NavBarGenerator
	UserFetcher             UserFetchFunction
	LogStore                logging.LogStore
	LogStoreLevel           logging.LogStoreLevel
}

func NewDefaultAdminConfig

func NewDefaultAdminConfig() *AdminConfig

func (*AdminConfig) CreateLog

func (c *AdminConfig) CreateLog(ctx interface{}, action logging.LogStoreLevel, contentType string, objectID interface{}, objectRepr string, message string) error
func (c *AdminConfig) GetAssetLink(fileName string) string

func (*AdminConfig) GetAssetsPrefix

func (c *AdminConfig) GetAssetsPrefix() string
func (c *AdminConfig) GetLink(link string) string

func (*AdminConfig) GetNavBarItems

func (c *AdminConfig) GetNavBarItems(ctx interface{}) []NavBarItem

func (*AdminConfig) GetPrefix

func (c *AdminConfig) GetPrefix() string

type AdminFormFieldInterface

type AdminFormFieldInterface interface {
	AdminFormField(name string, isEdit bool) form.Field
}

type AdminInstanceReprInterface

type AdminInstanceReprInterface interface {
	AdminInstanceRepr() string
}

type AdminModelDisplayNameInterface

type AdminModelDisplayNameInterface interface {
	AdminDisplayName() string
}

type AdminModelGetIDInterface

type AdminModelGetIDInterface interface {
	AdminGetID() interface{}
}

type AdminModelNameInterface

type AdminModelNameInterface interface {
	AdminName() string
}

type AdminPanel

type AdminPanel struct {
	Apps              map[string]*App
	AppsSlice         []*App
	PermissionChecker PermissionFunc
	ORM               ORMIntegrator
	Web               WebIntegrator
	Config            AdminConfig
}

func NewAdminPanel

func NewAdminPanel(orm ORMIntegrator, web WebIntegrator, permissionsCheck PermissionFunc, config *AdminConfig) (*AdminPanel, error)

func (*AdminPanel) CreateLogViewLog

func (ap *AdminPanel) CreateLogViewLog(ctx interface{}, entry logging.LogEntry) error

func (*AdminPanel) CreateViewLog

func (ap *AdminPanel) CreateViewLog(ctx interface{}) error
func (ap *AdminPanel) GetFullLink() string
func (ap *AdminPanel) GetFullLogBaseLink() string

func (*AdminPanel) GetHandler

func (ap *AdminPanel) GetHandler() HandlerFunc
func (ap *AdminPanel) GetLogBaseLink() string

func (*AdminPanel) GetLogEntries

func (ap *AdminPanel) GetLogEntries(ctx interface{}, maxCount uint) []*logging.LogEntry

func (*AdminPanel) GetLogHandler

func (ap *AdminPanel) GetLogHandler() HandlerFunc

func (*AdminPanel) GetORM

func (ap *AdminPanel) GetORM() ORMIntegrator

func (*AdminPanel) RegisterApp

func (ap *AdminPanel) RegisterApp(name, displayName string, orm ORMIntegrator) (*App, error)

type App

type App struct {
	Name        string
	DisplayName string
	Models      map[string]*Model
	ModelsSlice []*Model
	Panel       *AdminPanel
	ORM         ORMIntegrator
}

func (*App) CreateViewLog

func (a *App) CreateViewLog(ctx interface{}) error
func (a *App) GetFullLink() string

func (*App) GetHandler

func (a *App) GetHandler() HandlerFunc
func (a *App) GetLink() string

func (*App) GetORM

func (a *App) GetORM() ORMIntegrator

func (*App) RegisterModel

func (a *App) RegisterModel(model interface{}, orm ORMIntegrator) (*Model, error)

type DefaultTemplateRenderer

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

func NewDefaultTemplateRenderer

func NewDefaultTemplateRenderer() *DefaultTemplateRenderer

func (*DefaultTemplateRenderer) AddCustomAsset

func (tr *DefaultTemplateRenderer) AddCustomAsset(name string, asset []byte)

func (*DefaultTemplateRenderer) AddCustomCompositeTemplate

func (tr *DefaultTemplateRenderer) AddCustomCompositeTemplate(name string, baseNames ...string) error

func (*DefaultTemplateRenderer) AddCustomTemplate

func (tr *DefaultTemplateRenderer) AddCustomTemplate(name, tmplText string) error

func (*DefaultTemplateRenderer) GetAsset

func (tr *DefaultTemplateRenderer) GetAsset(name string) ([]byte, error)

func (*DefaultTemplateRenderer) RegisterAssetsFunc

func (tr *DefaultTemplateRenderer) RegisterAssetsFunc(assetsFunc func(string) string)

func (*DefaultTemplateRenderer) RegisterCompositeDefaultTemplate

func (tr *DefaultTemplateRenderer) RegisterCompositeDefaultTemplate(name string, baseNames ...string) error

func (*DefaultTemplateRenderer) RegisterDefaultAssets

func (tr *DefaultTemplateRenderer) RegisterDefaultAssets(assets embed.FS, prefix string)

func (*DefaultTemplateRenderer) RegisterDefaultData

func (tr *DefaultTemplateRenderer) RegisterDefaultData(data map[string]interface{}) error

func (*DefaultTemplateRenderer) RegisterDefaultTemplates

func (tr *DefaultTemplateRenderer) RegisterDefaultTemplates(templates embed.FS, prefix string)

func (*DefaultTemplateRenderer) RegisterLinkFunc

func (tr *DefaultTemplateRenderer) RegisterLinkFunc(linkFunc func(string) string)

func (*DefaultTemplateRenderer) RenderTemplate

func (tr *DefaultTemplateRenderer) RenderTemplate(name string, data map[string]interface{}) (string, error)

type FieldConfig

type FieldConfig struct {
	Name                  string
	DisplayName           string
	FieldType             reflect.Type
	IncludeInListFetch    bool
	IncludeInListDisplay  bool
	IncludeInSearch       bool
	IncludeInInstanceView bool
	AddFormField          form.Field
	EditFormField         form.Field
}

type HandlerFunc

type HandlerFunc = func(interface{}) (uint, string)

type Instance

type Instance struct {
	InstanceID  interface{}
	Data        interface{}
	Model       *Model
	Permissions Permissions
}

func (*Instance) CreateCreateLog

func (i *Instance) CreateCreateLog(ctx interface{}) error

func (*Instance) CreateDeleteLog

func (i *Instance) CreateDeleteLog(ctx interface{}) error

func (*Instance) CreateUpdateLog

func (i *Instance) CreateUpdateLog(ctx interface{}, updates map[string]interface{}) error

func (*Instance) CreateViewLog

func (i *Instance) CreateViewLog(ctx interface{}) error
func (i *Instance) GetEditLink() string
func (i *Instance) GetFullEditLink() string
func (i *Instance) GetFullLink() string
func (i *Instance) GetLink() string

func (*Instance) GetRepr

func (i *Instance) GetRepr() string

type Model

type Model struct {
	Name        string
	DisplayName string
	PTR         interface{}
	App         *App
	Fields      []FieldConfig
	ORM         ORMIntegrator
}

func (*Model) CreateViewLog

func (m *Model) CreateViewLog(ctx interface{}) error

func (*Model) GetAddHandler

func (m *Model) GetAddHandler() HandlerFunc
func (m *Model) GetAddLink() string

func (*Model) GetEditHandler

func (m *Model) GetEditHandler() HandlerFunc
func (m *Model) GetFullAddLink() string
func (m *Model) GetFullLink() string

func (*Model) GetInstanceDeleteHandler

func (m *Model) GetInstanceDeleteHandler() HandlerFunc

func (*Model) GetInstanceViewHandler

func (m *Model) GetInstanceViewHandler() HandlerFunc
func (m *Model) GetLink() string

func (*Model) GetORM

func (m *Model) GetORM() ORMIntegrator

func (*Model) GetPrimaryKeyType

func (m *Model) GetPrimaryKeyType() (reflect.Type, error)

func (*Model) GetPrimaryKeyValue

func (m *Model) GetPrimaryKeyValue(instance interface{}) (interface{}, error)

func (*Model) GetViewHandler

func (m *Model) GetViewHandler() HandlerFunc

func (*Model) NewAddForm

func (m *Model) NewAddForm() (form.Form, error)

func (*Model) NewEditForm

func (m *Model) NewEditForm(instanceID interface{}) (form.Form, error)

type ModelAddForm

type ModelAddForm struct {
	forms.BaseForm
	Model *Model
}

func (*ModelAddForm) Save

func (f *ModelAddForm) Save(values map[string]form.HTMLType) (interface{}, error)

type ModelEditForm

type ModelEditForm struct {
	forms.BaseForm
	Model      *Model
	InstanceID interface{}
}

func (*ModelEditForm) Save

func (f *ModelEditForm) Save(values map[string]form.HTMLType) (interface{}, error)
type NavBarGenerator = func(ctx interface{}) NavBarItem
type NavBarItem struct {
	Name              string
	Link              string
	Bold              bool
	NavBarAppendSlash bool
}
func (i *NavBarItem) HTML() string

type ORMIntegrator

type ORMIntegrator interface {
	GetPrimaryKeyValue(model interface{}) (interface{}, error)
	GetPrimaryKeyType(model interface{}) (reflect.Type, error)
	FetchInstances(model interface{}) (interface{}, error)
	FetchInstancesOnlyFields(model interface{}, fields []string) (interface{}, error)
	FetchInstancesOnlyFieldWithSearch(model interface{}, fields []string, query string, searchFields []string) (interface{}, error)
	DeleteInstance(model interface{}, id interface{}) error
	FetchInstanceOnlyFields(model interface{}, id interface{}, fields []string) (interface{}, error)
	FetchInstance(model interface{}, id interface{}) (interface{}, error)
	CreateInstance(instance interface{}) error
	UpdateInstance(instance interface{}, primaryKey interface{}) error
	CreateInstanceOnlyFields(instance interface{}, fields []string) error
	UpdateInstanceOnlyFields(instance interface{}, fields []string, primaryKey interface{}) error
}

type PermissionFunc

type PermissionFunc func(PermissionRequest, interface{}) (bool, error)

func (PermissionFunc) HasAppReadPermission

func (p PermissionFunc) HasAppReadPermission(appName string, data interface{}) (bool, error)

func (PermissionFunc) HasInstanceDeletePermission

func (p PermissionFunc) HasInstanceDeletePermission(appName, modelName string, instanceID interface{}, data interface{}) (bool, error)

func (PermissionFunc) HasInstanceReadPermission

func (p PermissionFunc) HasInstanceReadPermission(appName, modelName string, instanceID interface{}, data interface{}) (bool, error)

func (PermissionFunc) HasInstanceUpdatePermission

func (p PermissionFunc) HasInstanceUpdatePermission(appName, modelName string, instanceID interface{}, data interface{}) (bool, error)

func (PermissionFunc) HasLogViewPermission

func (p PermissionFunc) HasLogViewPermission(data interface{}, logID interface{}) (bool, error)

func (PermissionFunc) HasModelCreatePermission

func (p PermissionFunc) HasModelCreatePermission(appName string, modelName string, data interface{}) (bool, error)

func (PermissionFunc) HasModelDeletePermission

func (p PermissionFunc) HasModelDeletePermission(appName string, modelName string, data interface{}) (bool, error)

func (PermissionFunc) HasModelReadPermission

func (p PermissionFunc) HasModelReadPermission(appName string, modelName string, data interface{}) (bool, error)

func (PermissionFunc) HasModelUpdatePermission

func (p PermissionFunc) HasModelUpdatePermission(appName string, modelName string, data interface{}) (bool, error)

func (PermissionFunc) HasPermission

func (p PermissionFunc) HasPermission(r PermissionRequest, data interface{}) (bool, error)

func (PermissionFunc) HasReadPermission

func (p PermissionFunc) HasReadPermission(data interface{}) (bool, error)

type PermissionRequest

type PermissionRequest struct {
	AppName    *string
	ModelName  *string
	InstanceID interface{}
	Action     *Action
}

type Permissions

type Permissions struct {
	Read   bool
	Create bool
	Update bool
	Delete bool
}

type TemplateRenderer

type TemplateRenderer interface {
	RenderTemplate(name string, data map[string]interface{}) (string, error)
	RegisterDefaultTemplates(templates embed.FS, prefix string)
	RegisterCompositeDefaultTemplate(name string, baseNames ...string) error
	RegisterDefaultData(data map[string]interface{}) error
	AddCustomTemplate(name string, tmplText string) error
	AddCustomCompositeTemplate(name string, baseNames ...string) error
	RegisterDefaultAssets(assets embed.FS, prefix string)
	AddCustomAsset(name string, asset []byte)
	GetAsset(name string) ([]byte, error)
	RegisterLinkFunc(func(string) string)
	RegisterAssetsFunc(func(string) string)
}

type UserFetchFunction

type UserFetchFunction = func(ctx interface{}) (userID interface{}, repr string, err error)

type WebIntegrator

type WebIntegrator interface {
	HandleRoute(method, path string, handler HandlerFunc)
	ServeAssets(prefix string, renderer TemplateRenderer)
	GetQueryParam(ctx interface{}, name string) string
	GetPathParam(ctx interface{}, name string) string
	GetRequestMethod(ctx interface{}) string
	GetFormData(ctx interface{}) map[string][]string
}

Jump to

Keyboard shortcuts

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