EduShade
Auth Module

Auth Page Customization

Tenant-controlled branding image displayed on the login, register, and other auth pages

Auth Page Customization

Each tenant can upload a custom auth page image that appears on every authentication screen — login, register, forgot password, reset password, verify email, verify phone, and complete profile. It's a simple but effective branding lever: same product, your imagery.

Where it Appears

The image fills the right-hand panel of the auth form layout on medium-and-larger viewports. On mobile (< md), the image panel is hidden so the form takes the full width.

Affected pages (anything wrapped in AuthFormLayout):

PagePath
Login/auth/login
Register/auth/register
Forgot Password/auth/forgot-password
Reset Password/auth/reset-password
Verify Email/auth/verify-email
Verify Phone/auth/verify-phone
Complete Profile/auth/complete-profile

If no image is configured, the layout falls back to /placeholder.svg.

Configuring the Image (Admin)

  1. Sign in as an admin with platform settings permission.
  2. Go to Admin → Settings → Media.
  3. Find the Auth Page Image field.
  4. Upload an image (any image/* type).
  5. Save.

The change takes effect on the next page load — there is no per-user cache.

Image Recommendations

  • The image is rendered with object-cover inside a tall, narrow panel — pick artwork that crops well vertically and doesn't depend on visible edges.
  • In dark mode the image is auto-dimmed (brightness-[0.2] grayscale) so detail is muted intentionally — use a high-contrast image if you want shapes still readable in the dark.
  • Aim for landscape-to-portrait ratios in the 3:4 to 1:1 range to look good across breakpoints.
  • Use a CDN-friendly format (WebP or optimized JPEG) — the image is loaded via next/image with fill and responsive sizes for performance.

Where it Lives in the Stack

  • Setting field: media.auth_page_image (string URL, optional)
  • Backend type: MediaSettings.AuthPageImage *string in common/pkg/tenant/settings.go
  • Public read endpoint: GET /v1/public/tenant/settings (no auth required — needed because the auth pages themselves are unauthenticated)
  • Frontend consumer: src/components/auth/auth-form-layout.tsx, via the usePublicTenantSettings() hook
  • Admin UI definition: src/lib/settings/config.ts (Media section, field id auth_page_image)

Multi-Tenancy

The image is per-tenant. Each tenant's auth pages render that tenant's configured image, resolved from the same public tenant settings endpoint that drives the login form's password policy and tenant name.

Troubleshooting

IssueSolution
Image not appearing after uploadHard-refresh the auth page; verify the upload succeeded in Admin → Settings → Media and that a non-empty URL is saved
Image looks washed out in dark modeThis is by design — the layout applies brightness-[0.2] grayscale in dark mode. Pick a higher-contrast image or accept the subdued look
Image only shows on desktopCorrect — the image panel is hidden on mobile (< md breakpoint) so the form has full width
Old image still showingThe browser/CDN may have cached it. Re-upload with a different filename or wait for cache expiry
Want different images per pageNot supported today — there is one auth_page_image per tenant covering all auth pages

On this page