Rolify Gem with Cancancan and Devise
Bài đăng này đã không được cập nhật trong 8 năm
Vấn đề phân quyền trong các ứng dụng vẫn luôn là một vấn đề nhức đầu với tất cả những nhà phát triển Như mọi người đã biết Cancancan là một trong những gem phổ biến nhất để phân quyền. Và Rolify là một gem hỗ trợ rất nhiều cho Cancancan trong sự phân quyền đó.
- Cài đặt
gem "rolify"
gem "devise"
gem "cancan"
Sau khi insert gem và chạy bundle install cần cài đặt Devise bằng câu lệnh rails generate devise:install
và rails generate devise User
.
Tiếp theo là cài đặt role cho user bằng lệnh rails generate rolify Role User
Sau khi chạy, ứng dụng của bạn sẽ sinh ra
invoke active_record
create app/models/role.rb
invoke test_unit
create test/models/role_test.rb
create test/fixtures/roles.yml
insert app/models/role.rb
create db/migrate/20160507180239_rolify_create_roles.rb
insert app/models/user.rb
create config/initializers/rolify.rb
Tiếp sau đó cần cài đặt Cancancan bằng câu lệnh
rails generate cancan:ability
Cuối cùng là migrate
rake db:migrate
- Cách sử dụng
Lúc này, bạn có thể tạo roles và assign cho chúng sử dụng rolify gem. Bạn có thể sử dụng các role như sau:
user = User.find(1)
# Để thêm 1 quyền cho user
user.add_role :admin
# Để check 1 user có quyền không
user.has_role? :admin
# Để xóa quyền
user.remove_role :admin
Nếu có lỗi khi add 1 role cho user thì hãy xóa optional: true trong model role.rb
Trong ability.rb bạn có thể sử dụng như sau:
if user.has_role? :admin
can :manage, :all
else
can :read, :all
end
Mong rằng bài viết nho nhỏ này có thể giúp bạn sử dụng Cancancan nhanh hơn trong quá trình kiểm tra quyền của ứng dụng!
Cảm ơn đã dành thời gian cho bài viết của mình
All rights reserved