Skip to content

feat(customization): PageBuilder runtime for application-specific auth pages#166

Merged
windischb merged 1 commit into
developfrom
feat/page-builder-runtime
Jul 22, 2026
Merged

feat(customization): PageBuilder runtime for application-specific auth pages#166
windischb merged 1 commit into
developfrom
feat/page-builder-runtime

Conversation

@windischb

Copy link
Copy Markdown
Contributor

@

What

Renders Realm- and Application-authored PageBuilder schemas at runtime for the login, password-forgot, and logout auth pages, plus the Application Settings → Pages UI, page inheritance (Realm → Application), and public effective schemas in app-info.

Built against the @cocoar/vue-page-builder v2.17 contract; all @cocoar/vue-* packages bumped to 2.17.1.

Feature flag — safe to merge

Everything is gated behind AppSettings.Features.PageBuilder (operator-level, defaults to false). While off: editor, API, app-info, and runtime schemas are all masked; stored data is retained. Merging to develop ships it dark.

Non-obvious behavior

  • Application page schemas are separately managed and intentionally absent from ApplicationSettingsDto — regular settings replacement preserves ApplicationSettings.Pages (pinned by an integration test).
  • Application DELETE /pages/{slug} = "inherit the Realm slot"; Realm DELETE = "use the fixed host fallback".
  • Tenant schemas may invoke only host-owned allowlisted actions/elements. MFA choice, TOTP/email-OTP, secure setup, and passwordless-policy handling stay in fixed UI. Invalid/unavailable schemas and ?safemode=1 fall back to the fixed view.
  • Local/federated sign-out lands on /logged-out so the logout slot has a real runtime surface.

Verified locally (Chrome DevTools)

  • Flag on → app-info exposes Features.PageBuilder:true; editor visible under /platform/customization/pages.
  • Full round-trip: author schema → save → persisted (app-info + ANGEPASST badge) → runtime render on /login.
  • Wrong credentials on the schema-rendered login → error banner surfaces.
  • Functional login through the schema form → dashboard.
  • Responsive at desktop + mobile (390px); ?safemode=1 → fixed fallback.
  • Built a split-screen layout (Stack direction: row) to confirm non-trivial layouts render.
  • Reset-to-default persists (Pages:{}); no console errors.

Test coverage

  • Modgud.Tests.Unit/Api/Features/Admin/AppSettingsEndpointsTests.cs
  • Modgud.Tests.Unit/Applications/EffectiveSettingsTests.cs
  • Modgud.Api.Tests/Authorization/PageBuilderFeatureFlagTests.cs

Docs: docs/platform/pages.md.

🤖 Generated with Claude Code
@

@windischb
windischb merged commit bed060f into develop Jul 22, 2026
8 checks passed
@windischb
windischb deleted the feat/page-builder-runtime branch July 22, 2026 06:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant