นี่คือฐานรหัสสำหรับรัฐบาลสหราชอาณาจักรและบริการคำร้องของรัฐสภา
เราขอแนะนำให้ใช้ Docker Desktop เพื่อรับการตั้งค่าอย่างรวดเร็ว หากคุณไม่ต้องการใช้ Docker คุณจะต้องมี Ruby (3.2+), Node (20+) และ PostgreSQL (16+) ติดตั้ง
docker compose run --rm web rake db:setup
docker compose run --rm web rake epets:countries:load
docker compose run --rm web rails runner 'FetchRegionsJob.perform_now'
docker compose run --rm web rails runner 'FetchConstituenciesJob.perform_now'
docker compose run --rm web rails runner 'FetchDepartmentsJob.perform_now'
docker compose run --rm web rails runner 'Site.enable_signature_counts!(interval: 10)'
docker compose up
เมื่อบริการเริ่มต้นแล้วคุณสามารถเข้าถึงส่วนหน้าด้านหลังและอีเมลใด ๆ ที่ส่ง
ก่อนที่จะทำการทดสอบใด ๆ ฐานข้อมูลจะต้องเตรียม:
docker compose run --rm web rake db:test:prepare
คุณสามารถเรียกใช้ชุดทดสอบเต็มรูปแบบโดยใช้คำสั่งต่อไปนี้:
docker compose run --rm web rake
รายละเอียดแต่ละรายการสามารถเรียกใช้ได้โดยใช้คำสั่งต่อไปนี้:
docker compose run --rm web rspec spec/models/parliament_spec.rb
ในทำนองเดียวกันคุณสมบัติแตงกวาแต่ละตัวสามารถเรียกใช้ได้โดยใช้คำสั่งต่อไปนี้:
docker compose run --rm web cucumber features/suzie_views_a_petition.feature
พอร์ทัลการกลั่นกรองได้รับการรับรองความถูกต้องโดยใช้อัญมณี Omniauth และใช้เครื่องห่อน้ำหนักรอบกลยุทธ์เพื่อให้สามารถรองรับกลยุทธ์หลายอย่างได้เช่นผู้ให้บริการข้อมูลประจำตัว SAML สองรายขึ้นไป
config/sso.yml
มีการกำหนดค่าของกลยุทธ์ Developer
สำหรับการพัฒนาในท้องถิ่นซึ่งไม่ควรใช้ในการผลิต การกำหนดค่าการทดสอบในไฟล์แสดงวิธีการกำหนดค่า SAML IDP ทั่วไป
มีคุณสมบัติหลักสี่ประการที่ต้องส่งคืนในแฮช omniauth auth_info
แฮชสิ่งเหล่านี้เป็น first_name
, last_name
, email
และ groups
แอตทริบิวต์ email
ทำหน้าที่เป็น UID สำหรับผู้ใช้และแอตทริบิวต์ groups
ควบคุมบทบาทที่พวกเขาได้รับมอบหมาย
แอตทริบิวต์การกำหนดค่าคือ:
ชื่อ
นี่คือแอตทริบิวต์ที่จำเป็นและต้องไม่ซ้ำกัน นอกจากนี้ยังต้องเหมาะสำหรับใช้ใน URL เนื่องจากเป็นส่วนหนึ่งของ URL การโทรกลับสำหรับ Omniauth
กลยุทธ์
นี่คือกลยุทธ์ omniauth ที่จะใช้เป็นคลาสหลักสำหรับผู้ให้บริการข้อมูลประจำตัว
โดเมน
รายการโดเมนอีเมลที่จะใช้กับผู้ให้บริการตัวตนนี้เช่น
domains :
- " example.com "
บทบาท
ควบคุมการแมปของแอตทริบิวต์ groups
กับบทบาทที่กำหนดเช่น
roles :
sysadmin :
- " System Administrators "
moderator :
- " Petition Moderators "
reviewer :
- " Petition Reviewers "
ค่าเริ่มต้นสำหรับทั้งสามบทบาทคือชุดที่ว่างเปล่าดังนั้นหากผู้ให้บริการข้อมูลประจำตัวถูกใช้สำหรับหนึ่งในบทบาทเท่านั้นไม่จำเป็นต้องกำหนดค่าผู้อื่น
การกำหนดค่า
นี่คือการกำหนดค่าที่ส่งผ่านไปยังกลยุทธ์ Omniauth และควรเป็นแฮชของตัวเลือกที่บันทึกไว้ซึ่งสนับสนุนโดยกลยุทธ์