Autenticação com Devise

Criado por Piotr Steininger, @polishprince

Esse guia assume que você já criou a aplicação RailsGirls de acordo com o nosso guia de desenvolvimento de app.

Passo 0: Adicione a gem Devise

Abra o arquivo Gemfile e acrescente a seguinte linha de código:

gem 'devise'

a seguir rode:

bundle install

para instalar gem

Passo 1: Configure devise na sua app

Abra o terminal ou o command prompt (em Windows), vá para o diretório das suas app’s e execute. Em seguida digite a seguinte linha de código no terminal:

rails g devise:install

Passo 2: 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:3000' }

antes da palavra-chave end.

Abra config/routes.rb e acrescente a seguinte linha de código:

   root :to => "home#index"

antes da palavra-chaveend.

Abra app/views/layouts/application.html.erbe acrescente as seguintes linhas de código:

    <p class="notice"><%= notice %></p>
    <p class="alert"><%= alert %></p>

logo acima de:

   <%= yield %>

Finalmente, se sua intenção é publicar com heroku, você deve abrirconfig/application.rbe acrescentar a seguinte linha de código:

  config.assets.initialize_on_precompile = false

na posição de terceira linha a partim do fim (antes das duas últimas palavras-chave end)

Passo 3: Configure o modelo de usuários

Usaremos um script gerador de empacotamento para criar o modelo de usuários apropriado para uso com Devise.

   rails g devise user

Faça as modificações que você precisa no recém criado app/models/user.rb, bem como a migração no diretório db/migrate. Terminada a configuração execute:

  rake db:migrate

para configurar o banco de dados.

Passo 4: Crie alguns usuários

Dependendo da configuração do modelo de usuários que você adotou será possível realizar o registro de usuário diretamente no navegador. Nesse caso assegure-se que o servidor está rodando e vá para http://localhost:3000/users/sign_up.

Caso contrário, você pode criar usuários pelo console rails:

 rails c

crie o usuário como mostrado a seguir (substitua os valores do exemplo com seus próprios valores)

 User.create(:email=>"me@example.com",:password => "test123", :password_confirmation => "test123")

Vá para http://localhost:3000/users/sign_in para logar.

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 modifique as seguintes linhas de código em app/views/layouts/application.html.erb:

<div class="navbar navbar-fixed-top">
  <div class="navbar-inner">
    <div class="container">
      <a class="brand" href="/">The Idea app</a>
      <ul class="nav">
        <li class="active"><a href="/ideas">Ideas</a></li>
      </ul>
    </div>
  </div>
</div>

para:

<div class="navbar navbar-fixed-top">
  <div class="navbar-inner">
    <div class="container">
      <a class="brand" href="/">The Idea app</a>
      <ul class="nav">
        <li class="active"><a href="/ideas">Ideas</a></li>
      </ul>
      <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 %>
      </p>
    </div>
  </div>
</div>

Teste seu login e logout.

O que vem a seguir?