Documentation
¶
Overview ¶
Package logadmin provides a standalone log admin interface following the folder-per-controller pattern. Each controller is in its own subfolder and handles its own views and AJAX data.
This module is modeled on github.com/dracory/shopadmin and github.com/dracory/blogadmin.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( // ErrStoreRequired is returned when Store is not provided ErrStoreRequired = errors.New("log store is required") // ErrLoggerRequired is returned when Logger is not provided ErrLoggerRequired = errors.New("logger is required") )
Common errors
Functions ¶
This section is empty.
Types ¶
type AdminInterface ¶
type AdminInterface interface {
Handle(w http.ResponseWriter, r *http.Request)
}
AdminInterface defines the interface for the log admin
func New ¶
func New(opts AdminOptions) (AdminInterface, error)
New creates a new log admin instance. Returns ErrStoreRequired if Store is nil, ErrLoggerRequired if Logger is nil.
type AdminOptions ¶
type AdminOptions struct {
// Store is the logstore.StoreInterface (required)
Store logstore.StoreInterface
// Logger is required
Logger *slog.Logger
// FuncLayout is an optional function to render the admin interface
// inside your own layout (branding, menus, etc.). It receives the
// request and response writer so the host project can access request
// context (auth user, locale, etc.) when rendering the layout.
FuncLayout func(w http.ResponseWriter, r *http.Request, title string, body string, options struct {
Styles []string
StyleURLs []string
Scripts []string
ScriptURLs []string
}) string
// AdminHomeURL is the URL for the admin home page (default: "/admin")
AdminHomeURL string
// LogAdminURL is the base URL for log admin (default: "/admin/logs")
LogAdminURL string
// FileManagerURL is the URL for the file manager (optional)
FileManagerURL string
// AuthUserID returns the authenticated user ID from the request.
// If it returns "", the user is treated as unauthenticated.
AuthUserID func(r *http.Request) string
}
AdminOptions contains all dependencies and configuration for the log admin.
Store and Logger replace the in-repo version's Registry field (which was app.AppInterface). This matches the shopadmin/blogadmin convention where stores are passed directly.
FuncLayout is an optional function to render the admin interface inside your own layout (branding, menus, etc.). It receives the request and response writer so the host project can access request context (auth user, locale, etc.) when rendering the layout. If nil, a default bare-bones HTML page is used (Bootstrap + Vue CDN). Uses anonymous struct to match shopadmin/blogadmin exactly, so consumers can reuse their shopadmin/blogadmin layout function for logadmin.