Admin
Role.ADMIN, mempromosikan pengguna, dan API admin.
TurboJet memakai enum Prisma Role (USER | ADMIN) pada user dan mengeksposnya sebagai field tambahan Better Auth. Pemeriksaan admin platform membandingkan dengan $Enums.Role.ADMIN — tidak ada matriks Permix admin.access di kit ini.
UI Admin
Navigasi Admin SaaS dan layar manajemen pengguna ada di monorepo
TurboJet penuh. Host marketing+docs ini mengekspos API admin di
/api/admin saat Anda memanggilnya dengan sesi admin.
Menetapkan role admin
Host ini tidak menyertakan CLI create:user. Untuk mempromosikan pengguna yang sudah ada:
- Jalankan Prisma Studio:
pnpm --filter @repo/database db:studio- Buka tabel
User, temukan pengguna, setelrolekeADMIN, lalu simpan.
Anda juga bisa mempromosikan atau menurunkan role lewat API admin setelah sudah punya admin (POST /api/admin/users/:userId/make-admin dan remove-admin).
Seed (packages/database/src/seed.ts) membuat pengguna terverifikasi yang sudah onboard, tetapi tidak menetapkan ADMIN secara default.
Melindungi route API admin
Router admin merangkai requireAuth lalu requireAdmin:
import { $Enums } from "@repo/database";
export const requireAdmin = createMiddleware<AuthEnv>(async (c, next) => {
const session = c.get("session");
if (!session || session.user.role !== $Enums.Role.ADMIN) {
fail(403, "Unauthorized");
}
await next();
});const adminGuard = [rateLimit("READ"), requireAuth, requireAdmin] as const;
const adminWriteGuard = [
rateLimit("WRITE"),
requireAuth,
requireAdmin,
] as const;Modul admin dapat list/search user, ban/unban, hapus, make/remove admin, dan membaca statistik. Lihat packages/api/src/modules/admin/.
Pola middleware lengkap: Melindungi endpoint API.