diff --git a/app/controllers/login_controller.rb b/app/controllers/login_controller.rb index b9fb3e90..dc51582b 100644 --- a/app/controllers/login_controller.rb +++ b/app/controllers/login_controller.rb @@ -1,5 +1,5 @@ class LoginController < ApplicationController - + layout 'login' skip_before_filter :set_session_expiration skip_before_filter :login_required @@ -14,27 +14,13 @@ class LoginController < ApplicationController case request.method when 'POST' if @user = User.authenticate(params['user_login'], params['user_password']) - session['user_id'] = @user.id - # If checkbox on login page checked, we don't expire the session after 1 hour - # of inactivity and we remember this user for future browser sessions - session['noexpiry'] = params['user_noexpiry'] - msg = (should_expire_sessions?) ? "will expire after 1 hour of inactivity." : "will not expire." - notify :notice, "Login successful: session #{msg}" - cookies[:tracks_login] = { :value => @user.login, :expires => Time.now + 1.year, :secure => SITE_CONFIG['secure_cookies'] } - unless should_expire_sessions? - @user.remember_me - cookies[:auth_token] = { :value => @user.remember_token , :expires => @user.remember_token_expires_at, :secure => SITE_CONFIG['secure_cookies'] } - end - redirect_back_or_home - return + return handle_post_success else - @login = params['user_login'] - notify :warning, t('login.unsuccessful') + handle_post_failure end when 'GET' if User.no_users_yet? - redirect_to signup_path - return + return redirect_to signup_path end end respond_to do |format| @@ -42,7 +28,7 @@ class LoginController < ApplicationController format.m { render :action => 'login', :layout => 'mobile' } end end - + def logout logout_user end @@ -63,11 +49,31 @@ class LoginController < ApplicationController format.js end end - + private - + + def handle_post_success + session['user_id'] = @user.id + # If checkbox on login page checked, we don't expire the session after 1 hour + # of inactivity and we remember this user for future browser sessions + session['noexpiry'] = params['user_noexpiry'] + msg = (should_expire_sessions?) ? "will expire after 1 hour of inactivity." : "will not expire." + notify :notice, "Login successful: session #{msg}" + cookies[:tracks_login] = { :value => @user.login, :expires => Time.now + 1.year, :secure => SITE_CONFIG['secure_cookies'] } + unless should_expire_sessions? + @user.remember_me + cookies[:auth_token] = { :value => @user.remember_token , :expires => @user.remember_token_expires_at, :secure => SITE_CONFIG['secure_cookies'] } + end + redirect_back_or_home + end + + def handle_post_failure + @login = params['user_login'] + notify :warning, t('login.unsuccessful') + end + def should_expire_sessions? session['noexpiry'] != "on" end - + end