ระบบพร้อมใช้งาน  ·  Version 0.1.0

ระบบจัดการโรงเรียน
ครบวงจร

Authentication + RBAC 6 ระดับสำหรับโรงเรียน รองรับ Login ด้วย Username/Password และ Google OAuth 2.0 พร้อมระบบโมดูลที่ยืดหยุ่น

โรงเรียน
ผู้ใช้งาน
นักเรียน
โมดูล
38/38
Tests ผ่าน
เข้าสู่ระบบสำเร็จ
admin@smartschool.com
localhost:3001 / dashboard
หน้าหลัก
นักเรียน
เช็คชื่อ
สุขภาพ
พฤติกรรม
รายงาน
SA
System Admin
Superadmin
หน้าหลัก
ภาคเรียนที่ 1 / 2569
248
นักเรียนทั้งหมด
32
ครูและบุคลากร
97%
อัตราเข้าเรียน
ชื่อ-นามสกุล
ชั้น
บทบาท
สมชาย ใจดี
ม.5/2
นักเรียน
วิภา รักเรียน
ครู
ประยุทธ สอนดี
Executive
System Admin
Superadmin
RBAC Active
25 permissions · 12 modules

ทุกอย่างที่โรงเรียนต้องการ

ออกแบบมาเพื่อรองรับการทำงานจริงของโรงเรียน ตั้งแต่ authentication จนถึงการจัดการสิทธิ์แบบ granular

Authentication ปลอดภัย

Login ด้วย Password (bcrypt) หรือ Google OAuth 2.0 พร้อม JWT Refresh Token rotation และ account lockout อัตโนมัติ

RBAC 6 ระดับ

สิทธิ์ผ่าน canAccessModule() และ hasPermission() ทุก route ไม่มีการ hardcode role check พร้อม superadmin bypass

Dynamic Modules

เพิ่ม ลบ เปิด/ปิดโมดูลได้โดยไม่ต้องแก้โค้ด Angular MenuService โหลดเมนูจาก API ตาม role อัตโนมัติ

บริบทการศึกษา

โรงเรียน → ปีการศึกษา → ภาคเรียน 1/2/ตลอดปี ทุกข้อมูลผูก semester_id + student_id + recorded_by ครบ

Activity Logs

บันทึกทุก action สำคัญ auth/data/admin/system พร้อม IP, user-agent, endpoint และ status ใน activity_logs

Unit + Integration Tests

38 unit tests ผ่าน 100% ด้วย node:test พร้อม integration tests (supertest + mock DB) ครอบคลุมทุก endpoint

บทบาทผู้ใช้ 6 ระดับ

แต่ละระดับออกแบบมาเพื่อการทำงานจริง ครูและนักเรียนแยกตารางกันชัดเจน

1
Superadmin
สิทธิ์เต็มทุกอย่าง ข้ามการตรวจสิทธิ์ได้
2
Admin
จัดการผู้ใช้และระบบทั่วไป
3
Executive
ดูรายงานและสถิติภาพรวม
4
Teacher
จัดการชั้นเรียน บันทึกคะแนน
5
Student
ดูข้อมูลตัวเอง / บุตรหลาน
6
Guest
ดูข้อมูลสาธารณะเท่านั้น

REST API Endpoints

Base URL:

กำลังตรวจสอบ server...
🏫
โรงเรียน (Active)
👥
ผู้ใช้งาน (Active)
🎓
นักเรียน (Active)
📦
โมดูล (Active)
Activity 24 ชั่วโมง
🕐
เวลาเซิร์ฟเวอร์
MethodPathคำอธิบายAuth
🔐 Authentication
POST/auth/loginเข้าสู่ระบบ email + password → JWT
POST/auth/googleเข้าสู่ระบบด้วย Google ID token
POST/auth/refreshต่ออายุ Access Token (rotation)
POST/auth/logoutออกจากระบบ / revoke refresh token
GET/auth/meข้อมูลผู้ใช้ + roles + moduleCodes🔒 Bearer
GET/auth/modulesโมดูลที่มีสิทธิ์ view (school-aware)🔒 Bearer
PATCH/auth/profileแก้ไขโปรไฟล์ตัวเอง (ชื่อ, เบอร์, รหัสผ่าน)🔒 Bearer
POST/auth/profile/avatarอัปโหลดรูปโปรไฟล์ (base64)🔒 Bearer
POST/auth/profile/logoอัปโหลดโลโก้โรงเรียน (base64)🔒 Admin
👤 Admin — จัดการผู้ใช้
GET/admin/usersรายชื่อผู้ใช้ + login_max_attempts🔒 Admin
POST/admin/usersเพิ่มผู้ใช้ใหม่🔒 Admin
PATCH/admin/users/:idแก้ไขข้อมูลผู้ใช้🔒 Admin
POST/admin/users/:id/suspendเปิด/ปิดบัญชี (toggle)🔒 Admin
POST/admin/users/:id/lockล็อก/ปลดล็อกบัญชี (admin)🔒 Admin
POST/admin/users/:id/reset-passwordรีเซ็ตรหัสผ่าน🔒 Admin
DELETE/admin/users/:idลบผู้ใช้🔒 Admin
POST/admin/users/importนำเข้าผู้ใช้ bulk (CSV)🔒 Admin
🎓 Admin — จัดการนักเรียน
GET/admin/studentsรายชื่อนักเรียน🔒 Admin
POST/admin/studentsเพิ่มนักเรียนใหม่🔒 Admin
PATCH/admin/students/:stdNoแก้ไขข้อมูลนักเรียน🔒 Admin
POST/admin/students/:stdNo/suspendเปิด/ปิดบัญชีนักเรียน🔒 Admin
DELETE/admin/students/:stdNoลบนักเรียน🔒 Admin
POST/admin/students/promoteเลื่อนชั้น/จบการศึกษา (bulk)🔒 Admin
🛡 Admin — Roles & Modules
GET/admin/rolesรายการ roles + สถิติผู้ใช้🔒 Admin
GET/admin/roles/:idรายละเอียด role + permissions + modules🔒 Admin
POST/admin/rolesสร้าง role ใหม่🔒 SA
PATCH/admin/roles/:idแก้ไข role + permissions + modules🔒 SA
DELETE/admin/roles/:idลบ role (non-system เท่านั้น)🔒 SA
GET/admin/school-rmaสิทธิ์โมดูลเฉพาะโรงเรียน (matrix)🔒 Admin
PUT/admin/school-rmaบันทึกสิทธิ์โมดูลเฉพาะโรงเรียน🔒 Admin
GET/modulesรายการโมดูลทั้งหมด🔒 Admin
POST/modulesเพิ่มโมดูลใหม่🔒 SA
PATCH/modules/:idแก้ไขโมดูล🔒 SA
DELETE/modules/:idเปิด/ปิดโมดูล (soft toggle)🔒 SA
🏫 Admin — โรงเรียน
GET/admin/schoolsรายชื่อโรงเรียนทั้งหมด🔒 SA
POST/admin/schoolsเพิ่มโรงเรียนใหม่🔒 SA
PATCH/admin/schools/:idแก้ไขข้อมูลโรงเรียน🔒 SA
GET/admin/schools/:id/modulesโมดูลที่โรงเรียนเปิดใช้งาน🔒 SA
PUT/admin/schools/:id/modulesกำหนด enable/disable โมดูลต่อโรงเรียน🔒 SA
GET/admin/my-schoolข้อมูลโรงเรียนของ admin🔒 Admin
PATCH/admin/my-schoolแก้ไขข้อมูลพื้นฐานโรงเรียน🔒 Admin
GET/admin/departmentsกลุ่มสาระ/แผนก (hybrid)🔒 Admin
POST/admin/departmentsเพิ่มกลุ่มสาระ/แผนก🔒 Admin
PATCH/admin/departments/:idแก้ไขกลุ่มสาระ/แผนก🔒 Admin
DELETE/admin/departments/:idลบกลุ่มสาระ/แผนก🔒 Admin
GET/admin/superadmin-statsสถิติภาพรวมทั้งระบบ (dashboard)🔒 SA
GET/admin/dashboard-statsสถิติ dashboard ของโรงเรียน🔒 Admin
📋 ลงทะเบียนโรงเรียน
POST/registerยื่นคำขอลงทะเบียนโรงเรียนใหม่
GET/admin/school-applicationsรายการคำขอลงทะเบียน🔒 SA
POST/admin/school-applications/:id/approveอนุมัติคำขอ → สร้างโรงเรียน + admin🔒 SA
POST/admin/school-applications/:id/rejectปฏิเสธคำขอพร้อมเหตุผล🔒 SA
📅 ปีการศึกษา & ภาคเรียน
GET/academicรายการปีการศึกษา (hybrid: global + school)🔒 Admin
POST/academicสร้างปีการศึกษาใหม่🔒 Admin
PATCH/academic/:idแก้ไขปีการศึกษา🔒 Admin
DELETE/academic/:idลบปีการศึกษา🔒 Admin
POST/academic/:id/activateกำหนดปีการศึกษา Active🔒 Admin
POST/academic/:id/copyคัดลอกปีกลาง → ปีโรงเรียน🔒 Admin
GET/academic/:id/semestersภาคเรียนของปีนั้น🔒 Admin
POST/academic/:id/semestersเพิ่มภาคเรียน🔒 Admin
🏫 ครูที่ปรึกษา
GET/homeroomรายการครูที่ปรึกษา (filter year/semester)🔒 Admin
GET/homeroom/yearsปีการศึกษา + ภาคเรียนสำหรับ dropdown🔒 Admin
GET/homeroom/teachersรายชื่อครูสำหรับ dropdown🔒 Admin
POST/homeroomมอบหมายครูที่ปรึกษา🔒 Admin
POST/homeroom/copyคัดลอกครูที่ปรึกษาจากปีก่อน🔒 Admin
PATCH/homeroom/:idแก้ไขการมอบหมาย🔒 Admin
DELETE/homeroom/:idลบการมอบหมาย🔒 Admin
📆 ปฏิทินโรงเรียน
GET/calendarรายการกิจกรรม (filter month/year/semester)🔒 Bearer
GET/calendar/yearsปีการศึกษา + ภาคเรียนสำหรับ dropdown🔒 Bearer
POST/calendarเพิ่มกิจกรรม (global หรือ school-specific)🔒 Admin
PATCH/calendar/:idแก้ไขกิจกรรม (ตรวจ ownership)🔒 Admin
DELETE/calendar/:idลบกิจกรรม🔒 Admin
PUT/calendar/day-statusกำหนดวันเปิด/ปิดเรียน (toggle)🔒 Admin
📊 Audit & System Settings
GET/admin/audit-logsบันทึก activity ทั้งระบบ (paginated)🔒 Admin
GET/admin/settingsค่าตั้งค่าระบบทั้งหมด🔒 Admin
PATCH/admin/settingsแก้ไขค่าระบบ (bulk)🔒 SA
⚙ System
GET/healthสถานะ server + สถิติระบบ (public)
🔒 Bearer = ผู้ใช้ทุก role ที่ login แล้ว 🔒 Admin = superadmin หรือ admin โรงเรียน 🔒 SA = superadmin เท่านั้น