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 Sakelar | Field Database | Default | Fungsi |
|---|---|---|---|
| Landing Page | landingPageEnabled | true | Sakelar Landing Page Publik vs. Portal Internal Tertutup |
| Payment Gateway | paymentEnabled | true | Sakelar fitur pembayaran & simulator checkout |
| AI Assistant | aiEnabled | true | Sakelar fitur asisten virtual AI |
| Google OAuth | googleOAuthEnabled | false | Sakelar tombol login dengan Google |
| Pelacak Analytics | analyticsEnabled | false | Sakelar pemicu skrip GA4, Plausible, & PostHog |
Berkas Terkait
src/app/page.tsx — Rute utama penanggung jawab logika pengalihan rute portal internalsrc/server/api/routers/app-settings.ts — Router tRPC untuk mutasi sakelar fitursrc/app/(admin)/settings/page.tsx — GUI Pengaturan Aplikasi