ACL9 e o Devise não parecem funcionar bem juntos
-
26-09-2019 - |
Pergunta
Eu tenho um modelo de usuário cujo acesso controlado pelo ACL9.
dentro UsersController
:
#ACL9 related stuff
before_filter :load_user, :only => [:show]
access_control do
allow :owner, :of => :user, :to => [:show]
end
def load_user
user = User.find(params[:id])
end
dentro ApplicationController
:
rescue_from 'Acl9::AccessDenied', :with => :access_denied
def access_denied
authenticate_user! # a method from Devise
end
Não há problema em digitar URL para assinar a página http://localhost:3000/users/sign_in
, mas é um problema quando, por exemplo, digito primeiro a página do usuário, que devo ser redirecionada para entrar automaticamente na página através da lógica acima.
http://localhost:3000/users/1
=> Infinito redirecionou o inferno. Tenta redirecionar de volta para users/1
novamente em vez de dirigir para users/sign_in
.
Alguém tem uma opinião sobre o que pode estar errado?
Solução
Eu acho que você não deve usar o ACL9 no controlador de usuário. Como você não é autenticado, você não tem direitos e não autenticará: d. Você pode proibir os usuários de excluir, por isso deve ser como:
access_control :only => [:destroy] do
allow :admin
end
Para o UsuárioController, você deve substituir seu access_control se quiser deixá -lo como está no controlador de aplicativos.