| Class | SessionsController |
| In: |
app/controllers/sessions_controller.rb
|
| Parent: | ApplicationController |
Controlador para los procesos de login/logout.
Creación de una sessión, es decir, login.
# 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
# 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.
# 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
# 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
# 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