Autenticação com Devise
Criado por Piotr Steininger, @polishprince
Atualizado por Ernesto Jimenez, @ernesto_jimenez
Traduzido por Maujor, site do Maujor
Esse guia assume que você já criou a app RailsGirls como mostrado no tutorial para criação da app Rails Girls.
1. Adicione a gem Devise
Abra sua Gemfile
e acrescente a seguinte linha de código:
gem 'devise'
e execute
bundle install
para instalar a gem. Não se esqueça de restartar o servidor Rails.
2. Configure devise na sua app
Execute o seguinte comando no terminal:
rails g devise:install
3. Configure Devise
Assegure-se de ter definido as opções default para URL no ambiente dos seus arquivos. Abra config/environments/development.rb
e adicione a seguinte linha de código:
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
antes da palavra-chave end
.
Abra app/views/layouts/application.html.erb
e adicione o seguinte:
<% if notice %>
<p class="alert alert-success"><%= notice %></p>
<% end %>
<% if alert %>
<p class="alert alert-danger"><%= alert %></p>
<% end %>
acima de
<%= yield %>
Abra app/views/ideas/show.html.erb
e remova a seguinte linha:
<p id="notice"><%= notice %></p>
Faça o mesmo em app/views/comments/show.html.erb
. Aquelas linhas não são necessárias, pois nós acrescentamos notice no arquivo app/views/layouts/application.html.erb
.
4. Configure o modelo de usuários
Usaremos um script gerador de empacotamento para criar o modelo de usuários.
rails g devise user
rake db:migrate
Instrutor(a): Explicar qual foi o modelo de usuário criado. Qual a finalidade dos campos?
5. Criando o primeiro usuário
Agora que está tudo devidamente configurado podemos criar nosso primeiro usuário. Devise gera todos os códigos e caminhos necessários para criar contas, log in, log out, etc.
Certifique-se de que o servidor rails está rodando, abra http://localhost:3000/users/sign_up e crie uma conta de usuário.
6. Crie links para cadastramento e login
Agora só nos resta criar links e notificação de usuário logado no canto superior direito da barra de navegação.
Para fazer isso edite app/views/layouts/application.html.erb
e acrescente as seguintes linhas:
<p class="navbar-text float-right">
<% if user_signed_in? %>
Logado como: <strong><%= current_user.email %></strong>.
<%= link_to 'Editar perfil', edit_user_registration_path, :class => 'navbar-link' %> |
<%= link_to "Logout", destroy_user_session_path, method: :delete, :class => 'navbar-link' %>
<% else %>
<%= link_to "Registrar-se", new_user_registration_path, :class => 'navbar-link' %> |
<%= link_to "Login", new_user_session_path, :class => 'navbar-link' %>
<% end %>
logo após
<ul class="navbar-nav mr-auto">
<li class="nav-item active">
<a class="nav-link" href="/ideas">Ideas</a>
</li>
...
</ul>
Para finalizar force o usuário a ser redirecionado para a página de login se ele não estiver logado. Abra app/controllers/application_controller.rb
e adicione a seguinte linha:
before_action :authenticate_user!
depois de class ApplicationController < ActionController::Base
.
Abra seu navegador e execute as ações de login e logout.
Instrutor(a): Falar sobre user_signed_in?
e current_user
helpers. Qual é a utilidade destas funcionalidades?
O que vem a seguir?
- Acrescente campos extras no modelo de usuários
- Adicione relacionamentos entre usuários e ideas
- Crie restrições de modo a permitir que usuários editem somente suas próprias ideas e apague seus próprios comentários
- Permita expandir roles ou permissões para usuários (use uma das gem populares, tal como like CanCan)
Outros Guias
- Handy cheatsheet for Ruby, Rails, console etc.
- Guia 1: Tutorial de Instalação para Rails Girls
- Guia 2: Tutorial para criação da app Rails Girls
- Guia 3: Como enviar para o GitHub
- Guia 4: Colocando seu app online em…
- Guia 5: Funcionalidades de uma área de comentários para a app Rails Girls
- Guia 6: Adicione design à sua aplicação com HTML e CSS
- Guia 7: Thumbnails em listas de ideas
- Guia 8: Autenticação (para usuários) com Devise (Você está aqui!)
- Guia 9: Adicionando Gravatar para a aplicação
- Guia 10: Melhorando seu design da sua aplicação com HTML e CSS
- Guia 11: Continuous Deployment
- Guia 12: Construindo um aplicativo de votação em Sinatra
- Guia 13: Construa um diário em Ruby on Rails
- Guia 14: Adicione back-end ao seu aplicativo (páginas de administração)
- Guia 15: Acesse explicações adicionais do app Rails Girls