Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #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.
- def destroy
- authorize current_user
- @lodger.destroy
- respond_to do |format|
- format.html { redirect_to lodgers_url, notice: 'Lodger was successfully destroyed.' }
- format.json { head :no_content }
- end
- end
- #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
- def destroy?
- not current_user.admin?
- end
- #conforme definido no model user com o enum
- enum role: [:normal_user, :admin]
- # e no index da view lodger eu ainda verifico se o usuario que está logado é mesmo o admin da seguinte forma
- <% if current_user.admin? %>
- <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.
- <%= render 'admin_index' %>
- <% else %>
- <%= render 'normal_user_index' %>
- <% end%>
- #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