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 รายละเอียดฟิลด์
| ฟิลด์ | ประเภท | รายละเอียด |
|---|---|---|
Username | String | ชื่อผู้ใช้งาน (Mandatory) |
role | String | สิทธิ์การใช้งาน (ต้องตรงกับ AspNetRoles ใน VO) |
period | String | ประเภทระยะเวลา (Permanent หรือ Temporary) |
startDate | Date/Null | วันเริ่มต้น (กรณี Permanent เป็น Null ได้) |
endDate | Date/Null | วันสิ้นสุด (กรณี Permanent เป็น Null ได้) |
4. ตรรกะการประมวลผล (Processing Logic)
- การตรวจสอบ Role: ระบบจะตรวจสอบว่า
roleที่ส่งมามีอยู่ในตารางAspNetRolesหรือไม่ - การบันทึกข้อมูล User (
AspNetUsers):- หากเป็น Permanent: บันทึก
startDate= Current Date,endDate= Null - หากเป็น Temporary: บันทึก
startDateและendDateตามที่ส่งมา
- หากเป็น Permanent: บันทึก
- การบันทึกสิทธิ์ (
AspNetUserRoles): สร้างความสัมพันธ์ระหว่าง User และ Role - การจัดการ Multiple Roles:
- กรณี 1 User มีหลาย Role ระบบจะบันทึกสิทธิ์ทั้งหมดลงใน
AspNetUserRoles - ผู้ใช้งานจะได้รับสิทธิ์รวม (Union) ของทุก Role ที่ได้รับ
- กรณี 1 User มีหลาย Role ระบบจะบันทึกสิทธิ์ทั้งหมดลงใน
- การบันทึก Log: บันทึกรายละเอียดการเรียกใช้งานลงในตาราง
LogApi
5. สถานการณ์การทดสอบ (Test Scenarios)
5.1 สถานการณ์ทางธุรกิจ (Business Scenarios)
| รหัสสถานการณ์ | รายละเอียด | ผลลัพธ์ที่คาดหวัง |
|---|---|---|
| SN-001 | Create User กลุ่ม Permanent | สร้าง User สำเร็จ, startDate = create date, endDate = null |
| SN-002 | Create User กลุ่ม Temporary | สร้าง User สำเร็จ, บันทึก startDate/endDate ตามจริง |
| SN-003 | Create Temporary User โดยไม่ระบุวันที่ | HTTP 200 / Error: Temporary period : enddate should not be empty |
| SN-004 | Create User แบบ Multiple Roles (Admin, User) | User ได้รับสิทธิ์ครบทุก Role |
| SN-005 | Create User แบบ Multiple Roles โดยมี Role ซ้ำ | ระบบจัดการไม่ให้เกิด Role ซ้ำซ้อน |
| SN-006 | Create 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-016 | Token ไม่ถูกต้อง | HTTP 401 / resultCode = 900 Unauthorized |
| SN-022 | เกิดข้อผิดพลาดภายในระบบ | HTTP 500 / resultCode = 50000 |