ฉันสร้างระบบเข้าสู่ระบบด้วย Devise และ CanCan ได้สำเร็จ และฉันมีผู้ใช้ 3 ประเภท ผู้ดูแลระบบ ผู้ใช้ภายในและทั่วโลก ฉันสร้างตัวควบคุมและการดำเนินการดัชนี: ผู้ดูแลระบบ, Cpanel, รายงาน และสถานะ และฉันต้องการจำกัดการเข้าถึงตัวควบคุมนี้สำหรับผู้ใช้บางราย
ผู้ใช้ที่เป็นผู้ดูแลระบบ ควรมีสิทธิ์ในการเข้าถึง: รายงาน(ทั้งหมด), สถานะ (อ่าน), ผู้ดูแลระบบ (ทั้งหมด)
ผู้ใช้ทั่วโลก ควรมีสิทธิ์ในการเข้าถึง: รายงาน (อ่านเท่านั้น) รัฐ (อ่าน) Cpanel (ทั้งหมด)
ผู้ใช้ภายใน ควรมีสิทธิ์ในการเข้าถึง: รายงาน(ทั้งหมด), สถานะ (อ่าน)
และฉันพยายามทำสิ่งนี้ด้วยโค้ดต่อไปนี้ใน ability.rs:
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user (not logged in)
if user.role? :admin
can :manage, [Report, Admin]
can :read, State
elsif user.role? :global_user
can :read, [Report, State]
can :manage, Cpanel
elsif user.role? :internal_user
can :manage, Report
can :read, State
end
end
end
ในขณะนี้ ฉันมีเพียงการดำเนินการดัชนีในคอนโทรลเลอร์นี้ และเมื่อฉันลงชื่อเข้าใช้แอปด้วยผู้ใช้ภายใน ฉันสามารถเข้าถึง /admin ได้ และนั่นไม่ใช่พฤติกรรมที่ฉันต้องการ ฉันต้องการจำกัดการเข้าถึงคอนโทรลเลอร์ทั้งหมด แทนที่จะเป็นคอนโทรลเลอร์ที่แสดงอยู่ในคลาส ability.rb