Recuperar contraseñas con restful_authentication

Continuación del post anterior para recuperar las contraseñas olvidadas.

+ leer más


Autenticación de usuarios con restful_authentication

Pasos para crear una aplicación rails con autenticación de usuarios.

Crear la aplicación rails:

$ rails myapp
$ cd myapp

Instalar el plugin restful_authentication:

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

Generar el sistema de autenticación:

$ script/generate authenticated user session
$ rake db:migrate

En config/routes.rb añadir lo siguiente antes de las rutas por defecto (las dos últimas)

map.resources :users
map.resource  :session, :controller => 'session'

map.signup '/signup', :controller => 'users', :action => 'new'
map.login  '/login', :controller => 'session', :action => 'new'
map.logout '/logout', :controller => 'session', :action => 'destroy'

En app/controllers/application_controller.rb poner la línea siguiente, que viene en los controladores user_controller.rb y session_controller.rb que ha creado el plugin.

include AuthenticatedSystem

Poniendolo en application_controller.rb hacemos que la autenticación esté disponible para todos los controladores.

Ahora en los controladores para los que queramos restringir el acceso a usuarios autenticados tendremos que poner un filtro:

before_filter :login_required

A este filtro le podemos poner parámetros para indicarle que sólo se aplique a algunas acciones o que se aplique a todas excepto a algunas, por ejemplo:

before_filter :login_required, :only => [:create, :destroy]
before_filter :login_required, :except => [:index, :show]

En mi caso últimamente es habitual que necesite controlar el acceso a toda la aplicación salvo a unas pocas acciones por lo que pongo el before_filter en application_controller.rb y luego pongo un skip_before_filter donde sea necesario, que en este caso es en users_controller.rb y session_controller.rb para permitir crear nuevos usuarios y hacer login, que en realidad es crear una nueva session. Por tanto en estos dos controladores pongo:

skip_before_filter :login_required, :only => [:new, :create]

Si además hay una portada de la aplicación pública también habrá que aplicarle esto.

Para hacer que el registro sea con activación de usuarios por email, ver este otro post.


Tutoriales en RailsForum

Un montón de tutoriales útiles:

http://www.railsforum.com/viewforum.php?id=20