Advertisement
Guest User

Untitled

a guest
Aug 3rd, 2015
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 1.38 KB | None | 0 0
  1. #controller lodger coloquei essa função authorize, passando usuário que está logando no sistema, dentro do metodo destroy, isto é, quero que apenas o usuario admin possa realizar a operação de deleção.
  2.  
  3.  def destroy
  4.     authorize current_user
  5.  
  6.     @lodger.destroy
  7.     respond_to do |format|
  8.       format.html { redirect_to lodgers_url, notice: 'Lodger was successfully destroyed.' }
  9.       format.json { head :no_content }
  10.     end
  11.   end
  12.  
  13.  
  14.  
  15. #dentro do arquivo lodger_policy que foi gerado pelo pundit eu coloquei o metodo def destroy para ele vai buscar #exatamente nesse local e fazer a verificação se o usuário é admin ou normal_user
  16.  
  17.     def destroy?
  18.         not current_user.admin?
  19.     end
  20.  
  21. #conforme definido no model user com o enum
  22. enum role: [:normal_user, :admin]
  23.  
  24. # e no index da view lodger eu ainda verifico se o usuario que está logado é mesmo o admin da seguinte forma
  25.  
  26. <% if current_user.admin? %>
  27. <li><%=current_user.admin?%></li>   ##isto é, aqui nessa linha ele retorna true se o usuário realmente for admin, além                                        #de renderizar a tela de forma diferente.
  28.   <%= render 'admin_index' %>
  29. <% else %>
  30.   <%= render 'normal_user_index' %>
  31. <% end%>
  32.  
  33.  
  34. #mas o problema é que mesmo ele retornando true no inicio da index, confirmando que o usuário realmente é um admin ele #não autoriza utilizar a função de deleção. por favor, me ajudem.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement