diff --git a/Gemfile b/Gemfile
index 55030971d..55478816f 100644
--- a/Gemfile
+++ b/Gemfile
@@ -103,3 +103,6 @@ gem 'diffy'
# oauth2
gem 'omniauth', '~> 1.9.0'
gem 'omniauth-oauth2', '~> 1.6.0'
+
+# global var
+gem 'request_store'
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 3ec8ad0f7..b3a0e123a 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -303,7 +303,7 @@ class ApplicationController < ActionController::Base
current_domain_session = session[:"#{default_yun_session}"]
if current_domain_session
# existing session
- (User.active.find(current_domain_session) rescue nil)
+ User.current = (User.active.find(current_domain_session) rescue nil)
elsif autologin_user = try_to_autologin
autologin_user
elsif params[:format] == 'atom' && params[:key] && request.get? && accept_rss_auth?
diff --git a/app/models/laboratory.rb b/app/models/laboratory.rb
index 2ba86ed90..dab2f6f39 100644
--- a/app/models/laboratory.rb
+++ b/app/models/laboratory.rb
@@ -38,12 +38,20 @@ class Laboratory < ApplicationRecord
find_by_identifier(subdomain)
end
- def self.current=(laboratory)
- Thread.current[:current_laboratory] = laboratory
+ # def self.current=(laboratory)
+ # Thread.current[:current_laboratory] = laboratory
+ # end
+ #
+ # def self.current
+ # Thread.current[:current_laboratory] ||= Laboratory.find(1)
+ # end
+
+ def self.current=(user)
+ RequestStore.store[:current_laboratory] = user
end
def self.current
- Thread.current[:current_laboratory] ||= Laboratory.find(1)
+ RequestStore.store[:current_laboratory] ||= User.anonymous
end
def shixuns
diff --git a/app/models/user.rb b/app/models/user.rb
index eb3ece0a4..a9b2f0b3a 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -540,12 +540,20 @@ class User < ApplicationRecord
mail.present?
end
+ # def self.current=(user)
+ # Thread.current[:current_user] = user
+ # end
+ #
+ # def self.current
+ # Thread.current[:current_user] ||= User.anonymous
+ # end
+
def self.current=(user)
- Thread.current[:current_user] = user
+ RequestStore.store[:current_user] = user
end
def self.current
- Thread.current[:current_user] ||= User.anonymous
+ RequestStore.store[:current_user] ||= User.anonymous
end
def self.anonymous
diff --git a/public/react/src/modules/courses/busyWork/CommonWorkItem.js b/public/react/src/modules/courses/busyWork/CommonWorkItem.js
index 75676557a..82e2d2d96 100644
--- a/public/react/src/modules/courses/busyWork/CommonWorkItem.js
+++ b/public/react/src/modules/courses/busyWork/CommonWorkItem.js
@@ -205,15 +205,16 @@ class CommonWorkItem extends Component{
{item.uncommit_count===undefined?"":{item.uncommit_count} 未交}
{
item.status_time!="" &&
-
{data&&data.shixun_name}
{/*{this.props.isAdmin()?导出实训报告数据:""}*/} 返回 - {this.props.isAdmin() ? this.confirmysl(`/student_works/${homeworkid}/export_shixun_work_report.pdf`)} - >