09. Sakelar Fitur & Pengalihan Portal Internal

Ringkasan

Sakelar Fitur (Feature Toggles) memungkinkan administrator mengaktifkan atau me-nonaktifkan modul-modul utama aplikasi secara instan. Fitur yang paling menonjol adalah Landing Page Toggle (`landingPageEnabled`), yang dapat mengubah aplikasi dari situs pemasaran publik menjadi portal internal perusahaan yang privat.


Cara Kerja

Status sakelar diperiksa langsung oleh React Server Components pada rute utama (src/app/page.tsx):

mermaid
graph TD
    RootAccess["Pengunjung Mengakses http://localhost:3000/"] --> ServerCheck["Cek AppSettings.landingPageEnabled"]
    ServerCheck -->|true| ShowLanding["Render Landing Page Pemasaran"]
    ServerCheck -->|false| CheckAuth["Cek Sesi NextAuth Pengunjung"]
    CheckAuth -->|Sudah Login| ToDash["Pengalihan Otomatis ke /dashboard"]
    CheckAuth -->|Belum Login| ToLogin["Pengalihan Otomatis ke /login"]

Contoh Implementasi (src/app/page.tsx)

typescript
export default async function Home() {
  const settings = await db.appSettings.findFirst();
  const landingPageEnabled = settings?.landingPageEnabled ?? true;

  if (!landingPageEnabled) {
    const session = await auth();
    if (session) {
      redirect("/dashboard");
    } else {
      redirect("/login");
    }
  }

  // Render landing page...
}

Tabel Referensi Sakelar Fitur

Parameter SakelarField DatabaseDefaultFungsi
Landing PagelandingPageEnabledtrueSakelar Landing Page Publik vs. Portal Internal Tertutup
Payment GatewaypaymentEnabledtrueSakelar fitur pembayaran & simulator checkout
AI AssistantaiEnabledtrueSakelar fitur asisten virtual AI
Google OAuthgoogleOAuthEnabledfalseSakelar tombol login dengan Google
Pelacak AnalyticsanalyticsEnabledfalseSakelar pemicu skrip GA4, Plausible, & PostHog

Berkas Terkait

  • src/app/page.tsx — Rute utama penanggung jawab logika pengalihan rute portal internal
  • src/server/api/routers/app-settings.ts — Router tRPC untuk mutasi sakelar fitur
  • src/app/(admin)/settings/page.tsx — GUI Pengaturan Aplikasi