|
- class Oauth::Ci4sController < Oauth::BaseController
- include RegisterHelper
-
-
- def oauth_url
- redirect_to Ci4s::Service.oauth_url
- 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)
- Rails.logger.info("[OAuth2] result -> #{token}")
- result = Ci4s::Service.user_info(token[:access_token])
- tip_exception("请求用户信息错误") if result['code'].to_i != 200
- user_info = result['data']
- # 存在该用户
- open_user = OpenUsers::Ci4s.find_by(uid: user_info['username'])
- 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] = user_info['username']
- # login = User.generate_login('E')
- login = user_info['username']
- email = user_info['email']
- email = "#{login}@forge.com" if email.blank?
- reg_result = autologin_register(login,email, "Ec#{login}2021#", 'educoder', user_info['mobile'])
- Rails.logger.info("[OAuth2] reg_result -> #{reg_result}")
- if reg_result[:message].blank?
- open_user = OpenUsers::Ci4s.create!(user_id: reg_result[:user][:id], uid: login, extra: user_info)
- successful_authentication(open_user.user)
- else
- render_error(reg_result[:message])
- end
- else
- OpenUsers::Ci4s.create!(user: current_user, uid: user_info['username'], extra: user_info)
- end
- end
- Rails.logger.info("[OAuth2] session[:unionid] -> #{session[:unionid]}")
-
- redirect_to root_path(new_user: new_user) && return
- # rescue Exception => ex
- # render_error(ex.message)
- # end
- end
- end
|