ระบบ Authentication & Authorization
- Custom Session-based Auth: สร้างระบบ Login และ Logout โดยใช้ Session (เก็บบันทึก Session ลงใน Database)
- ห้ามใช้ Library สำเร็จรูป: ห้ามใช้ Library สำหรับจัดการ Auth (เช่น NextAuth) ให้เขียน Logic การเข้าสู่ระบบด้วยตัวเอง
-
การจัดการรหัสผ่าน: อนุญาตให้ใช้
bcryptjsในการทำ Hashing Password เท่านั้นnpm install bcryptjs npm install -D @types/bcryptjs - Route Protection: ใช้ไฟล์
middleware.tsของ Next.js ในการป้องกัน Route หากผู้ใช้งานยังไม่ได้ Login ให้ทำการ Redirect กลับไปที่หน้า/login -
Role-based Permissions: เพิ่มฟิลด์
roleในตาราง Users โดยมี 2 ระดับคือ'admin'และ'user'- ผู้ใช้งานสามารถเรียกดูรายการสินค้า (get products) ที่สร้างโดยตัวเองได้
- หากเป็น admin จะมีสิทธิ์ลบข้อมูลสินค้าของผู้ใช้งานคนอื่นได้