2010-11-03 4 views
2

Je dois m'assurer qu'un utilisateur a les permissions correctes avant de leur permettre de modifier les informations d'un employé. Plus précisément, l'utilisateur doit être un administrateur et l'utilisateur doit appartenir à la même société que l'employé. Quelle est la meilleure façon de faire quelque chose comme ça?before_filter avec des paramètres pour authentifier les permissions de l'utilisateur

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 [email protected]_user.admin? || @current_user.company_id != cid 
     redirect_to login_url 
    end 
    end 
end 

Répondre

5

Que diriez-vous

before_filter lambda{ requires_admin_from_company(params[:cid]) }, :only => :create 
Questions connexes