Devise antes do filtro que impeça o acesso a "new_user_registration_path", a menos que o usuário esteja assinado
-
26-09-2019 - |
Pergunta
Estou usando o Devise no meu aplicativo Rails. Meu modelo de usuários é registrável, o que significa que qualquer um pode ir para /Usuários/Sign_up e crie uma nova conta.
É possível proteger essa rota, para que apenas os usuários assinados possam criar novas contas?
Solução
Crie um controlador com a classe Devise :: RegistrationsController Heriting. Depois de adicionar seu filtro. Você só precisa definir este controlador como o controlador de registro
class RegistrationsController < Devise::RegistrationsController
before_filter :authenticate_user!
end
Em suas rotas.rb
devise_for :users, :controllers => { :registrations => 'registrations'}
Outras dicas
Não funcionou para mim porque authenticate_user!
não está sendo chamado.
Eu consertei assim:
class RegistrationsController < Devise::RegistrationsController
before_filter :prevent_sign_up
private
def prevent_sign_up
redirect_to new_user_session_path and return
end
end
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow