forked from Gitlink/forgeplus
37 lines
1.2 KiB
Ruby
37 lines
1.2 KiB
Ruby
class Oauth::EducoderController < Oauth::BaseController
|
|
def bind
|
|
begin
|
|
login = params[:login]
|
|
callback_url = params[:callback_url]
|
|
oauth_token = params[:key]
|
|
raw_pay_load = params[:raw_pay_load]
|
|
|
|
::OauthEducoderForm.new({login: login, oauth_token: oauth_token, callback_url: callback_url, raw_pay_load: raw_pay_load}).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
|