| @@ -318,19 +318,19 @@ class ApplicationController < ActionController::Base | |||
| User.current = find_current_user | |||
| 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? | |||
| 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("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}"] | |||
| 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 | |||
| autologin_user | |||
| end | |||
| 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 | |||
| @@ -44,7 +44,7 @@ class Token < ActiveRecord::Base | |||
| def self.get_or_create_permanent_login_token(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 | |||
| token = Token.create(:user => user, :action => type) | |||
| 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) | |||
| 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 | |||