Rails Girl – Rails for Newbies

Ruby on Rails for Newbies

Criando uma Tela de Login julho 29, 2008

Filed under: Restful Authentication — amandavarella @ 1:32 am

Atenção: eu fiz isso com rails 2.1, não sei como funciona com as versões anteriores.

Depois de brigar um dia inteiro (e ao final do dia perceber que não precisava nada disso…) consegui criar uma interface de login, que como vocês verão aqui é muito simples.
Eu sabia que existia uma gem, ou um plugin sei lá.. que já gerava as interfaces para cadastro de usuário, login no sistema e talz.. mas eu não sabia qual era, e fiquei inutilmente o dia inteiro tentando tentar um plugin com um nome bastante sugestivo “login_generator”. Depois de muito pesquisar e bater cabeça, cheguei finalmente ao “restful_authentication” o plugin de nome nada sugestivo para a criação das nossas interfaces de acesso de usuário.
Para começarmos precisamos de um projeto, se vc ainda não o tem, para criá-lo digite:

rails meuprojeto

Com o seu projeto criado, vc deverá então instalar este plugin, com os seguintes comandos:

script/plugin source http://svn.techno-weenie.net/projects/plugins/
script/plugin install restful_authentication

Em seguida, gere os seus controles da seguinte maneira:

script/generate authenticated user sessions

MUITA CALMA NESSA HORA! REPARE, RESPEITE O SINGULAR E O PLURAL!!! user (no singular) sessions (no plural), gerará dois controllers um “users”e outro “sessions”. No tutorial que eu estava lendo estava errado! E eu perdi mais um tempo com isso… bem, eu ainda não entendi muito bem essa coisa de singular e plural do rails não, mas segundo o carinha de um mini-curso que eu assisti, isto é normal e a gente se acostuma com o tempo

Altere o seu arquivo routes.rb (dentro do diretório config) para que ele fique assim:

ActionController::Routing::Routes.draw do |map|
  map.resources :users
  map.resource :session, :controller => :sessions
  map.signup '/signup', :controller => 'users', :action => 'new'
  map.login  '/login', :controller => 'sessions', :action => 'new'
  map.logout '/logout', :controller => 'sessions', :action => 'destroy'  
end

Cuidado que no final do arquivo vem por default uns map.connect, tira essas linhas e deixa o arquivo como está mostrado acima.
Agora vamos criar a tabela de usuários com

rake db:migrate

Se o servidor estiver rodando, acesse a aplicação http://localhost:3000/signup.
Tente cadastrar os dados e Voilá! Vc tem uma tela de cadastro de usuários (após o cadastro, ele vai para a tela principal do rails, depois vc terá que configurar para onde vc quer que após o login do usuário o sistema vá)
Teste também http://localhost:3000/login, informando os dados do usuário que vc cadastrou para testar se está funcionando.