TurboJet
Autentikasi

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:

  1. Jalankan Prisma Studio:
pnpm --filter @repo/database db:studio
  1. Buka tabel User, temukan pengguna, setel role ke ADMIN, 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:

packages/api/src/middleware/admin.ts
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();
});
packages/api/src/modules/admin/router.ts
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.

Terkait

Di halaman ini