setup

package
v0.0.0-...-91099b7 Latest Latest
Warning

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

Go to latest
Published: Oct 31, 2026 License: MIT Imports: 73 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// NavigationMenuCode is the default menu identifier for the admin sidebar.
	NavigationMenuCode = "admin_main"
	// SiteNavigationMenuCode is the default menu identifier for the public site navigation.
	SiteNavigationMenuCode = "site_main"
	// NavigationGroupMain is the parent node for primary navigation entries.
	NavigationGroupMain = NavigationMenuCode + ".nav-group-main"
	// NavigationGroupOthers groups secondary/utility links.
	NavigationGroupOthers = NavigationMenuCode + ".nav-group-others"
	// NavigationSectionContent wraps content-related modules (pages, posts, media).
	NavigationSectionContent = NavigationGroupMain + ".content"
	// NavigationSectionDashboard is the top-level dashboard link.
	NavigationSectionDashboard = NavigationGroupMain + ".dashboard"
	// NavigationSectionShop demonstrates a nested submenu.
	NavigationSectionShop = NavigationGroupMain + ".shop"
)
View Source
const (
	FeatureUserInvites      = "users.invite"
	FeaturePasswordReset    = "users.password_reset"
	FeatureSelfRegistration = "users.signup"
)

Variables

This section is empty.

Functions

func ConfigureRuntime

func ConfigureRuntime(cfg RuntimeConfig)

ConfigureRuntime applies setup runtime defaults.

func EnsureContentParentPermissions

func EnsureContentParentPermissions(ctx context.Context, menuSvc admin.CMSMenuService, menuCode, locale string) error

EnsureContentParentPermissions reconciles the persisted Content parent permissions so newly introduced content surfaces remain visible without forcing a full menu reset.

func EnsureDashboardFirst

func EnsureDashboardFirst(ctx context.Context, menuSvc admin.CMSMenuService, basePath, menuCode, locale string) error

EnsureDashboardFirst updates persisted menu item positions so Dashboard renders before Content. This is useful for persistent CMS backends where module menu items are only inserted once.

func EnsureDashboardFirstWithOptions

func EnsureDashboardFirstWithOptions(ctx context.Context, menuSvc admin.CMSMenuService, basePath, menuCode, locale string, opts EnsureDashboardFirstOptions) error

EnsureDashboardFirstWithOptions updates persisted menu ordering with optional content-parent tuning.

func ExampleManagedNavigationExclusions

func ExampleManagedNavigationExclusions(menuCode string) []quickstart.NavigationManagedExclusion

func LoadSeedGroup

func LoadSeedGroup(ctx context.Context, client *persistence.Client, cfg SeedConfig, group SeedGroup) error

LoadSeedGroup loads fixtures for a specific group (users, cms).

func NewDashboardRenderer

func NewDashboardRenderer(opts ...quickstart.DashboardRendererOption) (admin.DashboardRenderer, error)

NewDashboardRenderer creates a template-based dashboard renderer

func NewGoUsersActivityAdapter

func NewGoUsersActivityAdapter(sink types.ActivitySink, repo types.ActivityRepository) admin.ActivitySink

NewGoUsersActivityAdapter bridges go-users activity sink/repo into admin.

func NewMediaPanelBuilder

func NewMediaPanelBuilder(store *stores.MediaStore) *admin.PanelBuilder

NewMediaPanelBuilder creates a panel builder for media

func NewPagesPanelBuilder

func NewPagesPanelBuilder(store stores.PageRepository) *admin.PanelBuilder

NewPagesPanelBuilder creates a panel builder for pages

func NewPostsPanelBuilder

func NewPostsPanelBuilder(store stores.PostRepository) *admin.PanelBuilder

NewPostsPanelBuilder creates a panel builder for posts

func NewSecureLinkManager

func NewSecureLinkManager() (userstypes.SecureLinkManager, error)

NewSecureLinkManager builds a securelink manager for onboarding flows.

func NewUserPanelBuilder

func NewUserPanelBuilder(store *stores.UserStore) *admin.PanelBuilder

NewUserPanelBuilder creates a panel builder for users

func NewUserProfilesPanelBuilder

func NewUserProfilesPanelBuilder(store *stores.UserProfileStore) *admin.PanelBuilder

NewUserProfilesPanelBuilder creates a panel builder for user profiles.

func PasswordPolicyHints

func PasswordPolicyHints() []string

PasswordPolicyHints returns UI hints for password requirements.

func RegisterSeedModels

func RegisterSeedModels()

RegisterSeedModels registers Bun models used by fixture files.

func RegisterSeedModelsOnDB

func RegisterSeedModelsOnDB(db *bun.DB)

RegisterSeedModelsOnDB ensures seed models are registered for a specific Bun DB.

func RemoveLegacyTranslationToolsMenuItems

func RemoveLegacyTranslationToolsMenuItems(ctx context.Context, menuSvc admin.CMSMenuService, menuCode, locale string) error

RemoveLegacyTranslationToolsMenuItems removes translation links previously seeded under Tools. Translation navigation is rendered via the dedicated Translations menu in the UI.

func RemovePrimarySettingsMenuItems

func RemovePrimarySettingsMenuItems(ctx context.Context, menuSvc admin.CMSMenuService, menuCode, locale string) error

RemovePrimarySettingsMenuItems removes settings links from a primary menu. This keeps examples that use a dedicated utility menu from showing duplicates.

func ResolveUsersDSN

func ResolveUsersDSN() string

ResolveUsersDSN returns the SQLite DSN shared with the rest of the example (CMS).

func SeedAdminNavigation

func SeedAdminNavigation(ctx context.Context, menuSvc admin.CMSMenuService, cfg admin.Config, modules []admin.Module, gates featureGates, isDev bool) error

SeedAdminNavigation converges the example admin navigation menu so parent scaffolding, ordering, and module-contributed items remain deterministic across restarts.

It delegates convergence to quickstart generated navigation reconciliation so legacy example-only specs cannot prune quickstart-owned rows from a divergent expected plan.

func SeedUsers

func SeedUsers(ctx context.Context, deps stores.UserDependencies, preferenceRepo *preferences.Repository) error

SeedUsers inserts the demo users into SQLite and seeds preferences.

func SetupActivityWithGoUsers

func SetupActivityWithGoUsers() admin.ActivitySink

SetupActivityWithGoUsers provisions a go-users-compatible activity sink. It returns an admin.ActivitySink that logs to a go-users ActivitySink/Repository while retaining the admin UI fallback buffer via ActivitySinkAdapter.

func SetupAuth

SetupAuth wires go-auth middleware and authorizer with the admin orchestrator. It returns the admin authenticator adapter, the underlying RouteAuthenticator, the Auther, and the context key used for the auth cookie.

func SetupDashboard

func SetupDashboard(adm *admin.Admin, dataStores *stores.DataStores, basePath string, placements quickstart.PlacementConfig)

SetupDashboard configures dashboard widgets for the admin panel

func SetupNavigation

func SetupNavigation(ctx context.Context, menuSvc admin.CMSMenuService, basePath, menuCode, locale string) error

SetupNavigation seeds the CMS menu service with grouped, translatable navigation.

func SetupPersistentCMS

func SetupPersistentCMS(ctx context.Context, defaultLocale, dsn string) (admin.CMSOptions, error)

SetupPersistentCMS wires a go-cms container backed by Bun/SQLite and applies migrations. DSN falls back to a temp file (under /tmp) when none is provided and can be overridden via CONTENT_DATABASE_DSN (preferred) or CMS_DATABASE_DSN to keep env parity with the existing example.

func SetupPersistentWorkflowRuntime

func SetupPersistentWorkflowRuntime(ctx context.Context, dsn string) (coreadmin.WorkflowRuntime, error)

SetupPersistentWorkflowRuntime wires a Bun-backed workflow runtime on the same DSN used by persistent CMS mode and applies workflow runtime migrations.

func SetupSettings

func SetupSettings(adm *admin.Admin)

SetupSettings configures settings definitions for the admin panel.

func SetupSettingsWithOptions

func SetupSettingsWithOptions(adm *admin.Admin)

SetupSettingsWithOptions swaps the settings backend to the go-options adapter.

Types

type ActivityFeedWidgetData

type ActivityFeedWidgetData struct {
	Entries []admin.ActivityEntry `json:"entries"`
}

type AuthOption

type AuthOption func(*authOptions)

AuthOption configures optional demo auth behavior.

func WithDefaultScope

func WithDefaultScope(tenantID, orgID string) AuthOption

WithDefaultScope injects tenant/org metadata into demo JWTs when available.

func WithPermissionResolverCacheTTL

func WithPermissionResolverCacheTTL(ttl time.Duration) AuthOption

WithPermissionResolverCacheTTL overrides resolver cache TTL (cross-request cache).

type ChartWidgetData

type ChartWidgetData struct {
	ChartType       string         `json:"chart_type"`
	Title           string         `json:"title"`
	Subtitle        string         `json:"subtitle,omitempty"`
	Theme           string         `json:"theme"`
	ChartAssetsHost string         `json:"chart_assets_host"`
	ChartOptions    map[string]any `json:"chart_options"`
	FooterNote      string         `json:"footer_note,omitempty"`
}

type Content

type Content struct {
	bun.BaseModel `bun:"table:contents"`

	ID               uuid.UUID `bun:",pk,type:uuid" json:"id"`
	ContentTypeID    uuid.UUID `bun:"content_type_id,type:uuid" json:"content_type_id"`
	CurrentVersion   int       `bun:"current_version" json:"current_version"`
	PublishedVersion int       `bun:"published_version" json:"published_version"`
	Status           string    `bun:"status" json:"status"`
	Slug             string    `bun:"slug" json:"slug"`
	EnvironmentID    uuid.UUID `bun:"environment_id,type:uuid" json:"environment_id"`
	CreatedBy        uuid.UUID `bun:"created_by,type:uuid" json:"created_by"`
	UpdatedBy        uuid.UUID `bun:"updated_by,type:uuid" json:"updated_by"`
	CreatedAt        time.Time `bun:"created_at" json:"created_at"`
	UpdatedAt        time.Time `bun:"updated_at" json:"updated_at"`
}

Content mirrors cms contents for environment-scoped fixture loading.

type ContentStatsWidgetData

type ContentStatsWidgetData struct {
	Type      string `json:"type"`
	StatType  string `json:"stat_type"`
	Published int    `json:"published"`
	Draft     int    `json:"draft"`
	Scheduled int    `json:"scheduled"`
}

type ContentType

type ContentType struct {
	bun.BaseModel `bun:"table:content_types"`

	ID            uuid.UUID      `bun:",pk,type:uuid" json:"id"`
	Name          string         `bun:"name" json:"name"`
	Slug          string         `bun:"slug" json:"slug"`
	Description   string         `bun:"description" json:"description"`
	Schema        map[string]any `bun:"schema,type:jsonb" json:"schema"`
	Capabilities  map[string]any `bun:"capabilities,type:jsonb" json:"capabilities"`
	Status        string         `bun:"status" json:"status"`
	EnvironmentID uuid.UUID      `bun:"environment_id,type:uuid" json:"environment_id"`
	CreatedAt     time.Time      `bun:"created_at" json:"created_at"`
	UpdatedAt     time.Time      `bun:"updated_at" json:"updated_at"`
}

ContentType mirrors cms content_types for environment-scoped fixture loading.

type DataConsoleAccess

type DataConsoleAccess struct {
	Config      coreadmin.Config
	Users       stores.UserDependencies
	Environment string
	Enabled     func() bool
}

DataConsoleAccess reloads account status, scope and role assignments rather than retaining cookie permissions or the main authorizer's cached grants.

func (DataConsoleAccess) Authorize

func (a DataConsoleAccess) Authorize(ctx context.Context, p data.Principal, request data.AccessRequest) error

func (DataConsoleAccess) AuthorizeOrdersReport

func (a DataConsoleAccess) AuthorizeOrdersReport(ctx context.Context) (data.Principal, error)

func (DataConsoleAccess) Identity

func (DataConsoleAccess) InsightAuthorizationRevision

func (a DataConsoleAccess) InsightAuthorizationRevision(ctx context.Context, p data.Principal) (string, error)

func (DataConsoleAccess) Resolve

type DatabasesRuntimeConfig

type DatabasesRuntimeConfig struct {
	CMSDSN     string `json:"cmsdsn"`
	ContentDSN string `json:"content_dsn"`
}

DatabasesRuntimeConfig controls DSN values consumed by setup package code.

type EnsureDashboardFirstOptions

type EnsureDashboardFirstOptions struct {
	// EnsureContentParentPath controls whether a path is injected into the Content parent target
	// when it is missing. Keeping it false allows the parent to remain non-clickable.
	EnsureContentParentPath bool `json:"ensure_content_parent_path"`
}

EnsureDashboardFirstOptions customizes dashboard/content menu reconciliation behavior.

type GoUsersPreferencesStore

type GoUsersPreferencesStore = quickstart.GoUsersPreferencesStore

GoUsersPreferencesStore bridges go-users preferences into the admin preferences contract.

func NewGoUsersPreferencesStore

func NewGoUsersPreferencesStore(repo types.PreferenceRepository) (*GoUsersPreferencesStore, error)

NewGoUsersPreferencesStore builds a preferences store backed by go-users.

type LegacyChartSampleWidgetData

type LegacyChartSampleWidgetData struct {
	Disabled bool `json:"disabled"`
}
type NavigationIntegrityReport struct {
	MenuCode        string `json:"menu_code"`
	Locale          string `json:"locale"`
	NodeCount       int    `json:"node_count"`
	RootCount       int    `json:"root_count"`
	OrphanCount     int    `json:"orphan_count"`
	CycleCount      int    `json:"cycle_count"`
	SelfParentCount int    `json:"self_parent_count"`
	RepairedCount   int    `json:"repaired_count"`
}

NavigationIntegrityReport captures lightweight health metrics for a persisted menu tree.

func AnalyzeNavigationIntegrity

func AnalyzeNavigationIntegrity(items []admin.MenuItem, menuCode, locale string) NavigationIntegrityReport

AnalyzeNavigationIntegrity summarizes the current in-memory navigation tree shape.

func LogNavigationIntegritySummary

func LogNavigationIntegritySummary(ctx context.Context, menuSvc admin.CMSMenuService, menuCode, locale string) (NavigationIntegrityReport, error)

LogNavigationIntegritySummary emits a compact startup health summary for persisted navigation.

func RepairNavigationIntegrity

func RepairNavigationIntegrity(ctx context.Context, menuSvc admin.CMSMenuService, menuCode, locale string) (NavigationIntegrityReport, error)

RepairNavigationIntegrity repairs known menu corruption patterns and returns a health report.

func (r NavigationIntegrityReport) HasIssues() bool
type NavigationRuntimeConfig struct {
	ResetMenu bool `json:"reset_menu"`
	Debug     bool `json:"debug"`
	DebugLog  bool `json:"debug_log"`
}

NavigationRuntimeConfig controls navigation seed/debug behavior.

type OnboardingNotifier

type OnboardingNotifier struct {
	Notifications admin.NotificationService `json:"notifications"`
	Activity      types.ActivitySink        `json:"activity"`
}

OnboardingNotifier fans out invite/reset activity into notifications.

func SetupUsers

SetupUsers wires a go-users stack against the shared SQLite DB (runs migrations).

func SetupUsersWithMigrations

SetupUsersWithMigrations wires a go-users stack with a custom migrations registrar.

func (*OnboardingNotifier) HandleActivity

func (n *OnboardingNotifier) HandleActivity(ctx context.Context, record types.ActivityRecord)

HandleActivity attaches to go-users hooks to emit example notifications.

type Page

type Page struct {
	bun.BaseModel `bun:"table:pages"`

	ID               uuid.UUID `bun:",pk,type:uuid" json:"id"`
	ContentID        uuid.UUID `bun:"content_id,type:uuid" json:"content_id"`
	CurrentVersion   int       `bun:"current_version" json:"current_version"`
	PublishedVersion int       `bun:"published_version" json:"published_version"`
	TemplateID       uuid.UUID `bun:"template_id,type:uuid" json:"template_id"`
	Slug             string    `bun:"slug" json:"slug"`
	Status           string    `bun:"status" json:"status"`
	EnvironmentID    uuid.UUID `bun:"environment_id,type:uuid" json:"environment_id"`
	CreatedBy        uuid.UUID `bun:"created_by,type:uuid" json:"created_by"`
	UpdatedBy        uuid.UUID `bun:"updated_by,type:uuid" json:"updated_by"`
	CreatedAt        time.Time `bun:"created_at" json:"created_at"`
	UpdatedAt        time.Time `bun:"updated_at" json:"updated_at"`
}

Page mirrors cms pages for environment-scoped fixture loading.

type QuickActionWidgetItem

type QuickActionWidgetItem struct {
	Label       string `json:"label"`
	URL         string `json:"url"`
	Icon        string `json:"icon,omitempty"`
	Method      string `json:"method,omitempty"`
	Description string `json:"description,omitempty"`
}

type QuickActionsWidgetData

type QuickActionsWidgetData struct {
	Actions []QuickActionWidgetItem `json:"actions"`
}

type RegistrationConfig

type RegistrationConfig struct {
	Mode      RegistrationMode `json:"mode"`
	Allowlist []string         `json:"allowlist"`
}

RegistrationConfig controls self-registration guardrails.

func DefaultRegistrationConfig

func DefaultRegistrationConfig() RegistrationConfig

DefaultRegistrationConfig returns a closed registration mode with a sample allowlist.

func (RegistrationConfig) AllowsEmail

func (c RegistrationConfig) AllowsEmail(email string) bool

AllowsEmail reports whether the email is permitted under the current allowlist.

type RegistrationMode

type RegistrationMode string

RegistrationMode governs whether self-registration is open, restricted, or disabled.

const (
	RegistrationClosed    RegistrationMode = "closed"
	RegistrationAllowlist RegistrationMode = "allowlist"
	RegistrationOpen      RegistrationMode = "open"
)

type RuntimeConfig

type RuntimeConfig struct {
	AppEnv                     string                  `json:"app_env"`
	Scope                      quickstart.ScopeConfig  `json:"scope"`
	Seeds                      SeedConfig              `json:"seeds"`
	Navigation                 NavigationRuntimeConfig `json:"navigation"`
	SecureLink                 SecureLinkRuntimeConfig `json:"secure_link"`
	PasswordPolicyHints        []string                `json:"password_policy_hints"`
	PermissionResolverCacheTTL time.Duration           `json:"permission_resolver_cache_ttl"`
	Databases                  DatabasesRuntimeConfig  `json:"databases"`
	CMSRuntimeLogs             *bool                   `json:"cms_runtime_logs"`
}

RuntimeConfig controls setup package runtime defaults.

type SecureLinkRuntimeConfig

type SecureLinkRuntimeConfig struct {
	BasePath   string        `json:"base_path"`
	BaseURL    string        `json:"base_url"`
	SigningKey string        `json:"signing_key"`
	QueryKey   string        `json:"query_key"`
	AsQuery    bool          `json:"as_query"`
	Expiration time.Duration `json:"expiration"`
}

SecureLinkRuntimeConfig controls securelink defaults for setup/auth flows.

type SecureLinkUIConfig

type SecureLinkUIConfig struct {
	QueryKey string `json:"query_key"`
	AsQuery  bool   `json:"as_query"`
}

SecureLinkUIConfig exposes link parsing details for UI templates.

func ResolveSecureLinkUIConfig

func ResolveSecureLinkUIConfig() SecureLinkUIConfig

ResolveSecureLinkUIConfig resolves secure link UI parsing settings from runtime config.

type SeedConfig

type SeedConfig struct {
	Enabled          bool `json:"enabled"`
	Truncate         bool `json:"truncate"`
	IgnoreDuplicates bool `json:"ignore_duplicates"`
}

SeedConfig controls fixture loading behavior.

func DefaultSeedConfig

func DefaultSeedConfig() SeedConfig

DefaultSeedConfig returns baseline fixture loading behavior.

func ResolveSeedConfig

func ResolveSeedConfig(cfg SeedConfig, production bool) SeedConfig

ResolveSeedConfig normalizes seed settings for the current runtime profile.

type SeedGroup

type SeedGroup string

SeedGroup scopes which fixture folder to load.

const (
	SeedGroupUsers SeedGroup = "users"
	SeedGroupCMS   SeedGroup = "cms"
)

type SeedUserProfile

type SeedUserProfile struct {
	bun.BaseModel `bun:"table:user_profiles"`

	UserID      uuid.UUID      `bun:"user_id,pk,type:uuid" json:"user_id"`
	DisplayName string         `bun:"display_name" json:"display_name"`
	AvatarURL   string         `bun:"avatar_url" json:"avatar_url"`
	Locale      string         `bun:"locale" json:"locale"`
	Timezone    string         `bun:"timezone" json:"timezone"`
	Bio         string         `bun:"bio" json:"bio"`
	Contact     map[string]any `bun:"contact,type:jsonb" json:"contact"`
	Metadata    map[string]any `bun:"metadata,type:jsonb" json:"metadata"`
	TenantID    uuid.UUID      `bun:"tenant_id,type:uuid" json:"tenant_id"`
	OrgID       uuid.UUID      `bun:"org_id,type:uuid" json:"org_id"`
	CreatedAt   time.Time      `bun:"created_at" json:"created_at"`
	CreatedBy   uuid.UUID      `bun:"created_by,type:uuid" json:"created_by"`
	UpdatedAt   time.Time      `bun:"updated_at" json:"updated_at"`
	UpdatedBy   uuid.UUID      `bun:"updated_by,type:uuid" json:"updated_by"`
}

SeedUserProfile mirrors the user_profiles table for fixture loading.

type StorageStatsWidgetData

type StorageStatsWidgetData struct {
	Type       string `json:"type"`
	StatType   string `json:"stat_type"`
	Used       string `json:"used"`
	Total      string `json:"total"`
	Percentage int    `json:"percentage"`
}

type SystemHealthWidgetData

type SystemHealthWidgetData struct {
	Status     string `json:"status"`
	Uptime     string `json:"uptime"`
	APILatency string `json:"api_latency"`
	DBStatus   string `json:"db_status"`
}

type UserMigrationsPhase

type UserMigrationsPhase int

UserMigrationsPhase identifies which migrations should be registered.

const (
	UserMigrationsAuth UserMigrationsPhase = iota
	UserMigrationsCore
)

type UserMigrationsRegistrar

type UserMigrationsRegistrar func(*persistence.Client, UserMigrationsPhase) error

UserMigrationsRegistrar registers migrations for the given phase.

func LegacyUserMigrations

func LegacyUserMigrations() UserMigrationsRegistrar

LegacyUserMigrations returns a registrar that preserves historical migration names.

func QuickstartUserMigrations

func QuickstartUserMigrations() UserMigrationsRegistrar

QuickstartUserMigrations returns a registrar that uses quickstart defaults.

type UserProfileOverviewWidgetData

type UserProfileOverviewWidgetData struct {
	Values map[string]string `json:"values"`
}

type UserStatsWidgetData

type UserStatsWidgetData struct {
	Type     string `json:"type"`
	StatType string `json:"stat_type"`
	Total    int    `json:"total"`
	Active   int    `json:"active"`
	NewToday int    `json:"new_today"`
	Trend    string `json:"trend"`
	TrendUp  bool   `json:"trend_up"`
}

Jump to

Keyboard shortcuts

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