diff --git a/app/controllers/oauth/educoder_controller.rb b/app/controllers/oauth/educoder_controller.rb index 3b2f65011..bc1a0cb6d 100644 --- a/app/controllers/oauth/educoder_controller.rb +++ b/app/controllers/oauth/educoder_controller.rb @@ -10,18 +10,22 @@ 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 - redirect_to callback_url else - # 未存在需要进行绑定 if current_user.blank? || !current_user.logged? - # forge平台未登录 - redirect_to oauth_register_path(login: login, callback_url: callback_url) + user = User.find_by(login: login) + if user + successful_authentication(user) + OpenUsers::Educoder.create!(user: user, uid: user.login) + + 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) diff --git a/app/controllers/oauth_controller.rb b/app/controllers/oauth_controller.rb index 8b18b3069..7ed65d53c 100644 --- a/app/controllers/oauth_controller.rb +++ b/app/controllers/oauth_controller.rb @@ -55,22 +55,27 @@ class OauthController < ApplicationController end def register - logger.info "=====auto_register=======login: #{params[:login]}" - logger.info "=====auto_register=======callback_url: #{params[:callback_url]}" - # redirect_to params[:callback_url] end def auto_register login = params[:login] email = params[:mail] password = params[:password] + callback_url = params[:callback_url] platform = params[:plathform] || 'forge' result = autologin_register(login, email, password, platform) - + logger.info "[Oauth educoer] =====#{result}" if result[:message].blank? - redirect_to params[:callback_url] + 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 else + logger.info "[Oauth educoer] ====auto_register failed." render :action => "auto_register" end end diff --git a/app/views/oauth/register.html.erb b/app/views/oauth/register.html.erb index 77bfe749a..df3b1eb67 100644 --- a/app/views/oauth/register.html.erb +++ b/app/views/oauth/register.html.erb @@ -52,7 +52,16 @@ $.ajax({ url: "<%= oauth_auto_register_path %>", data: $("#oauth_form").serialize(), - type: 'post' - }) + type: 'post', + dataType: "json", + success: function(data) { + console.log(data) + if (data) { + // data.redirect contains the string URL to redirect to + // window.location.href = "<%#= params[:callback_url] %>"; + window.location.href = data.callback_url; + } + } + }); }