บุคคล บัญชี บทบาท และสิทธิ์เข้าถึง
บัญชีเป็นของ installation ส่วนการให้สิทธิ์กำหนดบทบาทของบัญชีนั้นในหนึ่งเว็บไซต์ การเลือกเว็บไซต์ไม่ได้ให้สิทธิ์เข้าถึง ตรวจเว็บไซต์ที่เลือกก่อนเพิ่ม เปลี่ยน หรือเพิกถอนสิทธิ์
เพิ่มบุคคล
หัวข้อที่มีชื่อว่า “เพิ่มบุคคล”เปิด การตั้งค่า → ผู้ใช้ ด้วยสิทธิ์ให้ผู้อื่นเข้าถึงเว็บไซต์ ในส่วน เพิ่มผู้ใช้ กรอกอีเมล เลือกบทบาท แล้วกด เพิ่ม บทบาทต้องไม่สูงกว่าสิทธิ์ของคุณเอง
- ที่อยู่นี้มีบัญชีอยู่แล้ว: ได้รับบทบาททันที ไม่มีการส่งอีเมล
- ยังไม่มีบัญชี: ระบบไม่สร้างบัญชี แต่สร้างคำเชิญแทน จะยังไม่มีใครได้สิทธิ์จนกว่าบุคคลนั้นจะรับคำเชิญ
วิธีส่งคำเชิญ:
- ตั้งค่าอีเมลแล้ว (
RESEND_API_KEYและMAIL_FROMหรือตัวส่งอีเมลของคุณเอง): ลิงก์ถูกส่งทางอีเมล หน้าจอจะบอกว่าส่งแล้วก็ต่อเมื่อผู้ให้บริการรับข้อความแล้วเท่านั้น - ไม่ได้ตั้งค่าอีเมล: ไม่มีการส่งอีเมล คัดลอกลิงก์แล้วส่งเป็นการส่วนตัว ลิงก์แสดงเพียงครั้งเดียว
บุคคลนั้นเปิดลิงก์และพิมพ์ที่อยู่อีเมลที่ได้รับคำเชิญ ถ้าตั้งค่าอีเมลไว้ ระบบจะส่งรหัสไปยังที่อยู่นั้นและต้องกรอกรหัสนั้น รหัสคือสิ่งที่พิสูจน์ที่อยู่ ไม่ใช่ลิงก์ ถ้าไม่มีอีเมล การตรวจมีเพียงที่อยู่ที่พิมพ์ และบัญชีใหม่จะถูกบันทึกว่ายังไม่ยืนยัน ผู้ที่ตอบรับคำเชิญด้วยที่อยู่อีเมลใหม่เลือกรหัสผ่านของตนเอง บัญชีที่มีอยู่แล้วได้รับบทบาทและใช้รหัสผ่านเดิม บัญชีที่มีอยู่แต่ยังเข้าสู่ระบบไม่ได้จะได้รหัสผ่านก็ต่อเมื่อรหัสยืนยันที่อยู่แล้วเท่านั้น ถ้าไม่มีอีเมล บัญชีนั้นได้รับบทบาท และ superadmin ออกลิงก์ตั้งรหัสผ่านให้
ลิงก์ใช้ได้ครั้งเดียวและหมดอายุใน 7 วัน ส่งคำเชิญถึง {email} อีกครั้ง ออกลิงก์ใหม่และลิงก์เดิมจะใช้ไม่ได้ การส่งคำเชิญซ้ำจะถูกปฏิเสธด้วย escalation_refused เมื่อบทบาทของคำเชิญสูงกว่าบทบาทของคุณ และลิงก์เดิมยังใช้ได้ ยกเลิกคำเชิญของ {email} ถามยืนยันก่อนแล้วปิดลิงก์ คำเชิญที่รออยู่และที่หมดอายุแสดงในส่วน คำเชิญ ใต้รายชื่อบุคคล พร้อมปุ่มดำเนินการ คำเชิญที่รับแล้วหรือยกเลิกแล้วย้ายไปอยู่ใต้ คำเชิญก่อนหน้า ({count}) ลิงก์ที่หมดอายุ ถูกยกเลิก หรือใช้ไปแล้วจะได้รับการปฏิเสธแบบเดียวกัน
ถ้าบทบาทหรือสิทธิ์เข้าถึงของคุณเองเปลี่ยนไประหว่างที่คุณเพิ่มบุคคล เชิญ หรือส่งลิงก์ซ้ำ ระบบจะไม่ให้สิทธิ์ ไม่สร้างบัญชี และไม่ส่งอะไรเลย และเมื่อส่งซ้ำ ลิงก์เดิมยังใช้ได้ ถ้าคุณไม่มีสิทธิ์ให้การเข้าถึงไซต์แล้ว หรือบทบาทนั้นสูงกว่าบทบาทของคุณแล้ว การปฏิเสธจะบอกเหตุผลนั้น (missing_permission หรือ escalation_refused) มิฉะนั้นหน้าจอจะบอกว่าบทบาทหรือสิทธิ์ของคุณเปลี่ยนไปและไม่มีอะไรถูกบันทึก ให้ลองอีกครั้ง
แต่ละแถวแสดงสถานะของบุคคลนั้น:
- เข้าสู่ระบบได้ (มีรหัสผ่าน ผู้ให้บริการที่เชื่อมไว้ หรืออีเมลที่ยืนยันแล้ว)
- รอใช้ลิงก์ พร้อมเวลาหมดอายุ
- ลิงก์หมดอายุ
- ต้องมีลิงก์ตั้งค่า
- Cloudflare Access (ตั้งค่า Access ไว้ และระบบไม่รู้ว่าบุคคลนั้นใช้หรือไม่)
- ปิดใช้งานแล้ว
เมื่อ เพิ่ม ให้บทบาทแก่บัญชีที่มีอยู่แล้วแต่ยังเข้าสู่ระบบไม่ได้ superadmin จะเห็นปุ่ม สร้างลิงก์ ส่วนผู้อื่นจะได้รับคำแนะนำให้ติดต่อ superadmin ส่งลิงก์เป็นการส่วนตัว อย่าใส่ในเนื้อหาหรือภาพหน้าจอ superadmin เพิกถอนลิงก์ที่ยังใช้ได้จากแถวนั้นได้ รวมถึงลิงก์กู้คืนของบุคคลที่เข้าสู่ระบบได้อยู่แล้ว การเพิกถอนยังลบลิงก์เข้าสู่ระบบที่รอดำเนินการซึ่งบุคคลนั้นขอไว้ด้วย บัญชีที่ถูกปิดใช้งานจะไม่ได้รับลิงก์ ให้เปิดใช้งานบัญชีก่อน
ทั้งการให้สิทธิ์และคำเชิญไม่ใช่การสมัครสาธารณะด้วยตนเอง
ตัวส่งอีเมล
หัวข้อที่มีชื่อว่า “ตัวส่งอีเมล”ค่าเริ่มต้นคือ Resend หากต้องการส่งผ่านบริการของคุณเอง ให้ตั้ง MAIL_TRANSPORT_URL (var), MAIL_TRANSPORT_TOKEN (secret) และ MAIL_FROM Dee Wan ไม่มีเมลเซิร์ฟเวอร์และไม่มีไคลเอนต์ SMTP บริการของคุณเป็นผู้ส่ง
- ใช้เมื่อใด เมื่อตั้ง
MAIL_TRANSPORT_URLทุกข้อความจะไปที่บริการของคุณ และไม่ใช้ Resend หากไม่มีโทเคนหรือMAIL_FROMหรือที่อยู่ถูกปฏิเสธ (ต้องเป็นhttps://ไม่มีข้อมูลรับรอง และเป็นที่อยู่สาธารณะ) อีเมลจะไม่ได้ตั้งค่า ไม่มีอะไรถูกส่ง และลิงก์คำเชิญหรือลิงก์รหัสผ่านจะแสดงให้คุณส่งต่อเอง - คำขอ ใช้
POSTหนึ่งครั้งต่อข้อความ พร้อมAuthorization: Bearer <token>ส่วนหัวIdempotency-Keyและ JSON{ "message_id", "from", "to", "subject", "text" }โดยmessage_idเท่ากับคีย์ ข้อความเดิมที่ส่งซ้ำจะมีรหัสเดิม - คำตอบ บริการของคุณตอบ HTTP 200 พร้อม JSON:
{ "status": "sent" }(จะมีidด้วยก็ได้){ "status": "sent", "duplicate": true }เมื่อส่งmessage_idนั้นไปแล้ว หรือ{ "status": "failed" }สถานะ เนื้อหา หรือการเปลี่ยนเส้นทางอื่นใด รวมถึงไม่ตอบภายใน 10 วินาที ถือว่าล้มเหลว ดังนั้นการลองซ้ำด้วยmessage_idเดียวกันจึงส่งครั้งเดียว และไม่เคยถูกรายงานว่าส่งครั้งที่สอง - สิ่งที่คุณเห็น ส่งแล้ว ล้มเหลว หรือไม่ได้ตั้งค่า ตามที่บริการของคุณรายงาน การส่งที่ล้มเหลวหรือไม่มีไม่ยกเลิกสิ่งที่สร้างไปแล้ว คำเชิญหรือลิงก์รหัสผ่านยังอยู่และแสดงให้คุณ
- ปลั๊กอินไม่ได้รับโทเคน และไม่เห็นข้อความใด
เลือกบทบาทที่มีสิทธิ์เพียงพอเท่านั้น
หัวข้อที่มีชื่อว่า “เลือกบทบาทที่มีสิทธิ์เพียงพอเท่านั้น”| บทบาทพื้นฐาน | ขอบเขต |
|---|---|
admin |
ดูแลเว็บไซต์ได้ทั้งหมด แต่ไม่ได้ทำให้บัญชีเป็น superadmin ของ installation |
editor |
สร้าง แก้ไข เผยแพร่ ถอนเผยแพร่ อนุมัติ และส่งออกเนื้อหา และเข้าถึงสื่อได้เต็มที่ ไม่ได้ดูแลโมเดลหรือเว็บไซต์ |
author |
อ่านและสร้างเนื้อหา แก้ไขเฉพาะรายการที่เป็นเจ้าของ เพิ่มไฟล์สื่อได้แต่เปลี่ยนหรือลบไม่ได้ ไม่มีสิทธิ์เผยแพร่ ถอนเผยแพร่ อนุมัติ หรือกู้เวอร์ชัน |
viewer |
อ่านอย่างเดียว |
บทบาทที่สร้างเองอาจต่างออกไป ให้ตรวจนิยามใน การตั้งค่า → บทบาท ไม่สรุปสิทธิ์จากชื่อ ระบบตรวจความเป็นเจ้าของเนื้อหา รวมถึงทั้งคำแปลและรายการหลักเมื่อการทำงานกระทบทั้งคู่ ฉบับร่างที่ใช้ร่วมกันและสิทธิ์การแก้ไข (lease) ยึดตามความเป็นเจ้าของแถวในภาษานั้น บทบาทที่มีสิทธิ์เฉพาะของตนเอง (read:own, update:own) เข้าถึงได้เฉพาะแถวภาษาที่ตนเป็นเจ้าของ มิฉะนั้นจะถูกปฏิเสธด้วย not_owner superadmin มีอำนาจระดับ installation ข้ามเว็บไซต์
ใน การตั้งค่า → บทบาท สิทธิ์ในแถว ทุกโมเดล มีผลกับทุกโมเดล แม้โมเดลนั้นจะมีแถวของตัวเอง ปุ่มใช้แก้ไขสิทธิ์โดยตรง ส่วนสัญลักษณ์ ↳ แสดงสิทธิ์ที่สืบทอด สิทธิ์ทั้งสองส่วนมีผลร่วมกัน การลบสิทธิ์โดยตรงจึงไม่ลบสิทธิ์ที่สืบทอด เมื่อแก้ไขสิทธิ์ * ที่ครอบคลุมทุกการกระทำ ระบบจะแทนที่ด้วยสิทธิ์แยกรายการ หากไม่ได้แก้ไขสิทธิ์ การบันทึกจะคง * ไว้
สิทธิ์ด้านสื่อ
หัวข้อที่มีชื่อว่า “สิทธิ์ด้านสื่อ”ไฟล์ในคลังสื่อมีสิทธิ์สามอย่างแยกกัน จึงให้การเพิ่ม การเปลี่ยน และการลบแยกจากกันได้:
| สิทธิ์ | อนุญาตให้ |
|---|---|
media:upload |
เพิ่มไฟล์ รวมถึงไฟล์ส่วนตัว |
media:update |
เปลี่ยน alt text จุดโฟกัส แทนที่ไฟล์ โฟลเดอร์ แท็ก และการมองเห็นแบบสาธารณะหรือส่วนตัว |
media:delete |
ลบไฟล์ ไฟล์ที่เนื้อหาหรือประวัติที่เก็บไว้ใช้อยู่จะถูกปฏิเสธไม่ว่าใครขอ |
admin และ editor มีครบทั้งสาม author มีเฉพาะ media:upload ผู้เขียนจึงเพิ่มไฟล์ได้แต่เปลี่ยนหรือลบไม่ได้ viewer ไม่มีเลย ข้อมูลรับรองของ management API ที่มีขอบเขต media:write มีครบทั้งสาม โดยแคบลงเหลือเท่าที่ผู้สร้างมีเมื่อใช้งาน การนำเข้าต้องมี media:upload สำหรับไฟล์ที่เพิ่ม และ media:update สำหรับโฟลเดอร์ที่สร้าง และการเลิกทำการนำเข้าต้องมี media:delete และ media:update
ข้อความสำเร็จรูปในฟิลด์ rich text เป็นไปตามสิทธิ์เข้าถึงเนื้อหา: ผู้ที่สร้างหรือแก้ไขรายการของโมเดลได้จะใช้ข้อความสำเร็จรูปในโมเดลนั้นได้ และจัดการรายการที่ตนบันทึกไว้ได้ site:settings จัดการข้อความสำเร็จรูปได้ทั้งหมด
เวิร์กโฟลว์ดูแลด้วย site:settings: สร้าง แก้ไข และลบเวิร์กโฟลว์ที่ตั้งชื่อ เลือกเวิร์กโฟลว์ของโมเดล และตรวจการย้ายรายการที่อยู่ระหว่างตรวจความคิดเห็นของรายการเป็นไปตามสิทธิ์เข้าถึงรายการ: การอ่านต้องมีสิทธิ์อ่าน การเขียนและปิดต้องมีสิทธิ์แก้ไข การแจ้งเตือนแสดงเฉพาะขณะที่ผู้รับยังอ่านรายการได้
จำกัดบทบาทให้เข้าถึงบางฟิลด์หรือบางภาษา
หัวข้อที่มีชื่อว่า “จำกัดบทบาทให้เข้าถึงบางฟิลด์หรือบางภาษา”บทบาทเข้าถึงทุกฟิลด์และทุกภาษาของโมเดลที่ใช้ได้ ไม่ต้องตั้งค่าอะไรสำหรับเรื่องนี้ หากต้องการจำกัดบทบาทที่สร้างเองหรือบทบาทในตัว เปิด การตั้งค่า → บทบาท แก้ไขบทบาท แล้วเปิด จำกัดฟิลด์และภาษา
- จำกัดฟิลด์ แสดงฟิลด์ของโมเดล รวมถึง การค้นหาและการแชร์ และ ที่อยู่ แตะฟิลด์เพื่อสลับเวียนระหว่าง แก้ไข, ดู และ ซ่อน
- จำกัดภาษา เลือกภาษาที่บทบาททำงานได้ ตัวเลือกนี้ใช้กับทุกการดำเนินการที่บทบาทมี: สร้าง แก้ไข ลบ กู้คืน ตรวจทาน เผยแพร่ และยกเลิกการเผยแพร่ อ่านได้ทุกภาษา ยังเปิดให้อ่านได้ ผู้แปลจึงเห็นต้นฉบับขณะแก้ไขเฉพาะภาษาของตน
- แถว โมเดลอื่นทั้งหมด จำกัดภาษาสำหรับทุกโมเดลที่บทบาทเข้าถึงผ่านการให้สิทธิ์เริ่มต้น การตั้งค่าของโมเดลเองจะใช้แทนแถวนี้
ผลของการจำกัด:
- ฟิลด์ที่ซ่อนจะไม่ปรากฏในตัวแก้ไข ประวัติเวอร์ชันและการเปรียบเทียบ การค้นหาในรายการเนื้อหา การส่งออกสเปรดชีต และ management API ฟิลด์ที่ดูได้อย่างเดียวแสดงแบบปิดใช้งาน
- การบันทึกที่ระบุฟิลด์ซึ่งบทบาทไม่มีสิทธิ์เปลี่ยนจะถูกปฏิเสธด้วย
field_deniedพร้อมระบุชื่อฟิลด์ ไม่มีข้อมูลใดถูกทิ้งไปเงียบ ๆ และค่าที่เก็บในฟิลด์ที่บทบาทมองไม่เห็นยังคงอยู่ - การดำเนินการในภาษาที่อยู่นอกบทบาทจะถูกปฏิเสธด้วย
locale_deniedพร้อมระบุภาษา การดำเนินการที่ครอบคลุมหลายภาษา เช่น การเผยแพร่ทั้งรายการหรือการดำเนินการแบบกลุ่ม จะถูกปฏิเสธทั้งหมด - ฟิลด์ที่ใช้ร่วมกัน (ไม่แปล) รายการความสัมพันธ์ที่ใช้ร่วมกัน และสื่อ อยู่ในภาษาหลัก การเปลี่ยนค่าเหล่านี้ต้องให้บทบาทแก้ไขภาษาหลักได้ การส่งค่าที่ใช้ร่วมกันโดยไม่เปลี่ยนมาพร้อมคำแปลไม่นับเป็นการเปลี่ยนแปลง
- กู้คืนเฉพาะ ฝรั่งเศส ในประวัติเวอร์ชัน (ปุ่มจะระบุชื่อภาษา) กู้คืนภาษาเดียว ได้แก่ฟิลด์ของภาษานั้น รายการความสัมพันธ์ของภาษานั้นเอง และที่อยู่ของภาษานั้น ฟิลด์ที่ใช้ร่วมกัน ความสัมพันธ์ที่ใช้ร่วมกัน สื่อ และภาษาอื่นทั้งหมดคงเดิม ต้องมีสิทธิ์กู้คืนเฉพาะในภาษานั้น ผู้แปลจึงกู้คืนภาษาของตนเองได้
- กู้คืนเวอร์ชันนี้ กู้คืนทั้งรายการ คือทุกภาษาและทุกฟิลด์ ต้องมีสิทธิ์กู้คืนในทุกภาษาของรายการ
- ไม่ว่าแบบใด บทบาทที่จำกัดฟิลด์กู้คืนได้เฉพาะเมื่อฟิลด์ที่บทบาทเปลี่ยนไม่ได้ตรงกับเวอร์ชันนั้นอยู่แล้ว
- ฉบับร่างที่ใช้ร่วมกันใช้ข้อจำกัดเดียวกัน ทุกคำตอบที่มีฉบับร่าง รวมถึงกรณีขัดแย้ง มีเฉพาะฟิลด์ที่บทบาทอ่านได้ ฉบับร่างของหน้าจะแสดงชื่อเรื่องว่างเมื่อไม่มีสิทธิ์อ่านชื่อเรื่อง และจะถูกปฏิเสธด้วย
field_deniedเมื่อไม่มีสิทธิ์อ่านส่วนต่าง ๆ ของหน้า การเข้าร่วมหรือรับช่วงการแก้ไขภาษาใดต้องมีสิทธิ์เปลี่ยนแปลงในภาษานั้น (หรือสิทธิ์สร้าง เมื่อภาษานั้นยังไม่มีแถว) มิฉะนั้นจะถูกปฏิเสธด้วยlocale_denied - ความคิดเห็นรีวิวอยู่ภายใต้ข้อจำกัดเดียวกัน บันทึกแต่ละรายการเป็นของภาษาที่เขียนไว้ บทบาทจะเห็นเฉพาะบันทึกของภาษาที่อ่านได้ การเขียนบันทึกต้องมีการดำเนินการ update ในภาษานั้น และการปิดหรือเปิดบันทึกอีกครั้งต้องมีทั้ง read และ update ในภาษาของบันทึก มิฉะนั้นคำขอจะถูกปฏิเสธด้วย
locale_denied - ภาษาที่บทบาทอ่านไม่ได้จะถูกซ่อนจากรายการภาษาในตัวแก้ไขและจากรายการเนื้อหา ลิงก์พรีวิวแสดงเฉพาะสิ่งที่ผู้สร้างลิงก์อ่านได้ และไม่สลับไปใช้ภาษาที่อยู่นอกบทบาท
- การแลกเปลี่ยนผ่าน ส่งออกสเปรดชีต → นำเข้าสเปรดชีต อัปเดตรายการอย่างเดียวและต้องมีสิทธิ์อ่านกับแก้ไขโมเดล สิทธิ์เฉพาะของตนเอง (
read:ownหรือupdate:own) จำกัดทั้งการส่งออกและนำไปใช้ แถวของผู้อื่นตอบกลับspreadsheet_row_not_foundคอลัมน์มีเฉพาะฟิลด์ที่บทบาททั้งอ่านและเปลี่ยนได้ ฟิลด์ที่ดูอย่างเดียวไม่ถูกส่งออก ส่วนค่าที่ซ่อนอยู่ยังคงเดิมเมื่อนำไปใช้ ชีตมีเฉพาะภาษาที่อ่านได้ การเปลี่ยนภาษาที่ไม่มีสิทธิ์ update ถูกบล็อกด้วยlocale_deniedหากต้องการสร้างหรือ upsert ผ่าน CSV/XLSX ให้ใช้ช่องทางคอลเลกชันด้านล่าง - ไฟล์คอลเลกชัน ส่งออก JSON ด้วยสิทธิ์
readของโมเดล และเฉพาะแถว ฟิลด์ รายการที่เกี่ยวข้อง และภาษาที่อ่านได้ การนำเข้า JSON, CSV และ XLSX ตรวจสิทธิ์ทีละแถว การสร้างต้องมีcreateการอัปเดตต้องมีreadและupdateและยังคงจำกัดเฉพาะรายการของตนเองตามสิทธิ์ โหมด upsert ใช้สิทธิ์ตามการกระทำจริงของแต่ละแถว ไม่ได้บังคับให้มีทั้งสองสิทธิ์ทุกแถว การเพิ่มคำแปลให้รายการเดิมต้องมีสิทธิ์ create ของภาษานั้นด้วย ทุกฟิลด์และภาษาที่เปลี่ยนต้องมีสิทธิ์เขียน ค่าที่ไม่เปลี่ยนยังคงเดิม ดูการแก้ไขเนื้อหา - การส่งออกทั้งเว็บไซต์คัดลอกทุกฟิลด์และทุกภาษา บทบาทที่จำกัดการอ่านจึงเริ่มการส่งออกนี้ไม่ได้
- เมื่อบุคคลมีหลายบทบาท แต่ละฟิลด์และภาษาจะได้สิทธิ์ที่สูงที่สุดที่ครอบคลุม บทบาทที่ไม่จำกัดการดำเนินการใดจะทำให้การดำเนินการนั้นไม่ถูกจำกัด
update:ownในภาษาหนึ่งคู่กับupdateในอีกภาษาหนึ่งยังคงจำกัดเฉพาะเจ้าของในภาษาแรก: ชุดที่รวมแล้วบันทึกไว้เป็นรายการภาษาของupdate:own - คุณมอบข้อจำกัดได้เฉพาะภายในขอบเขตของตนเอง การบันทึกบทบาทที่เข้าถึงฟิลด์หรือภาษาที่คุณเข้าถึงไม่ได้จะถูกปฏิเสธด้วย
escalation_refusedและตัวแก้ไขจะแจ้งก่อนกด Save - ข้อจำกัดอ้างถึงฟิลด์ด้วยคีย์ การเปลี่ยนชื่อคีย์ฟิลด์ในตัวสร้างโมเดลจะเขียนข้อจำกัดของทุกบทบาทใหม่ให้ใช้คีย์ใหม่เมื่อบันทึกการเปลี่ยนชื่อแล้ว
- page composer เปิดหน้าได้เฉพาะในภาษาที่บทบาทอ่านได้ และปฏิเสธหน้าที่มีส่วนซึ่งบทบาทอ่านไม่ได้ คลังหน้าซ่อนชื่อเรื่องและภาษาที่บทบาทอ่านไม่ได้
- บทบาท รวมถึงข้อจำกัด จัดการผ่าน management API ได้ด้วย โดยใช้ scope
roles:write
เปลี่ยนหรือเพิกถอนสิทธิ์
หัวข้อที่มีชื่อว่า “เปลี่ยนหรือเพิกถอนสิทธิ์”เปลี่ยนบทบาทในรายการ ผู้ใช้ หรือเพิกถอนสิทธิ์ของเว็บไซต์นั้น การเพิกถอนไม่ใช่การลบบัญชี superadmin สามารถปิดบัญชีและเพิกถอนเซสชันได้ หลังเปิดบัญชีอีกครั้งต้องเข้าสู่ระบบใหม่ ระบบปฏิเสธการปิดบัญชีตัวเองและการนำ superadmin ที่ยังใช้งานคนสุดท้ายออก สิทธิ์เว็บไซต์ยังป้องกันการนำผู้ดูแลคนสุดท้ายออกด้วย
เข้าสู่ระบบผ่าน Cloudflare Access
หัวข้อที่มีชื่อว่า “เข้าสู่ระบบผ่าน Cloudflare Access”ต้องเป็นการติดตั้งที่ตั้งค่า Cloudflare Access แล้ว เปิด การตั้งค่า → ผู้ใช้ → เข้าสู่ระบบผ่าน Cloudflare Access ด้วยสิทธิ์ให้สิทธิ์เข้าถึงเว็บไซต์
กฎหนึ่งข้อจับคู่โดเมนอีเมลแบบตรงตัวหนึ่งโดเมน เช่น example.com หรือกลุ่ม Access หนึ่งกลุ่ม กับบทบาทหนึ่งของเว็บไซต์นี้ เมื่อเปิดสวิตช์และผู้ที่ Access ยืนยันแล้วเข้าสู่ระบบด้วยโดเมนหรือกลุ่มที่ตรงกัน เขาจะได้บัญชีและบทบาทนั้นในขั้นตอนเดียว subdomain ไม่ตรงกัน ชื่อกลุ่มต้องตรงกับผู้ให้บริการข้อมูลประจำตัวทุกตัวอักษร รวมตัวพิมพ์ใหญ่เล็ก
ระบบอ่านกลุ่มจาก Cloudflare Access (get-identity บนโดเมนทีมของคุณ) ไม่ใช่จาก token เข้าสู่ระบบซึ่งอาจตัดกลุ่มทิ้ง และอ่านเฉพาะเมื่อมีเว็บไซต์ที่มีกฎกลุ่ม ครั้งเดียวต่อหนึ่งเซสชันเข้าสู่ระบบของ Access
- การเข้าสู่ระบบครั้งถัดไป จะปรับบทบาทตามกฎ การลบกฎจะนำบทบาทที่กฎนั้นให้ออก
- ผู้ที่เพิ่มด้วยตนเองหรือผ่านคำเชิญยังคงบทบาทเดิม ไม่มีกฎใดเปลี่ยนหรือนำออก People แสดง Access ข้างบทบาทที่กฎให้
- หลายกฎตรงกับคนเดียว (โดเมนและกลุ่ม): ใช้บทบาทที่ครอบคลุมบทบาทอื่นทั้งหมด หากไม่มี เว็บไซต์นั้นจะไม่ให้บทบาท สองกฎของโดเมนหรือกลุ่มเดียวกันที่รวมกันไม่ได้จะถูกปฏิเสธตอนบันทึก กฎที่กลายเป็นกำกวมหลังแก้บทบาทจะแสดง ขัดแย้ง
- อ่านกลุ่มไม่ได้: กฎกลุ่มจะไม่สร้างบัญชีหรือบทบาท และบทบาทที่กฎกลุ่มให้ไว้จะไม่ถูกเปลี่ยนหรือนำออก กฎโดเมนยังทำงานตามปกติ การเข้าสู่ระบบครั้งแรกที่มีเพียงกฎกลุ่มที่อาจอนุญาตจะถูกปฏิเสธและลองใหม่ได้
- ผู้ดูแลคนสุดท้าย ของเว็บไซต์จะไม่ถูกกฎนำออกหรือลดสิทธิ์ หน้าจอบอกว่าใครถูกเก็บไว้
- ปิด หยุดการเปลี่ยนแปลงอัตโนมัติทั้งหมด: ไม่มีบัญชีใหม่ ไม่เปลี่ยนบทบาท ไม่นำออก บัญชีและบทบาทเดิมยังอยู่
- บัญชีที่ถูกปิดยังถูกปฏิเสธ ไม่มีกฎใดทำให้ใครเป็น superadmin การเข้าสู่ระบบด้วยรหัสผ่าน ลิงก์อีเมล Google และ GitHub ยังไม่สร้างบัญชี
- คุณมอบได้เฉพาะบทบาทที่อยู่ภายในบทบาทของคุณ การเปลี่ยนกฎ แม้เปลี่ยนแค่โดเมนหรือกลุ่ม จะถูกปฏิเสธด้วย
escalation_refusedเมื่อบทบาทของกฎสูงกว่าบทบาทของคุณ การลบกฎนั้น หรือเปลี่ยนเป็นบทบาทที่อยู่ภายในบทบาทของคุณ ทำได้ - ถ้าบทบาทหรือสิทธิ์ของคุณเองเปลี่ยนไประหว่างที่คุณบันทึกกฎ จะไม่มีอะไรถูกบันทึก ถ้าตอนนี้บทบาทของกฎสูงกว่าบทบาทของคุณ หรือคุณเสียสิทธิ์มอบสิทธิ์เข้าถึงไซต์ไปแล้ว การบันทึกจะถูกปฏิเสธด้วย
escalation_refusedหรือmissing_permissionมิฉะนั้นหน้าจอจะแสดงกฎล่าสุด ให้ลองอีกครั้ง - ลบบทบาทที่กฎใช้อยู่ไม่ได้ ให้เปลี่ยนกฎก่อน เว็บไซต์หนึ่งมีกฎได้ไม่เกิน 100 ข้อ
ทุกการเปลี่ยนสวิตช์หรือกฎ และทุกบทบาทที่กฎให้หรือนำออก จะถูกบันทึกในประวัติการดูแลของเว็บไซต์
เปลี่ยน superadmin
หัวข้อที่มีชื่อว่า “เปลี่ยน superadmin”ทำตาม เปลี่ยน superadmin ผู้ดูแลคนใหม่ใช้บัญชีแยกที่เลื่อนสิทธิ์ด้วย ตั้งเป็นผู้ดูแลระดับสูง ถ้าต้องการเปลี่ยนเฉพาะ email ของตน ใช้ขั้นตอนยืนยันในหน้า ความปลอดภัยของบัญชี ด้านล่าง
พาสคีย์ (passkey)
หัวข้อที่มีชื่อว่า “พาสคีย์ (passkey)”superadmin เปิดพาสคีย์ที่หน้า การติดตั้ง ในส่วน วิธีเข้าสู่ระบบ ค่าเริ่มต้นคือปิด การใช้พาสคีย์ต้องเปิดหน้าผู้ดูแลผ่านชื่อโดเมนหรือ localhost บนที่อยู่ IP เช่น 127.0.0.1 เบราว์เซอร์จะปฏิเสธ สวิตช์จึงใช้ไม่ได้และบอกเหตุผล จากนั้นแต่ละคนจัดการพาสคีย์ของตนเองที่หน้า ความปลอดภัยของบัญชี ดู พาสคีย์
อุปกรณ์หาย เข้าสู่ระบบด้วยวิธีอื่น (รหัสผ่าน ลิงก์ทางอีเมล Google หรือ GitHub) แล้วลบพาสคีย์ที่หายที่หน้า ความปลอดภัยของบัญชี เมื่อมี mail ใช้ลิงก์ลงชื่อเข้าใช้ที่เปิดไว้หรือคำขอ reset password บนหน้าลงชื่อเข้าใช้ได้ ถ้าไม่มี mail superadmin ออกลิงก์ตั้งรหัสผ่านจากรายการ ผู้ใช้ ตามด้านล่าง ผู้ใช้ตั้งรหัสผ่านและเข้าสู่ระบบด้วยรหัสผ่านนั้น แล้วจึงลบพาสคีย์ที่หาย
การเป็นเจ้าของรหัสผ่านและการกู้คืน
หัวข้อที่มีชื่อว่า “การเป็นเจ้าของรหัสผ่านและการกู้คืน”ลิงก์รับบัญชีและรีเซ็ตรหัสผ่านมีอายุ 15 นาทีและใช้ครั้งเดียว การออกลิงก์ใหม่ทำให้ลิงก์เก่าใช้ไม่ได้ รหัสผ่านต้องมีอย่างน้อย 12 ตัวอักษร ไม่มีการสมัครสาธารณะ เมื่อมี mail หน้าลงชื่อเข้าใช้ให้ขอ reset password เองได้ ถ้าไม่มี mail ต้องให้ผู้มีสิทธิ์ออกลิงก์กู้คืน
หาก superadmin ที่ใช้งานอยู่เพียงคนเดียวถูกล็อก ผู้ดูแลการดีพลอยอาจใช้ npm run claim:link -- --remote --email <existing-email> จากรีโพซิทอรี CMS คำสั่งปฏิเสธการสร้างบัญชีใหม่หรือรีเซ็ตผู้ใช้ตามอำเภอใจ การติดตั้งครั้งแรกใช้ลิงก์จากตัวติดตั้ง ดูเงื่อนไขใน การติดตั้ง
ซอร์สอ้างอิง: backend/src/api/sites.ts, backend/src/api/users.ts, backend/src/lib/invitation.ts, backend/src/lib/access-provisioning.ts, backend/src/lib/access-identity.ts, backend/src/api/access-provisioning.ts, frontend/src/routes/settings/components/tabs/People.svelte และ scripts/claim-link.ts สิทธิ์ในแบ็กเอนด์แบบอิสระแยกกัน: ดู การยืนยันตัวตนและสิทธิ์เข้าถึงของ artifact (ตัวเลือก) บัญชีและบทบาท CMS ไม่ถูกส่งออกไปด้วย
ขั้นตอนถัดไป
หัวข้อที่มีชื่อว่า “ขั้นตอนถัดไป”พัฒนาด้วย Dee Wan โดยเริ่มจาก การแสดงตัวอย่างและ TypeScript client ที่สร้างให้
เปลี่ยนอีเมลหรือกู้คืนรหัสผ่าน
หัวข้อที่มีชื่อว่า “เปลี่ยนอีเมลหรือกู้คืนรหัสผ่าน”เปิด ความปลอดภัยของบัญชี → เปลี่ยนที่อยู่อีเมล กรอกอีเมลที่ยังไม่มีบัญชีและรหัสจากกล่องจดหมายใหม่ รหัสมีอายุ 15 นาที บัญชี สิทธิ์เว็บไซต์ วิธีลงชื่อเข้าใช้ และประวัติเนื้อหายังคงเดิม เซสชันทั้งหมดจะสิ้นสุดลง ให้ลงชื่อเข้าใช้ด้วยอีเมลใหม่ ต้องตั้งค่าการส่งอีเมลก่อน การลงชื่อเข้าใช้ผ่าน Google หรือ GitHub จะไม่เปลี่ยนอีเมลบัญชี
ที่หน้าลงชื่อเข้าใช้ เลือก ลืมรหัสผ่าน? แล้วกรอกอีเมลเพื่อขอลิงก์ ตัวเลือกนี้แสดงเมื่อระบบส่งอีเมลได้ และเปิดได้โดยยังไม่กรอกอีเมล คำตอบเหมือนกันทั้งอีเมลที่มีและไม่มีบัญชี บัญชีที่ใช้งานอยู่จะได้รับลิงก์ใช้ครั้งเดียวซึ่งมีอายุ 15 นาที หากไม่มีการส่งอีเมล ให้ขอลิงก์จากผู้ดูแลระบบสูงสุดในรายชื่อบุคคล ผู้ดูแลระบบสูงสุดคนสุดท้ายใช้ npm run claim:link -- --remote --email <address> พร้อมข้อมูลรับรองการดีพลอย
กฎรายการของบทบาทที่กำหนดเอง
หัวข้อที่มีชื่อว่า “กฎรายการของบทบาทที่กำหนดเอง”เปิด การตั้งค่า → บทบาท แก้ไขบทบาท แล้วใช้ จำกัดสิทธิ์ตามรายการ: เลือกโมเดล การกระทำ แล้วกด เพิ่มกฎรายการ เลือกเจ้าของหรือฟิลด์ ตัวดำเนินการ และค่าคงที่หรือ ID อีเมล บทบาทผู้ใช้ปัจจุบัน รวมเงื่อนไขด้วยกลุ่ม ทุกเงื่อนไข (AND) หรือ เงื่อนไขใดก็ได้ (OR) จำกัดสี่เงื่อนไขและสามระดับ กลุ่มที่ไม่สมบูรณ์ปิดปุ่มบันทึก และแสดงเหตุผลเมื่อเซิร์ฟเวอร์ปฏิเสธ คีย์โมเดลคือ slug และการกระทำคือ create, read, update, delete กฎจำกัดสิทธิ์ที่ได้รับตามค่าปัจจุบันของรายการ ข้อจำกัดเจ้าของ ฟิลด์ และภาษายังคงใช้ร่วมกัน การแก้ไขต้องผ่านทั้งกฎอ่านและกฎแก้ไขก่อนและหลังบันทึก การสร้างตรวจค่าที่เสนอ การลบและการเปลี่ยนขั้นตอนตรวจค่าปัจจุบัน
การบันทึกหรือกู้คืนภาษาเดียวจะตรวจสิทธิ์ของรายการภาษาหลักและทุกภาษาที่เปลี่ยนแปลง ภาษาอื่นที่ไม่เปลี่ยนแปลงไม่ต้องมีสิทธิ์เพิ่มเติม
{"article":{"read":{"field":"department","op":"in","values":[{"user":"roles"}]},"update":{"field":"assigned_editor","op":"eq","values":[{"user":"id"}]}}}เงื่อนไขมีคีย์ฟิลด์ op (eq, in, contains, empty, not_empty) และ values ค่าเป็นข้อความ หรือ {"user":"id"}, {"user":"email"}, {"user":"roles"} ส่วน {"owner":true} หมายถึงรายการที่ผู้ใช้ปัจจุบันสร้าง รวมกลุ่มด้วย {"join":"and","conditions":[...]} หรือ {"join":"or","conditions":[...]} จำกัดสี่เงื่อนไขและสามระดับกลุ่ม ฟิลด์ร่วมใช้ค่าของภาษาหลัก
บทบาทรวมสิทธิ์เข้าด้วยกัน บทบาทอื่นที่ไม่มีข้อจำกัดยังคงให้สิทธิ์ของตน ข้อจำกัดเจ้าของและกฎของแต่ละบทบาทยังผูกกันเมื่อรวมบทบาท กฎที่ผิดรูปแบบทำให้สิทธิ์ของบทบาทนั้นถูกปฏิเสธ บทบาทที่มอบหมายไม่สามารถลดข้อจำกัดกฎของคุณ กฎนี้ไม่เปลี่ยนการเผยแพร่หรือ URL
ลิงก์ที่บันทึกไว้ยังคงเก็บ ID เมื่อบทบาทของคุณอ่านเป้าหมายไม่ได้ การซ่อนชื่อไม่ได้ยกเลิกลิงก์ ประวัติเวอร์ชันแสดงชื่อและที่อยู่เป้าหมายตามสิทธิ์ปัจจุบัน โดยไม่เปลี่ยนเวอร์ชันที่เก็บไว้
กฎค่ารองรับฟิลด์ข้อความ ตัวเลือก บูลีน ตัวเลข และวันที่ สำหรับตัวเลือก eq และ in จับคู่ ID ตัวเลือกแบบตรงกัน รวมถึงค่าในตัวเลือกหลายค่า โดย [] ถือว่าว่าง contains ใช้กับข้อความเท่านั้น ตัวเลขเปรียบเทียบตามค่าตัวเลข บูลีนใช้ true หรือ false และวันที่ใช้ YYYY-MM-DD ฟิลด์ที่หายไปหรือเปลี่ยนชื่อจะปฏิเสธการเข้าถึง รวมถึงกฎ empty ใช้ empty หรือ not_empty กับ values: [] ระบบไม่รับค่าเปรียบเทียบที่เป็นข้อความว่าง.
ประวัติการดูแลระบบ
หัวข้อที่มีชื่อว่า “ประวัติการดูแลระบบ”เปิด การตั้งค่า → ประวัติ โดยมีสิทธิ์ audit:read เพื่อตรวจการเปลี่ยนแปลงโมเดล บทบาท สิทธิ์เข้าถึง โทเค็น การตั้งค่า ชื่อโฮสต์ และการดีพลอยของเว็บไซต์นี้ กรองตามการดำเนินการ ผลลัพธ์ บุคคล เป้าหมาย หรือวันที่ แล้วใช้ ดาวน์โหลด CSV เพื่อส่งออกผลลัพธ์ตามตัวกรอง ผลลัพธ์ ไม่ทราบ ไม่ยืนยันว่าทำสำเร็จหรือล้มเหลว แก้ไขหรือลบรายการที่นี่ไม่ได้ ส่วนเนื้อหามี ประวัติเวอร์ชัน แยกต่างหาก
ยังไม่เปิดตัว (pre-MVP) และยังไม่มีเวอร์ชันเสถียร
คอมมิตซอร์สโค้ด: fe23db481c422b40e317b92fc98116b4c0c26a87 (มีการแก้ไขที่ยังไม่คอมมิต)
วันที่สร้างเอกสาร (UTC): 2026-10-18T09:22:34.630Z
คอมมิตสำหรับอัปเกรด: ระบุไม่ได้: มีการแก้ไขที่ยังไม่คอมมิต. บันทึกการเปลี่ยนแปลง