gitlink-forgeplus/app/controllers/oauth/educoder_controller.rb

36 lines
1.1 KiB
Ruby

class Oauth::EducoderController < Oauth::BaseController
def bind
begin
login = params[:login]
callback_url = params[:callback_url]
token = params[:token]
::OauthEducoderForm.new({login: login, token: token, callback_url: callback_url}).validate!
open_user= OpenUser::Educoder.find_by(uid: login)
if open_user.present? && open_user.user.present? && open_user.user.email_bind?
# 存在说明绑定了,验证信息是否齐全,
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(user_id: login, callback_url: callback_url)
else
# forge平台已登录
OpenUsers::Educoder.create!(user: current_user, uid: login)
redirect_to callback_url
end
end
rescue WechatOauth::Error => ex
render_error(ex.message)
end
end
end