45 lines
3.8 KiB
Markdown
45 lines
3.8 KiB
Markdown
|
|
# ขั้นตอนการทำงานของ Addin
|
|||
|
|
|
|||
|
|
## 1. เมื่อเปิดเอกสาร
|
|||
|
|
|
|||
|
|
- อ่าน custom property ของ word
|
|||
|
|
1. ticket_data ซึ่งจะมีข้อมูลเบื้องต้น ดังนี้
|
|||
|
|
```jsonc
|
|||
|
|
{
|
|||
|
|
"exp": 1793067433,
|
|||
|
|
"fid": "T12_FD155_3s-long_ZZZ",
|
|||
|
|
"tid": "T12",
|
|||
|
|
"uid": "oom",
|
|||
|
|
"uname": "สรวิชญ์",
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
2. นำค่า ticket_data ที่เป็น string ก่อนนำไปแปลง json ทำการ sign HMAC-SHA256 โดยใช้ secret "super_secret" ซึ่งต้องรองรับการ config ค่านี้ในอนาคต
|
|||
|
|
3. นำค่าที่ sign ได้ มาเทียบกับค่า property "HmacSha256"
|
|||
|
|
- ขั้นตอนการทำ authen
|
|||
|
|
```
|
|||
|
|
ขั้นตอน
|
|||
|
|
1. เมื่อเปิดไฟล์ Word ให้อ่าน Custom Property 2 ค่าที่ฝังมาในไฟล์ คือ value จริง และ Hash Value (HMAC) เพื่อตรวจสอบว่าไฟล์สร้างผ่านระบบอย่างถูกต้อง
|
|||
|
|
2. ถ้า HMAC ไม่ตรงกัน แสดงว่าไฟล์ถูกแก้ไข ให้ Add-in disable การทำงานทั้งหมด
|
|||
|
|
3. ถ้า HMAC ตรงกัน ให้เก็บค่า uId, uName, fId, tid ไว้ แล้วตรวจสอบว่า userId นี้มีใน localStorage อยู่แล้วหรือไม่
|
|||
|
|
4. ถ้ายังไม่มีให้ตรวจค่า Exp ที่ได้จากไฟล์ Word
|
|||
|
|
- หมดอายุ → disable Add-in ทั้งหมด
|
|||
|
|
- ยังไม่หมดอายุ → เก็บใน localStorage
|
|||
|
|
- userName: ค่าจาก uName
|
|||
|
|
- คีย์คือ fid: เอาค่า {
|
|||
|
|
"userid": uid,
|
|||
|
|
"username": uname,
|
|||
|
|
"fid": fid (เป็น string),
|
|||
|
|
"tid": tid
|
|||
|
|
}
|
|||
|
|
ไปทำการขอ token ที่ /api/documents/token แล้วนำค่าที่ได้มาเก็บไว้ที่ตัวแปรนี้ เพื่อให้อ่านค่าไปใช้ให้ตรงกับค่า fid ที่ได้รับ เนื่องจาก api ในส่วน /documents จะต้องแนบ token ไปไม่ส่งค่าไปตรงๆ เพื่อความถูกต้อง
|
|||
|
|
5. ถ้ามี Session อยู่แล้ว ให้ตรวจว่า userId ตรงกับ Session หรือไม่
|
|||
|
|
6. ถ้า userId ไม่ตรงกัน (user ใหม่) ให้ตรวจค่า Expire
|
|||
|
|
- ยังไม่หมดอายุ → เคลียร์ Session เดิม แล้วสร้าง Session 2 ค่าใหม่
|
|||
|
|
- หมดอายุ → disable Add-in ทั้งหมด
|
|||
|
|
7. ถ้า userId ตรงกัน (คนเดิม) ให้ตรวจว่า fid มีใน localStorage แล้วหรือไม่
|
|||
|
|
- มีแล้ว (กลับมาทำเอกสารเดิม) → ผ่านได้เลย ไม่ต้องตรวจ Expire
|
|||
|
|
- ยังไม่มี (เอกสารใหม่) → ตรวจค่า Expire
|
|||
|
|
- ยังไม่หมดอายุ → ทำการขอ token แล้วเก็บใน localStorage ตามขั้นตอนก่อนหน้า
|
|||
|
|
- หมดอายุ → disable Add-in ทั้งหมด
|
|||
|
|
```
|