fix js redirect

This commit is contained in:
Jasder 2020-08-14 23:24:54 +08:00
parent c4a92fe4a4
commit 0cd790ecac
3 changed files with 30 additions and 12 deletions

View File

@ -10,18 +10,22 @@ 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 if current_user != open_user.user
logout_user logout_user
successful_authentication(open_user.user) successful_authentication(open_user.user)
end end
redirect_to callback_url redirect_to callback_url
else else
# 未存在需要进行绑定
if current_user.blank? || !current_user.logged? if current_user.blank? || !current_user.logged?
# forge平台未登录 user = User.find_by(login: login)
redirect_to oauth_register_path(login: login, callback_url: callback_url) 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 else
# forge平台已登录 # forge平台已登录
OpenUsers::Educoder.create!(user: current_user, uid: login) OpenUsers::Educoder.create!(user: current_user, uid: login)

View File

@ -55,22 +55,27 @@ class OauthController < ApplicationController
end end
def register def register
logger.info "=====auto_register=======login: #{params[:login]}"
logger.info "=====auto_register=======callback_url: #{params[:callback_url]}"
# redirect_to params[:callback_url]
end end
def auto_register def auto_register
login = params[:login] login = params[:login]
email = params[:mail] email = params[:mail]
password = params[:password] password = params[:password]
callback_url = params[:callback_url]
platform = params[:plathform] || 'forge' platform = params[:plathform] || 'forge'
result = autologin_register(login, email, password, platform) result = autologin_register(login, email, password, platform)
logger.info "[Oauth educoer] =====#{result}"
if result[:message].blank? 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 else
logger.info "[Oauth educoer] ====auto_register failed."
render :action => "auto_register" render :action => "auto_register"
end end
end end

View File

@ -52,7 +52,16 @@
$.ajax({ $.ajax({
url: "<%= oauth_auto_register_path %>", url: "<%= oauth_auto_register_path %>",
data: $("#oauth_form").serialize(), 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;
}
}
});
} }
</script> </script>