| @@ -11,6 +11,7 @@ module LoginHelper | |||||
| def set_autologin_cookie(user) | def set_autologin_cookie(user) | ||||
| token = Token.get_or_create_permanent_login_token(user, "autologin") | 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 = { | cookie_options = { | ||||
| :value => token.value, | :value => token.value, | ||||
| :expires => 1.month.from_now, | :expires => 1.month.from_now, | ||||
| @@ -21,9 +22,11 @@ module LoginHelper | |||||
| if edu_setting('cookie_domain').present? | if edu_setting('cookie_domain').present? | ||||
| cookie_options = cookie_options.merge(domain: edu_setting('cookie_domain')) | cookie_options = cookie_options.merge(domain: edu_setting('cookie_domain')) | ||||
| end | 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 | # for action cable | ||||
| cookies.signed[:user_id] ||= user.id | cookies.signed[:user_id] ||= user.id | ||||
| @@ -10,26 +10,20 @@ class Oauth::EducoderController < Oauth::BaseController | |||||
| open_user= OpenUsers::Educoder.find_by(uid: login) | open_user= OpenUsers::Educoder.find_by(uid: login) | ||||
| if open_user.present? && open_user.user.present? && open_user.user.email_binded? | 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 | redirect_to callback_url | ||||
| else | 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 | redirect_to callback_url | ||||
| else | |||||
| redirect_to oauth_register_path(login: login, callback_url: callback_url) | |||||
| end | end | ||||
| end | end | ||||
| rescue WechatOauth::Error => ex | rescue WechatOauth::Error => ex | ||||
| @@ -65,22 +65,22 @@ class OauthController < ApplicationController | |||||
| platform = params[:plathform] || 'educoder' | platform = params[:plathform] || 'educoder' | ||||
| if User.where(mail: email).exists? | 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 | 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 | ||||
| end | end | ||||
| @@ -27,8 +27,10 @@ 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}" | |||||
| 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}" | |||||
| else | else | ||||
| token.update_attribute(:created_on, Time.now) | token.update_attribute(:created_on, Time.now) | ||||
| end | end | ||||
| @@ -37,8 +39,10 @@ class Token < ActiveRecord::Base | |||||
| def self.get_token_from_user(user, action) | def self.get_token_from_user(user, action) | ||||
| token = Token.where(:action => action, :user_id => user).first | token = Token.where(:action => action, :user_id => user).first | ||||
| Rails.logger.info "###### self.get_token_from_user query result: #{token&.value}" | |||||
| unless token | unless token | ||||
| token = Token.create!(user_id: user.id, action: action) | 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 | end | ||||
| token | token | ||||
| end | end | ||||
| @@ -60,7 +60,7 @@ | |||||
| success: function(data) { | success: function(data) { | ||||
| console.log(data) | console.log(data) | ||||
| if (data) { | if (data) { | ||||
| if(data.message){ | |||||
| if(data.email_exist){ | |||||
| $(".emailCheck span").html("该邮箱已存在."); | $(".emailCheck span").html("该邮箱已存在."); | ||||
| return; | return; | ||||
| } | } | ||||