Auth
Login, role, dan password yang aman.
Auth sudah tersedia di core. Password di-hash dengan scrypt (parameter OWASP), dan sesi memakai session terenkripsi.
import { hashPassword, verifyPassword, fakeVerify, login, logout, currentUser, requireAuth, rateLimit, withMiddleware } from "zentara";
login(ctx, { id: user.id, role: user.role }); // setelah password cocok
logout(ctx);
export const middleware = [requireAuth()]; // seluruh file route wajib login
export const POST = withMiddleware([requireAuth({ roles: ["admin"] })], handler); // satu method saja
export const middleware = [rateLimit({ windowMs: 15 * 60_000, max: 10 })]; // anti brute-forcerequireAuth({ loadUser }) memuat user terbaru dari database di setiap request. Akibatnya:
- user yang dihapus otomatis ter-logout;
- perubahan role langsung berlaku.
Aplikasi contoh sudah menyediakan fitur-fitur berikut:
| Endpoint | Akses |
|---|---|
POST /api/auth/register · POST /api/auth/login · POST /api/auth/logout |
publik (rate limit 10×/15 menit) |
GET /api/auth/me |
wajib login |
GET /api/products?q=&maxHarga= · GET /api/products/:id |
publik |
POST /api/products · PUT/DELETE /api/products/:id |
khusus admin |
Pengaman bawaan pada login:
- pesan dan waktu respons sama untuk email yang tidak terdaftar maupun password salah (
fakeVerify); - hash password tidak pernah dikirim ke klien;
- hash lama otomatis diperbarui saat login (
needsRehash).