新增:同步acge用户并同时创建平台账号
This commit is contained in:
parent
bf7289032a
commit
6e2816af75
|
@ -3,12 +3,16 @@ class Oauth::AcgeController < Oauth::BaseController
|
||||||
|
|
||||||
def create
|
def create
|
||||||
begin
|
begin
|
||||||
code = params['code'].to_s.strip
|
|
||||||
tip_exception("code不能为空") if code.blank?
|
|
||||||
uid = params['uid'].to_s.strip
|
uid = params['uid'].to_s.strip
|
||||||
tip_exception("uid不能为空") if uid.blank?
|
tip_exception("uid不能为空") if uid.blank?
|
||||||
redirect_uri = params['redirect_uri'].to_s.strip
|
redirect_uri = params['redirect_uri'].to_s.strip
|
||||||
tip_exception("redirect_uri不能为空") if redirect_uri.blank?
|
tip_exception("redirect_uri不能为空") if redirect_uri.blank?
|
||||||
|
email = params['email'].to_s.strip
|
||||||
|
tip_exception("email不能为空") if email.blank?
|
||||||
|
phone = params['phone'].to_s.strip
|
||||||
|
tip_exception("phone不能为空") if phone.blank?
|
||||||
|
name = params['name'].to_s.strip
|
||||||
|
tip_exception("name不能为空") if name.blank?
|
||||||
|
|
||||||
open_user = OpenUsers::Acge.find_by(uid: uid)
|
open_user = OpenUsers::Acge.find_by(uid: uid)
|
||||||
if open_user.present? && open_user.user.present?
|
if open_user.present? && open_user.user.present?
|
||||||
|
@ -18,13 +22,41 @@ class Oauth::AcgeController < Oauth::BaseController
|
||||||
else
|
else
|
||||||
if current_user.blank? || !current_user.logged?
|
if current_user.blank? || !current_user.logged?
|
||||||
session[:unionid] = uid
|
session[:unionid] = uid
|
||||||
|
user = User.find_by(mail: email) || User.find_by(phone: phone)
|
||||||
|
if user.present?
|
||||||
|
OpenUsers::Acge.create!(user: user, uid: uid)
|
||||||
|
successful_authentication(user)
|
||||||
|
redirect_to redirect_uri
|
||||||
|
|
||||||
|
return
|
||||||
|
else
|
||||||
|
username = uid[0..7]
|
||||||
|
password = SecureRandom.hex(4)
|
||||||
|
reg_result = autologin_register(username, email, password, 'acge', phone, name)
|
||||||
|
CSV.open("public/操作系统大赛用户信息.csv", 'wb') do |csv|
|
||||||
|
csv << [username, email, password, phone, name]
|
||||||
|
end
|
||||||
|
if reg_result[:message].blank?
|
||||||
|
open_user = OpenUsers::Acge.create!(user_id: reg_result[:user][:id], uid: uid)
|
||||||
|
successful_authentication(open_user.user)
|
||||||
|
redirect_to redirect_uri
|
||||||
|
|
||||||
|
return
|
||||||
|
else
|
||||||
|
render_error(reg_result[:message])
|
||||||
|
end
|
||||||
|
end
|
||||||
else
|
else
|
||||||
OpenUsers::Acge.create!(user: current_user, uid: uid)
|
OpenUsers::Acge.create!(user: current_user, uid: uid)
|
||||||
|
successful_authentication(current_user)
|
||||||
|
redirect_to redirect_uri
|
||||||
|
|
||||||
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
Rails.logger.info("[OAuth2] session[:unionid] -> #{session[:unionid]}")
|
Rails.logger.info("[OAuth2] session[:unionid] -> #{session[:unionid]}")
|
||||||
redirect_to "/bindlogin/acge?redirect_uri=#{redirect_uri}"
|
# redirect_to "/bindlogin/acge?redirect_uri=#{redirect_uri}"
|
||||||
rescue Exception => ex
|
rescue Exception => ex
|
||||||
render_error(ex.message)
|
render_error(ex.message)
|
||||||
end
|
end
|
||||||
|
|
|
@ -115,7 +115,7 @@ class User < Owner
|
||||||
# trustie: 来自Trustie平台
|
# trustie: 来自Trustie平台
|
||||||
# forge: 平台本身注册的用户
|
# forge: 平台本身注册的用户
|
||||||
# military: 军科的用户
|
# military: 军科的用户
|
||||||
enumerize :platform, in: [:forge, :educoder, :trustie, :military, :github, :gitee, :qq, :wechat, :bot], default: :forge, scope: :shallow
|
enumerize :platform, in: [:forge, :educoder, :trustie, :military, :github, :gitee, :qq, :wechat, :bot, :acge], default: :forge, scope: :shallow
|
||||||
|
|
||||||
belongs_to :laboratory, optional: true
|
belongs_to :laboratory, optional: true
|
||||||
has_one :user_extension, dependent: :destroy
|
has_one :user_extension, dependent: :destroy
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
用户名,邮箱,密码,手机号,昵称
|
||||||
|
123456789,yystopf1@163.com,9b653a7d,15386415122,何慧
|
|
Loading…
Reference in New Issue