before_filter с параметрами для аутентификации прав пользователя - PullRequest
2 голосов
/ 04 ноября 2010

Мне нужно убедиться, что у пользователя есть правильные разрешения, прежде чем он сможет редактировать информацию о сотруднике.В частности, пользователь должен быть администратором, а пользователь должен принадлежать к той же компании, что и сотрудник.Какой лучший способ сделать что-то подобное?

def EmployeesController < ApplicationController
  before_filter :requires_admin_from_company(cid)

  # Only allow access to this if user.admin is true and user.company_id is equal to employee.company_id
  def update
    # Somehow pass @employee.company_id into admin
    @employee = Employee.find(params[:id])
    @employee.update_attributes(params[:employee])
  end

  def requires_admin_from_company(cid)
    if !@current_user.admin? || @current_user.company_id != cid
      redirect_to login_url
    end
  end
end

Ответы [ 2 ]

5 голосов
/ 04 ноября 2010

Как насчет

before_filter lambda{ requires_admin_from_company(params[:cid]) }, :only => :create
3 голосов
/ 14 декабря 2011

Я нашел Авторизация с помощью CanCan , чтобы быть очень полезной в этих ситуациях

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...