Ruby on rails ve güvenlik - routes
Rails uygulamalarında route'ların güvenliğini sağlarken Devise gibi authentication GEM'lerinin sağladığı helper'lardan ve lambda metodundan yararlanabilirsiniz. Örneğin sadece super_admin
rolüne sahip kullanıcılara açık olmasını istediğiniz route'ları şu şekilde tanımlayabilirsiniz:
# config/routes.rb
authenticate :user, lambda { |u| u.is_super_admin? } do
mount Resque::Server => '/admin/resque'
namespace :admin do
resources :ip_lists, except: :show
resources :token_users, except: :show
end
end
Artık admin/resque
, admin/ip_lists
ve admin/token_users
yolları sadece super_admin
'ler için erişilebilir olacak.
Model tarafında ise is_super_admin?
metodunu şu şekilde tanımlı:
# app/models/user.rb
has_and_belongs_to_many :roles, -> { uniq }
def is_super_admin?
roles.find_by_name("Super Admin").present?
end
Selamlar.