diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 22888abb..4bdcff56 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -1141,4 +1141,9 @@ class ApplicationController < ActionController::Base redirect_to authorize_url end + + def user_login_and_from_openi + url = request.referer.nil? ? Redmine::Configuration['educoder_domain'] : request.referer + URI(url).host == 'openi.org.cn' && !current_user.logged? + end end diff --git a/app/controllers/challenges_controller.rb b/app/controllers/challenges_controller.rb index 5bd8f537..59102172 100644 --- a/app/controllers/challenges_controller.rb +++ b/app/controllers/challenges_controller.rb @@ -1,6 +1,8 @@ # encoding: utf-8 class ChallengesController < ApplicationController layout "base_shixun" + # 如要添加或修改before_filter时,请将handle_openi_request这个before_filter放至第一位 + before_filter :handle_openi_request, if: -> { user_login_and_from_openi } before_filter :check_authentication, :except => [:index] before_filter :find_shixun, :only => [:index, :new, :create, :destroy, :challenge_build, :update_evaluation, :add_choose_question, :new_choose_question, :choose_type_show, :edit_choose_question, :update_choose_question, :destroy_challenge_choose] diff --git a/app/controllers/shixuns_controller.rb b/app/controllers/shixuns_controller.rb index 0572f8fa..5cadc9a4 100644 --- a/app/controllers/shixuns_controller.rb +++ b/app/controllers/shixuns_controller.rb @@ -3,7 +3,7 @@ class ShixunsController < ApplicationController layout 'base_shixun' # 如要添加或修改before_filter时,请将handle_openi_request这个before_filter放至第一位 - before_filter :handle_openi_request, if: -> {URI(request.referer).host == 'openi.org.cn' && !current_user.logged?} + before_filter :handle_openi_request, if: -> { user_login_and_from_openi } before_filter :require_login, :except => [:ghook, :download_file, :show, :index] before_filter :check_authentication, :except => [:ghook, :download_file, :show, :index] before_filter :find_shixun, :except => [ :index, :new, :create, :index, :search, :shixun_courses, :new_disscuss, :shixun_migrate, :qrcode, :download_file, :departments, :get_mirror_script, :send_message_to_administrator] diff --git a/app/controllers/subjects_controller.rb b/app/controllers/subjects_controller.rb index 2db71ee7..14d738c4 100644 --- a/app/controllers/subjects_controller.rb +++ b/app/controllers/subjects_controller.rb @@ -2,7 +2,7 @@ class SubjectsController < ApplicationController layout 'base_subject' # 如要添加或修改before_filter时,请将handle_openi_request这个before_filter放至第一位 - before_filter :handle_openi_request, if: -> {URI(request.referer).host == 'openi.org.cn' && !current_user.logged?} + before_filter :handle_openi_request, if: -> { user_login_and_from_openi } before_filter :require_login, :except => [:show, :index] before_filter :check_authentication, :except => [:show, :index] before_filter :find_subject, :except => [:index, :new, :create, :create_subject, :new_subject, :append_to_stage, :send_to_course]