Skip to content

ACIM User Authorization - Create (AIS VO)

เอกสารนี้ระบุตรรกะของโปรแกรมและรายละเอียดส่วนต่อประสาน (Interface) ของ API สำหรับการสร้างสิทธิ์การเข้าใช้งาน (Authorization) ของผู้ใช้งานจากระบบ ACIM เข้าสู่ระบบ VO

1. ภาพรวมโครงการ (Project Overview)

  • ชื่อระบบ: Virtual Organization (VO) on Azure Cloud
  • โมดูล: ACIM Integration
  • วัตถุประสงค์: เพื่อรับข้อมูลการสร้าง User Account และกำหนดสิทธิ์ (Role) จากระบบ ACIM โดยรองรับทั้งแบบรายบุคคลและหลาย Role พร้อมกัน

2. รายละเอียด API Interface

  • ชื่อ API: updateUserAuthorize (Create Action)
  • Endpoint URL: https://sit-virtualorg-api.cdc.ais.th/api/acimuser
  • HTTP Method: POST
  • การยืนยันตัวตน (Authentication): Bearer Token (ได้รับจากบริการ getAccessToken)

3. โครงสร้างข้อมูล (Data Structure)

3.1 พารามิเตอร์ขาเข้า (Request Body - JSON Array)

API รองรับการส่งข้อมูลเป็น Array เพื่อรองรับการจัดการหลาย User หรือหลาย Role ในครั้งเดียว

json
[
  {
    "Username": "kanyakon@gpteches.com",
    "firstName": "kanyakon",
    "lastName": "Ngamnamjay",
    "Email": "kanyakon@gpteches.com",
    "role": "ACC Admin",
    "period": "Permanent",
    "startDate": null,
    "endDate": null,
    "locationCode": "11018",
    "locationName": "3BBSHOP  Silom",
    "otherParameter": ""
  }
]

3.2 รายละเอียดฟิลด์

ฟิลด์ประเภทรายละเอียด
UsernameStringชื่อผู้ใช้งาน (Mandatory)
roleStringสิทธิ์การใช้งาน (ต้องตรงกับ AspNetRoles ใน VO)
periodStringประเภทระยะเวลา (Permanent หรือ Temporary)
startDateDate/Nullวันเริ่มต้น (กรณี Permanent เป็น Null ได้)
endDateDate/Nullวันสิ้นสุด (กรณี Permanent เป็น Null ได้)

4. ตรรกะการประมวลผล (Processing Logic)

  1. การตรวจสอบ Role: ระบบจะตรวจสอบว่า role ที่ส่งมามีอยู่ในตาราง AspNetRoles หรือไม่
  2. การบันทึกข้อมูล User (AspNetUsers):
    • หากเป็น Permanent: บันทึก startDate = Current Date, endDate = Null
    • หากเป็น Temporary: บันทึก startDate และ endDate ตามที่ส่งมา
  3. การบันทึกสิทธิ์ (AspNetUserRoles): สร้างความสัมพันธ์ระหว่าง User และ Role
  4. การจัดการ Multiple Roles:
    • กรณี 1 User มีหลาย Role ระบบจะบันทึกสิทธิ์ทั้งหมดลงใน AspNetUserRoles
    • ผู้ใช้งานจะได้รับสิทธิ์รวม (Union) ของทุก Role ที่ได้รับ
  5. การบันทึก Log: บันทึกรายละเอียดการเรียกใช้งานลงในตาราง LogApi

5. สถานการณ์การทดสอบ (Test Scenarios)

5.1 สถานการณ์ทางธุรกิจ (Business Scenarios)

รหัสสถานการณ์รายละเอียดผลลัพธ์ที่คาดหวัง
SN-001Create User กลุ่ม Permanentสร้าง User สำเร็จ, startDate = create date, endDate = null
SN-002Create User กลุ่ม Temporaryสร้าง User สำเร็จ, บันทึก startDate/endDate ตามจริง
SN-003Create Temporary User โดยไม่ระบุวันที่HTTP 200 / Error: Temporary period : enddate should not be empty
SN-004Create User แบบ Multiple Roles (Admin, User)User ได้รับสิทธิ์ครบทุก Role
SN-005Create User แบบ Multiple Roles โดยมี Role ซ้ำระบบจัดการไม่ให้เกิด Role ซ้ำซ้อน
SN-006Create User โดยระบุ Role ที่ไม่มีในระบบHTTP 400 (Bad Request) / Invalid Parameter

5.2 สถานการณ์ทางเทคนิคและข้อผิดพลาด (Technical & Error Scenarios)

รหัสสถานการณ์เงื่อนไขข้อผิดพลาดผลลัพธ์ที่คาดหวัง
SN-010ประมวลผลสำเร็จHTTP 200 / resultCode = 20000
SN-011ประมวลผลล้มเหลวบางส่วนHTTP 200 / resultCode = 20001 Some Process Fail
SN-012รูปแบบ Syntax ผิดพลาดHTTP 400 / resultCode = 40000
SN-013ขาดพารามิเตอร์ที่จำเป็นHTTP 400 / resultCode = 40001 Missing Parameter
SN-016Token ไม่ถูกต้องHTTP 401 / resultCode = 900 Unauthorized
SN-022เกิดข้อผิดพลาดภายในระบบHTTP 500 / resultCode = 50000