สมอง SML

คลังความรู้ / ตารางข้อมูล

#table#sml#identity#login#main-db

sml_user_list — ผู้ใช้ล็อกอิน

ทะเบียนผู้ใช้ที่ล็อกอินเข้าระบบ อยู่ใน Main Database ของ Tenant (ฐานตัวตนต่อ Tenant — ตาม backend/CONTEXT.md) ไม่ใช่ฐานบริษัท ผู้ใช้หนึ่งคนถูกผูกกับบริษัทผ่าน sml_database_list_user_and_group — สิทธิ์เข้าบริษัท (Access Grant) ตารางเดิม (legacy) ที่โค้ดเพิ่มคอลัมน์เองบางส่วน

คอลัมน์

(ชนิดจาก schema ทดสอบ identity_schema.sql:9-21 + ALTER ในโค้ด)

คอลัมน์ ชนิด ความหมายตามโค้ด
user_code varchar(50) PK รหัสผู้ใช้ — ค้นแบบไม่สนตัวพิมพ์ (UPPER) ใน FindByCode
user_name varchar(100) ชื่อ
user_password varchar(25) ในสคีมาทดสอบ → โค้ดแอดมิน ALTER เป็น VARCHAR(255) (handler.go:257) รหัสผ่าน: bcrypt ($2a$/$2b$/$2y$) หรือ legacy plaintext — ตรวจใน domain/identity/identity.go:41-64 · ห้ามเปิดเผยค่า
user_level smallint ระดับ — ≥ 9 = แอดมินเว็บ (application/identity/service.go:162)
active_status smallint 1 = ใช้งาน
device_id varchar(200) รหัสอุปกรณ์ (ไม่ชัดจากโค้ดว่าใช้ทำอะไรต่อ)
email TEXT เพิ่มด้วย ALTER … ADD COLUMN IF NOT EXISTS (handler.go:185, workspace_google.go:38)
line_user_id TEXT ผูก LINE — ALTER IF NOT EXISTS (workspace_google.go:39)
ignore_sync, is_lock_record, roworder, create_date_time_now — คอลัมน์ฝั่งโปรแกรมเดิม ไม่ใช้ในเว็บ (ตามคอมเมนต์ในสคีมาทดสอบ)

ใครอ่าน/เขียน

  • ล็อกอิน: UserRepository.FindByCode (postgres_repository.go:39-62)
  • แอดมินเพิ่ม/แก้/ลบผู้ใช้: admin/handler.go:268-424
  • workspace Google ผูก/สร้างผู้ใช้จากอีเมล (workspace_google.go)
  • ความปลอดภัย: เขียนผ่านเกตเวย์ /query/exec ได้เฉพาะ userLevel >= 9 (domain/query/query.go:63, 362); MCP gateway ห้ามอ่านตารางนี้ (mcp/gateway.go:30)

ความสัมพันธ์

ลิงก์

sml_database_list — ทะเบียนบริษัท (Company registry) · เช็กลิสต์ความปลอดภัย API: ตัวตน สิทธิ์ และช่องโหว่เว็บ (Secure API Checklist) · กลุ่มตาราง sml_* — ตัวตน สิทธิ์ และตารางระบบ