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
|
|
|
|
2020-08-14 22:00:37 +08:00
|
|
|
open_user= OpenUsers::Educoder.find_by(uid: login)
|
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-08-17 17:30:15 +08:00
|
|
|
user = User.find_by('login = ? or mail = ?', login, mail)
|
|
|
|
|
|
2020-08-17 17:41:01 +08:00
|
|
|
if user.is_a?(User)
|
2020-08-17 18:08:18 +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
|
|
|
|
|
redirect_to oauth_register_path(login: login, 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
|