forgeplus/app/controllers/oauth/educoder_controller.rb

36 lines
1.2 KiB
Ruby
Raw Permalink Normal View History

2020-08-14 18:19:00 +08:00
class Oauth::EducoderController < Oauth::BaseController
def bind
begin
login = params[:login]
2020-08-18 09:07:16 +08:00
mail = params[:mail] || nil
2020-08-14 18:19:00 +08:00
callback_url = params[:callback_url]
2020-08-14 19:47:02 +08:00
token = params[:token]
2020-08-14 18:19:00 +08:00
2020-08-18 09:07:16 +08:00
::OauthEducoderForm.new({login: login, token: token, callback_url: callback_url}).validate!
2020-08-14 18:19:00 +08:00
open_user= OpenUsers::Educoder.find_by(uid: login) || OpenUsers::Educoder.find_by(uid: mail)
2020-08-14 18:19:00 +08:00
2020-08-14 22:16:24 +08:00
if open_user.present? && open_user.user.present? && open_user.user.email_binded?
2020-08-16 00:54:22 +08:00
Rails.logger.info "######## open_user exist and open_user.user exsit and email is binded ok"
successful_authentication(open_user.user)
2020-08-14 18:19:00 +08:00
redirect_to callback_url
else
2020-08-16 00:54:22 +08:00
Rails.logger.info "######## open user not exits"
2020-09-07 13:50:26 +08:00
user = User.find_by(login: login) || User.find_by(mail: mail)
2020-08-29 11:57:50 +08:00
if user.is_a?(User) && !user.is_a?(AnonymousUser)
2020-09-07 13:50:26 +08:00
OpenUsers::Educoder.create!(user: user, uid: login)
2020-08-16 13:48:48 +08:00
successful_authentication(user)
2020-08-14 23:24:54 +08:00
2020-08-14 18:19:00 +08:00
redirect_to callback_url
2020-08-16 13:48:48 +08:00
else
2020-09-11 22:40:32 +08:00
redirect_to oauth_register_path(login: login, mail: mail, callback_url: callback_url)
2020-08-14 18:19:00 +08:00
end
end
rescue WechatOauth::Error => ex
render_error(ex.message)
end
end
end