Class SessionsController
In: app/controllers/sessions_controller.rb
Parent: ApplicationController

Controlador para los procesos de login/logout.

Methods

Public Instance methods

Creación de una sessión, es decir, login.

[Source]

    # File app/controllers/sessions_controller.rb, line 13
13:   def create
14:     self.current_user = User.authenticate(params[:email], params[:password])
15:     process_login
16:   end

Logout del sistema

[Source]

    # File app/controllers/sessions_controller.rb, line 19
19:   def destroy
20:     # store_previous_location unless session[:return_to]
21:     if logged_in?
22:       @user_name = current_user.name
23:       SessionLog.create(:user_id => current_user.id, :action => "logout", :action_at => Time.zone.now, :user_ip => request.remote_ip)
24:       self.current_user.forget_me 
25:     end
26:     cookies.delete :auth_token
27:     reset_session
28:     flash[:notice] = t('session.Has_salido', :name => @user_name)
29:     redirect_back_or_default(root_path)
30:   end

Las nuevas cuentas quedan pendientes de activación por el usuario. Esta acción activa la cuenta a partir del email que se le mandó al usuario al registrarse.

[Source]

    # File app/controllers/sessions_controller.rb, line 78
78:   def email_activation
79:     @user = User.find_by_email_and_status(params[:email], "pendiente")
80:     
81:     if @user
82:       email = Notifier.create_activate_person_account(@user)
83: 
84:       begin
85:         logger.info("Mandando activacion a #{@user.email}")
86:         Notifier.deliver(email)
87:       rescue Net::SMTPServerBusy, Net::SMTPSyntaxError => err_type
88:         logger.info("Error al mandar mail de activacion: " + err_type)
89:         flash[:error] = t('session.Error_servidor_correo')
90:       else
91:         flash[:notice] = t('session.activacion_enviada')
92:       end
93:     else
94:       flash[:error] = t('session.No_hay_usuario')
95:     end
96:     redirect_to login_path and return      
97:   end

Envio de la contraseña por correo electrónico

[Source]

    # File app/controllers/sessions_controller.rb, line 39
39:   def email_password
40:     if params[:email].blank?
41:       flash[:notice] = t('session.Por_favor_email')
42:       redirect_to :action => "password_reminder" and return
43:     end
44: 
45:     user = User.approved.find_by_email(params[:email])
46: 
47:     if user
48:       if user.is_twitter_user?
49:         flash[:notice] = t("session.usuario_twitter_sin_password")
50:       else
51:         email = Notifier.create_password_reminder(user)
52: 
53:         begin
54:           logger.info("Mandando login olvidado")
55:           Notifier.deliver(email)
56:           flash[:notice] = t('session.Password_enviado')
57:         rescue Net::SMTPServerBusy, Net::SMTPSyntaxError => err_type
58:           logger.info("Error al mandar mail de recordatorio de contraseña: " + err_type)
59:           flash[:error] = t('session.Error_servidor_correo')
60:         end
61:       end
62:       redirect_to :action => "new" and return
63:     else
64:       user = User.pending.find_by_email(params[:email])
65:       if user
66:         flash[:error] = t('session.pendiente_aprobacion')
67:         redirect_to password_reminder_path and return
68:       else
69:         flash[:error] = t('session.No_hay_usuario')
70:         redirect_to password_reminder_path and return
71:       end
72:     end
73: 
74:   end

Formulario de inicio de sessión

[Source]

    # File app/controllers/sessions_controller.rb, line 5
 5:   def new
 6:     @title = t('session.login_in', :name => site_name)
 7:     @breadcrumbs_info = [[@title, login_path]]
 8:     render :template => "/sessions/new"
 9:     # store_previous_location unless session[:return_to]
10:   end

Formulario de recordatorio de contraseña

[Source]

    # File app/controllers/sessions_controller.rb, line 33
33:   def password_reminder
34:     @breadcrumbs_info = [[I18n.t('session.Recordatorio'), password_reminder_path]]
35:     render :template => "/sessions/password_reminder"
36:   end

[Validate]