fixed 多浏览器退出账号时,token不存在处理
This commit is contained in:
parent
0a2ab5eddc
commit
cb0ecc4194
|
@ -318,19 +318,19 @@ class ApplicationController < ActionController::Base
|
||||||
User.current = find_current_user
|
User.current = find_current_user
|
||||||
uid_logger("user_setup: " + (User.current.logged? ? "#{User.current.try(:login)} (id=#{User.current.try(:id)})" : "anonymous"))
|
uid_logger("user_setup: " + (User.current.logged? ? "#{User.current.try(:login)} (id=#{User.current.try(:id)})" : "anonymous"))
|
||||||
|
|
||||||
# 开放课程通过链接访问的用户
|
# # 开放课程通过链接访问的用户
|
||||||
if !User.current.logged? && !params[:chinaoocTimestamp].blank? && !params[:websiteName].blank? && !params[:chinaoocKey].blank?
|
# if !User.current.logged? && !params[:chinaoocTimestamp].blank? && !params[:websiteName].blank? && !params[:chinaoocKey].blank?
|
||||||
content = "#{OPENKEY}#{params[:websiteName]}#{params[:chinaoocTimestamp]}"
|
# content = "#{OPENKEY}#{params[:websiteName]}#{params[:chinaoocTimestamp]}"
|
||||||
|
#
|
||||||
if Digest::MD5.hexdigest(content) == params[:chinaoocKey]
|
# if Digest::MD5.hexdigest(content) == params[:chinaoocKey]
|
||||||
user = open_class_user
|
# user = open_class_user
|
||||||
if user
|
# if user
|
||||||
start_user_session(user)
|
# start_user_session(user)
|
||||||
set_autologin_cookie(user)
|
# set_autologin_cookie(user)
|
||||||
end
|
# end
|
||||||
User.current = user
|
# User.current = user
|
||||||
end
|
# end
|
||||||
end
|
# end
|
||||||
|
|
||||||
if !User.current.logged? && Rails.env.development?
|
if !User.current.logged? && Rails.env.development?
|
||||||
user = User.find 1
|
user = User.find 1
|
||||||
|
@ -363,15 +363,14 @@ class ApplicationController < ActionController::Base
|
||||||
uid_logger("user setup start: session[:user_id] is #{session[:user_id]}")
|
uid_logger("user setup start: session[:user_id] is #{session[:user_id]}")
|
||||||
uid_logger("0000000000000user setup start: default_yun_session is #{default_yun_session}, session[:current_user_id] is #{session[:"#{default_yun_session}"]}")
|
uid_logger("0000000000000user setup start: default_yun_session is #{default_yun_session}, session[:current_user_id] is #{session[:"#{default_yun_session}"]}")
|
||||||
current_domain_session = session[:"#{default_yun_session}"]
|
current_domain_session = session[:"#{default_yun_session}"]
|
||||||
if current_domain_session
|
autologin_user = try_to_autologin
|
||||||
# existing session
|
uid_logger("user setup start: autologin_user is #{autologin_user}")
|
||||||
User.current = (User.active.find(current_domain_session) rescue nil)
|
# 多浏览器退出账号时,token不存在处理
|
||||||
elsif autologin_user = try_to_autologin
|
if current_domain_session && autologin_user.nil?
|
||||||
autologin_user
|
autologin_user = (User.active.find(current_domain_session) rescue nil)
|
||||||
elsif params[:format] == 'atom' && params[:key] && request.get? && accept_rss_auth?
|
set_autologin_cookie(autologin_user)
|
||||||
# RSS key authentication does not start a session
|
|
||||||
User.find_by_rss_key(params[:key])
|
|
||||||
end
|
end
|
||||||
|
autologin_user
|
||||||
end
|
end
|
||||||
|
|
||||||
def try_to_autologin
|
def try_to_autologin
|
||||||
|
|
|
@ -44,7 +44,7 @@ class Token < ActiveRecord::Base
|
||||||
|
|
||||||
def self.get_or_create_permanent_login_token(user, type)
|
def self.get_or_create_permanent_login_token(user, type)
|
||||||
token = Token.get_token_from_user(user, type)
|
token = Token.get_token_from_user(user, type)
|
||||||
Rails.logger.info "###### Token.get_token_from_user result: #{token&.value}"
|
Rails.logger.info "###### Token.get_token_from_user time:#{Time.new.to_i}, result: #{token&.value}"
|
||||||
unless token
|
unless token
|
||||||
token = Token.create(:user => user, :action => type)
|
token = Token.create(:user => user, :action => type)
|
||||||
Rails.logger.info "###### Token.get_token_from_user is nul and agine create token: #{token&.value}"
|
Rails.logger.info "###### Token.get_token_from_user is nul and agine create token: #{token&.value}"
|
||||||
|
@ -117,8 +117,8 @@ class Token < ActiveRecord::Base
|
||||||
|
|
||||||
# Removes obsolete tokens (same user and action)
|
# Removes obsolete tokens (same user and action)
|
||||||
def delete_previous_tokens
|
def delete_previous_tokens
|
||||||
if user
|
# if user
|
||||||
Token.where(['user_id = ? AND action = ?', user.id, action]).delete_all
|
# Token.where(['user_id = ? AND action = ?', user.id, action]).delete_all
|
||||||
end
|
# end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue