|
- class Oauth::Ci4sController < Oauth::BaseController
- include RegisterHelper
-
-
- def oauth_url
- Ci4s::Service.oauth_url(code)
- end
-
- # 需要educoder那边设置回调地址
- def create
- begin
- code = params['code'].to_s.strip
- tip_exception("code不能为空") if code.blank?
-
- new_user = false
- token = Ci4s::Service.access_token(code)
- # result = token[:account_info]
- result = Ci4s::Service.user_info(result[:access_token])
-
- # 存在该用户
- open_user = OpenUsers::Ci4s.find_by(uid: result['login'])
- if open_user.present? && open_user.user.present?
- successful_authentication(open_user.user)
- redirect_to root_path(new_user: false)
- return
- else
- if current_user.blank? || !current_user.logged?
- new_user = true
- session[:unionid] = result['username']
- # login = User.generate_login('E')
- login = result['username']
- email = result['email']
- email = "#{login}@forge.com" if email.blank?
- reg_result = autologin_register(login,email, "Ec#{login}2021#", 'educoder', result['mobile'])
- if reg_result[:message].blank?
- open_user = OpenUsers::Ci4s.create!(user_id: reg_result[:user][:id], uid: login, extra: result)
- successful_authentication(open_user.user)
- else
- render_error(reg_result[:message])
- end
- else
- OpenUsers::Ci4s.create!(user: current_user, uid: result['login'], extra: result)
- end
- end
- Rails.logger.info("[OAuth2] session[:unionid] -> #{session[:unionid]}")
-
- redirect_to root_path(new_user: new_user)
- rescue Exception => ex
- render_error(ex.message)
- end
- end
- end
|