add: educoder third party

This commit is contained in:
2021-04-01 18:01:51 +08:00
parent 0b6ebb7b36
commit 0d97d7d4f0
9 changed files with 135 additions and 1 deletions

View File

@@ -32,4 +32,32 @@ class Oauth::EducoderController < Oauth::BaseController
render_error(ex.message)
end
end
# 需要educoder那边设置回调地址
def create
begin
code = params['code'].to_s.strip
tip_exception("code不能为空") if code.blank?
new_user = false
result = EducoderOauth::Service.access_token(code, [request.protocol, request.host_with_port, '/api/auth/educoder/callback'].join(''))
result = EducoderOauth::Service.user_info(result[:access_token])
# 存在该用户
open_user = OpenUsers::Educoder.find_by(uid: result['login'])
if open_user.present? && open_user.user.present?
successful_authentication(open_user.user)
else
if current_user.blank? || !current_user.logged?
new_user = true
set_session_edulogin(result['login'])
else
OpenUsers::Educoder.create!(user: current_user, uid: result['login'], extra: result)
end
end
render_ok(new_user: new_user)
rescue Exception => ex
render_error(ex.message)
end
end
end