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.erb
e 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.rb
e 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 https://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 https://localhost:3000/users/sign_in para logar.
Passo 5: 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 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?
- Crie campos extras no modelo de usário;
- Crie relacionamentos entre usuários e ideas;
- Restrinja o acesso de usuário para edição somente de suas ideas;
- Expanda para criar competências e permissões (use uma das populares autorizações gem, tal como CanCan.)