การสร้าง API
การสร้าง APIการกำหนดการควบคุมการเข้าถึง

การกำหนดการควบคุมการเข้าถึง

เราสามารถจัดการว่าใครสามารถเข้าถึงทุกฟิลด์และ directive ในสคีมาได้ผ่านรายการควบคุมการเข้าถึง

Gato GraphQL มาพร้อมกับกฎการควบคุมการเข้าถึงดังต่อไปนี้:

  • ปิดใช้งานการเข้าถึง
  • อนุญาตการเข้าถึงหากผู้ใช้เข้าสู่ระบบหรือออกจากระบบ
  • อนุญาตการเข้าถึงหากผู้ใช้มีบทบาทบางอย่าง
  • อนุญาตการเข้าถึงหากผู้ใช้มีความสามารถบางอย่าง
  • อนุญาตการเข้าถึงหากผู้เยี่ยมชมมาจาก IP address ที่ได้รับอนุญาต

เมื่อใดก็ตามที่ queries ที่ร้องขอ (ไม่ว่าจะดำเนินการผ่าน custom endpoint หรือเป็น persisted query) มีฟิลด์หรือ directive อย่างน้อยหนึ่งรายการที่เพิ่มลงในรายการควบคุมการเข้าถึง กฎที่เกี่ยวข้องจะถูกประเมิน หากกฎใดกฎหนึ่งไม่ได้รับการปฏิบัติตาม การเข้าถึงฟิลด์หรือ directive นั้นจะถูกปฏิเสธ

การกำหนดค่าถูกสร้างขึ้นผ่านรายการควบคุมการเข้าถึง (ACL) และส่งไปยัง custom endpoints และ persisted queries ผ่านการกำหนดค่าสคีมา

การเข้าถึงรายการควบคุมการเข้าถึงทั้งหมด

คลิกที่ "Access Control Lists" ในเมนูของปลั๊กอิน จะแสดงรายการของรายการควบคุมการเข้าถึงทั้งหมดที่สร้างขึ้น:

รายการควบคุมการเข้าถึงในหน้าผู้ดูแลระบบ
รายการควบคุมการเข้าถึงในหน้าผู้ดูแลระบบ

การสร้างรายการควบคุมการเข้าถึงใหม่

คลิกที่ปุ่ม "Add New Access Control List" เพื่อเปิด WordPress editor:

การสร้างรายการควบคุมการเข้าถึง

ตั้งชื่อให้กับรายการควบคุมการเข้าถึง เพิ่ม entries ที่มี operations, fields และ directives กำหนดกฎที่ใช้บังคับ และกำหนดการมองเห็น (สาธารณะหรือส่วนตัว):

การสร้างรายการควบคุมการเข้าถึง

เมื่อพร้อมแล้ว คลิกที่ปุ่ม Publish จากนั้นรายการควบคุมการเข้าถึงใหม่จะพร้อมใช้งานในการกำหนดค่าสคีมา

Access Control entries

ทุก Access Control List ประกอบด้วย entry หนึ่งรายการขึ้นไป โดยแต่ละรายการมีองค์ประกอบดังต่อไปนี้:

  • Operations ที่จะอนุญาตหรือปฏิเสธการเข้าถึง
  • Fields ที่จะอนุญาตหรือปฏิเสธการเข้าถึง
  • Directives ที่จะอนุญาตหรือปฏิเสธการเข้าถึง
  • รายการกฎที่จะตรวจสอบ

Access control entry

การเลือกฟิลด์จาก interfaces

นอกจากฟิลด์จาก types แล้ว เรายังสามารถเลือกฟิลด์จาก interfaces ได้อีกด้วย ในกรณีนี้ การตรวจสอบการควบคุมการเข้าถึงจะดำเนินการกับ types ทั้งหมดที่ implement interface นั้น

การเลือกฟิลด์จาก interface
การเลือกฟิลด์จาก interface

โหมดสาธารณะ/ส่วนตัว

หากเปิดใช้งานโมดูล "Public/Private Schema" เมื่อการเข้าถึงฟิลด์หรือ directive บางรายการถูกปฏิเสธ API สามารถทำงานได้ 2 วิธี:

  • โหมดสาธารณะ: แสดงข้อความแสดงข้อผิดพลาดแก่ผู้ใช้ โดยระบุเหตุผลที่การเข้าถึงถูกปฏิเสธ
  • โหมดส่วนตัว: ข้อความแสดงข้อผิดพลาดระบุว่าฟิลด์หรือ directive ไม่มีอยู่

หากโมดูลนี้ไม่ได้เปิดใช้งาน ลักษณะการทำงานเริ่มต้นจะเป็นแบบสาธารณะ

โหมดสาธารณะ/ส่วนตัวแบบละเอียด

หาก ตัวเลือก "Enable granular control?" จากโมดูล "Public/Private Schema" เป็น on entry จะมีองค์ประกอบเพิ่มเติม:

  • Public/Private Schema: ลักษณะการทำงานเมื่อการเข้าถึงถูกปฏิเสธ
โหมด Public/Private สคีมาแบบรายบุคคล
โหมด Public/Private สคีมาแบบรายบุคคล

การอธิบายรายการควบคุมการเข้าถึง

ใช้ฟิลด์ "Excerpt" จากแผง Document settings เพื่อให้คำอธิบายแก่รายการควบคุมการเข้าถึง

ดูข้อมูลเพิ่มเติมในคู่มือ การเพิ่มคำอธิบายให้กับ API

การใช้รายการควบคุมการเข้าถึง

หลังจากสร้าง ACL แล้ว เราสามารถให้ Custom Endpoint หรือ Persisted Query ใช้งานได้โดย แก้ไข Schema Configuration ที่เกี่ยวข้อง และเลือก ACL จากรายการภายใต้บล็อก "Access Control Lists"

การเลือก Access Control List ใน Schema Configuration
การเลือก Access Control List ใน Schema Configuration

หากไม่ได้กำหนดค่าแบบกำหนดเอง รายการควบคุมการเข้าถึงเริ่มต้นที่กำหนดไว้ในหน้า Settings ภายใต้แท็บ "Access Control" จะถูกใช้:

การเลือกรายการควบคุมการเข้าถึงเริ่มต้นในหน้า Settings