| @@ -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? | |||||
| content = "#{OPENKEY}#{params[:websiteName]}#{params[:chinaoocTimestamp]}" | |||||
| if Digest::MD5.hexdigest(content) == params[:chinaoocKey] | |||||
| user = open_class_user | |||||
| if user | |||||
| start_user_session(user) | |||||
| set_autologin_cookie(user) | |||||
| end | |||||
| User.current = user | |||||
| end | |||||
| end | |||||
| # # 开放课程通过链接访问的用户 | |||||
| # if !User.current.logged? && !params[:chinaoocTimestamp].blank? && !params[:websiteName].blank? && !params[:chinaoocKey].blank? | |||||
| # content = "#{OPENKEY}#{params[:websiteName]}#{params[:chinaoocTimestamp]}" | |||||
| # | |||||
| # if Digest::MD5.hexdigest(content) == params[:chinaoocKey] | |||||
| # user = open_class_user | |||||
| # if user | |||||
| # start_user_session(user) | |||||
| # set_autologin_cookie(user) | |||||
| # end | |||||
| # User.current = user | |||||
| # 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 | |||||
| # existing session | |||||
| 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? | |||||
| # RSS key authentication does not start a session | |||||
| User.find_by_rss_key(params[:key]) | |||||
| autologin_user = try_to_autologin | |||||
| uid_logger("user setup start: autologin_user is #{autologin_user}") | |||||
| # 多浏览器退出账号时,token不存在处理 | |||||
| if current_domain_session && autologin_user.nil? | |||||
| autologin_user = (User.active.find(current_domain_session) rescue nil) | |||||
| set_autologin_cookie(autologin_user) | |||||
| end | end | ||||
| autologin_user | |||||
| end | end | ||||
| def try_to_autologin | def try_to_autologin | ||||
| @@ -1,19 +1,19 @@ | |||||
| # == Schema Information | |||||
| # | |||||
| # Table name: tokens | |||||
| # | |||||
| # id :integer not null, primary key | |||||
| # user_id :integer default("0"), not null | |||||
| # action :string(30) default(""), not null | |||||
| # value :string(40) default(""), not null | |||||
| # created_on :datetime not null | |||||
| # | |||||
| # Indexes | |||||
| # | |||||
| # index_tokens_on_user_id (user_id) | |||||
| # tokens_value (value) UNIQUE | |||||
| # | |||||
| # == Schema Information | |||||
| # | |||||
| # Table name: tokens | |||||
| # | |||||
| # id :integer not null, primary key | |||||
| # user_id :integer default("0"), not null | |||||
| # action :string(30) default(""), not null | |||||
| # value :string(40) default(""), not null | |||||
| # created_on :datetime not null | |||||
| # | |||||
| # Indexes | |||||
| # | |||||
| # index_tokens_on_user_id (user_id) | |||||
| # tokens_value (value) UNIQUE | |||||
| # | |||||
| # | # | ||||
| # This program is free software; you can redistribute it and/or | # This program is free software; you can redistribute it and/or | ||||
| @@ -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 | |||||
| Token.where(['user_id = ? AND action = ?', user.id, action]).delete_all | |||||
| end | |||||
| # if user | |||||
| # Token.where(['user_id = ? AND action = ?', user.id, action]).delete_all | |||||
| # end | |||||
| end | end | ||||
| end | end | ||||