def mobile
render :action => 'mobile.html', :layout => false
end
# File app/controllers/sessions_controller.rb, line 141 def auth_info render :action => 'auth_info.json', :layout => false end
Creación de una sessión, es decir, login.
# File app/controllers/sessions_controller.rb, line 37 def create self.current_user = User.authenticate(params[:email], params[:password]) process_login end
Logout del sistema
# File app/controllers/sessions_controller.rb, line 43 def destroy # store_previous_location unless session[:return_to] if logged_in? @user_name = current_user.name SessionLog.create(:user_id => current_user.id, :action => "logout", :action_at => Time.zone.now, :user_ip => request.remote_ip) self.current_user.forget_me end cookies.delete :auth_token reset_session session[:return_to]=request.referer if request.referer && !request.referer.match(/account/) respond_to do |format| format.html do flash[:notice] = t('session.Has_salido', :name => @user_name) redirect_back_or_default(root_path) end format.floki do render :json => '' end end 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 116 def email_activation @user = User.find_by_email_and_status(params[:email], "pendiente") if @user email = Notifier.create_activate_person_account(@user) begin logger.info("Mandando activacion a #{@user.email}") Notifier.deliver(email) rescue Net::SMTPServerBusy, Net::SMTPSyntaxError => err_type logger.info("Error al mandar mail de activacion: " + err_type) flash[:error] = t('session.Error_servidor_correo') else flash[:notice] = t('session.activacion_enviada') end else flash[:error] = t('session.No_hay_usuario') end redirect_to login_path and return end
Envio de la contraseña por correo electrónico
# File app/controllers/sessions_controller.rb, line 71 def email_password if params[:email].blank? flash[:notice] = t('session.Por_favor_email') redirect_to :action => "password_reminder" and return end user = User.approved.find_by_email(params[:email]) if user if user.is_twitter_user? flash[:notice] = t("session.usuario_twitter_sin_password") elsif user.is_facebook_user? flash[:notice] = t("session.usuario_facebook_sin_password") else email = Notifier.create_password_reminder(user) begin logger.info("Mandando login olvidado") Notifier.deliver(email) flash[:notice] = t('session.Password_enviado') rescue Net::SMTPServerBusy, Net::SMTPSyntaxError => err_type logger.info("Error al mandar mail de recordatorio de contraseña: " + err_type) flash[:error] = t('session.Error_servidor_correo') end end if !request.xhr? redirect_to :action => "new" and return else render :nothing => true end else user = User.pending.find_by_email(params[:email]) if user flash[:error] = t('session.pendiente_aprobacion') #redirect_to password_reminder_path and return else flash[:error] = t('session.No_hay_usuario') #redirect_to password_reminder_path and return end redirect_to password_reminder_path and return end end
Formulario de inicio de sessión
# File app/controllers/sessions_controller.rb, line 28 def new @title = t('session.login_in', :name => site_name) @breadcrumbs_info = [[@title, login_path]] if request.xhr? render :template => 'sessions/new_for_nav', :layout => false and return end end
Formulario de recordatorio de contraseña
# File app/controllers/sessions_controller.rb, line 65 def password_reminder @breadcrumbs_info = [[I18n.t('session.Recordatorio'), password_reminder_path]] # render :template => "/sessions/password_reminder" end