Adicionando Autenticação com Devise

Criado por Piotr Steininger, @polishprince

Atualizado por Ernesto Jimenez, @ernesto_jimenez

Este tutorial assume que você já criou a aplicação Rails Girls seguindo o tutorial de desenvolvimento de aplicação.

1.Adicione a gem devise

Abra o seu Gemfile e adicione a seguinte linha

gem 'devise'

Depois, execute o seguinte comando no terminal

bundle install

para instalar a gem. Lembre-se de dar restart no servidor Rails.

2.Configurando o devise na saua aplicação

Execute o seguinte comando no terminal.

rails g devise:install

3.Configurando o Devise

Certifique-se que você tenha definido uma opção de url padrão nos seus arquivos de ambiente. Abra config/environments/development.rb e adicione esta linha:

   config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

anes da palavra chave end.

Abra app/views/layouts/application.html.erb e adicione:

<% if notice %>
  <p class="alert alert-success"><%= notice %></p>
<% end %>
<% if alert %>
  <p class="alert alert-danger"><%= alert %></p>
<% end %>

logo acima de

   <%= yield %>

Abra app/views/ideas/show.html.erb e remova a linha que diz:

<p id="notice"><%= notice %></p>

Faça o mesmo em app/views/comments/show.html.erb. Estas linhas não são mais necessárias agora que colocamos o notice no arquivo app/views/layouts/application.html.erb.

4.Configure o modelo de Usuário

Nós utilizaremos um script gerador para criar o modelo User.

   rails g devise user
   rake db:migrate

Treinadores: Explicar o que é o modelo de usuários que foi criado. O que são esses campos?

5.Crie o seu primeiro usuário

Agora que você configurou tudo, podemos criar o nosso primeiro usuário. O Devise cria todo o código e rotas necessárias para criar novas contas, efeturar log in, log out, etc.

Certifique-se de que o seu servidor rails está rodando, abra http://localhost:3000/users/sign_up e crie a sua primeira conta de usuário.

Tudo que precisamos fazer agora é adicionar os links e avisos apropriados no canto direito da barra de navegação para o usuário que realizou o login

Para isso, edite app/views/layouts/application.html.erb e adicione:

<p class="navbar-text pull-right">
<% if user_signed_in? %>
  Logged in as <strong><%= current_user.email %></strong>.
  <%= link_to 'Edit profile', edit_user_registration_path, :class => 'navbar-link' %> |
  <%= link_to "Logout", destroy_user_session_path, method: :delete, :class => 'navbar-link'  %>
<% else %>
  <%= link_to "Sign up", new_user_registration_path, :class => 'navbar-link'  %> |
  <%= link_to "Login", new_user_session_path, :class => 'navbar-link'  %>
<% end %>

logo depois de

<ul class="nav">
  <li class="active"><a href="/ideas">Ideas</a></li>
</ul>

Finalmente, redirecione o usuário para a página de login se ele não estiver logado. Abra app/controllers/application_controller.rb e adicione:

  before_action :authenticate_user!

depois de protect_from_forgery with: :exception.

Abra o seu navegador e tente realizar login e logout.

Treinadores: Fale sobre os helpers user_signed_in? e current_user. Por que eles são úteis?

Anterior   Próximo