diff --git a/app/controllers/concerns/login_helper.rb b/app/controllers/concerns/login_helper.rb index 1752e4f6c..8891ad029 100644 --- a/app/controllers/concerns/login_helper.rb +++ b/app/controllers/concerns/login_helper.rb @@ -11,6 +11,7 @@ module LoginHelper def set_autologin_cookie(user) token = Token.get_or_create_permanent_login_token(user, "autologin") + Rails.logger.info "###### def set_autologin_cookie and get_or_create_permanent_login_token result: #{token&.value}" cookie_options = { :value => token.value, :expires => 1.month.from_now, @@ -21,9 +22,11 @@ module LoginHelper if edu_setting('cookie_domain').present? cookie_options = cookie_options.merge(domain: edu_setting('cookie_domain')) end - unless cookies[autologin_cookie_name].present? - cookies[autologin_cookie_name] = cookie_options - end + # unless cookies[autologin_cookie_name].present? + # cookies[autologin_cookie_name] = cookie_options + # end + cookies[autologin_cookie_name] = cookie_options + # for action cable cookies.signed[:user_id] ||= user.id diff --git a/app/controllers/oauth/educoder_controller.rb b/app/controllers/oauth/educoder_controller.rb index bc1a0cb6d..b194f6922 100644 --- a/app/controllers/oauth/educoder_controller.rb +++ b/app/controllers/oauth/educoder_controller.rb @@ -10,26 +10,20 @@ class Oauth::EducoderController < Oauth::BaseController open_user= OpenUsers::Educoder.find_by(uid: login) if open_user.present? && open_user.user.present? && open_user.user.email_binded? - if current_user != open_user.user - logout_user - successful_authentication(open_user.user) - end + Rails.logger.info "######## open_user exist and open_user.user exsit and email is binded ok" + successful_authentication(open_user.user) + redirect_to callback_url else - if current_user.blank? || !current_user.logged? - user = User.find_by(login: login) - if user - successful_authentication(user) - OpenUsers::Educoder.create!(user: user, uid: user.login) + Rails.logger.info "######## open user not exits" + user = User.find_by(login: login) + if user + OpenUsers::Educoder.create!(user: user, uid: user.login) + successful_authentication(user) - redirect_to callback_url - else - redirect_to oauth_register_path(login: login, callback_url: callback_url) - end - else - # forge平台已登录 - OpenUsers::Educoder.create!(user: current_user, uid: login) redirect_to callback_url + else + redirect_to oauth_register_path(login: login, callback_url: callback_url) end end rescue WechatOauth::Error => ex diff --git a/app/controllers/oauth_controller.rb b/app/controllers/oauth_controller.rb index 1cdeb4aa3..5da9297a6 100644 --- a/app/controllers/oauth_controller.rb +++ b/app/controllers/oauth_controller.rb @@ -65,22 +65,22 @@ class OauthController < ApplicationController platform = params[:plathform] || 'educoder' if User.where(mail: email).exists? - render_error("该邮箱已使用过.") and return - end - - result = autologin_register(login, email, password, platform) - logger.info "[Oauth educoer] =====#{result}" - if result[:message].blank? - logger.info "[Oauth educoer] ====auto_register success" - user = User.find result[:user][:id] - successful_authentication(user) - OpenUsers::Educoder.create!(user: user, uid: user.login) - - render_ok({callback_url: callback_url}) - # redirect_to callback_url + render json: { email_exist: '该邮箱已使用过' } else - logger.info "[Oauth educoer] ====auto_register failed." - render :action => "auto_register" + result = autologin_register(login, email, password, platform) + logger.info "[Oauth educoer] =====#{result}" + if result[:message].blank? + logger.info "[Oauth educoer] ====auto_register success" + user = User.find result[:user][:id] + successful_authentication(user) + OpenUsers::Educoder.create!(user: user, uid: user.login) + + render json: { callback_url: callback_url } + # redirect_to callback_url + else + logger.info "[Oauth educoer] ====auto_register failed." + render :action => "auto_register" + end end end diff --git a/app/models/token.rb b/app/models/token.rb index cd61090be..d40388440 100644 --- a/app/models/token.rb +++ b/app/models/token.rb @@ -27,8 +27,10 @@ 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}" 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}" else token.update_attribute(:created_on, Time.now) end @@ -37,8 +39,10 @@ class Token < ActiveRecord::Base def self.get_token_from_user(user, action) token = Token.where(:action => action, :user_id => user).first + Rails.logger.info "###### self.get_token_from_user query result: #{token&.value}" unless token token = Token.create!(user_id: user.id, action: action) + Rails.logger.info "###### self.get_token_from_user query is nil and create result: #{token&.value}" end token end diff --git a/app/views/oauth/register.html.erb b/app/views/oauth/register.html.erb index d9b39543c..59a3d4857 100644 --- a/app/views/oauth/register.html.erb +++ b/app/views/oauth/register.html.erb @@ -60,7 +60,7 @@ success: function(data) { console.log(data) if (data) { - if(data.message){ + if(data.email_exist){ $(".emailCheck span").html("该邮箱已存在."); return; }