Estou usando o Devise para autenticação em meu aplicativo.
Como proíbo certos usuários de entrar - meio que desabilitar um usuário?
ruby-on-rails
devise
Dimitar Vouldjeff
fonte
fonte
Respostas:
Faça isso deste modo:
Crie uma coluna chamada
is_active
para oUser
modelo.Em seguida, adicione o código abaixo ao
User
modelo:ATUALIZAR
Como Matt Huggins observa, o método agora é chamado
active_for_authentication?
( Documentação )fonte
active_for_authentication?
vez de apenasactive?
.the method is now called active_for_authentication?
significa que o nome do seu método deve ser emactive_for_authentication?
vez deactive?
.active_for_authentication?
tem que ser um método público!super and self.is_active?
pode ser simplificado parasuper && is_active?
Adicionar uma coluna para o
User
modelo:allowed_to_log_in
.Em seguida, adicione isso a
/app/models/user.rb
:Se quiser informar o usuário com uma mensagem personalizada, você também pode adicionar:
Acho que é muito importante porque a mensagem padrão do Devise diz:
Isso é confuso para os usuários e o verdadeiro motivo é que você os "proibiu" de fazer login.
fonte
Você deseja fazer autorização, não autenticação. No entanto, o Devise só faz autenticação.
Ou seja, inventar apenas informa que um usuário é quem diz ser.
Você precisa de algo mais para proibi-lo de usar o site.
Autorização é um tópico popular e há uma lista completa de joias que podem ajudá-lo com isso:
http://ruby-toolbox.com/categories/rails_authorization.html
Faça sua escolha.
fonte
Parece que você pode estar interessado em cancan
fonte