|
|
class Weapps::RegistersController < Weapps::BaseController
|
|
|
before_action :require_wechat_login!
|
|
|
|
|
|
def create
|
|
|
# 查询验证码是否正确;type只可能是1或者8
|
|
|
type = phone_mail_type(params[:login].strip)
|
|
|
code = params[:code].strip
|
|
|
|
|
|
if type == 1
|
|
|
uid_logger("start register by phone: type is #{type}")
|
|
|
pre = 'p'
|
|
|
email = nil
|
|
|
phone = params[:login]
|
|
|
verifi_code = VerificationCode.where(phone: phone, code: code, code_type: 1).last
|
|
|
else
|
|
|
uid_logger("start register by email: type is #{type}")
|
|
|
pre = 'm'
|
|
|
email = params[:login]
|
|
|
phone = nil
|
|
|
verifi_code = VerificationCode.where(email: email, code: code, code_type: 8).last
|
|
|
end
|
|
|
uid_logger("start register: verifi_code is #{verifi_code}, code is #{code}, time is #{Time.now.to_i - verifi_code.try(:created_at).to_i}")
|
|
|
# check_code = (verifi_code.try(:code) == code.strip && (Time.now.to_i - verifi_code.created_at.to_i) <= 10*60)
|
|
|
# todo 上线前请删除万能验证码"513231"
|
|
|
unless code == "513231" && request.subdomain == "test-newweb"
|
|
|
return render_error('验证码不正确') if verifi_code.try(:code) != code.strip
|
|
|
return render_error('验证码已失效') if !verifi_code&.effective?
|
|
|
end
|
|
|
|
|
|
login = User.generate_login(pre)
|
|
|
@user = User.new(admin: false, login: login, mail: email, phone: phone, type: 'User')
|
|
|
@user.password = params[:password]
|
|
|
# 现在因为是验证码,所以在注册的时候就可以激活
|
|
|
@user.activate
|
|
|
# 必须要用save操作,密码的保存是在users中
|
|
|
ActiveRecord::Base.transaction do
|
|
|
@user.save!
|
|
|
UserExtension.create!(user_id: @user.id)
|
|
|
# 绑定微信号
|
|
|
OpenUsers::Wechat.create!(user: @user, uid: session_unionid)
|
|
|
|
|
|
# 注册完成,手机号或邮箱想可以奖励500金币
|
|
|
RewardGradeService.call(
|
|
|
@user,
|
|
|
container_id: @user.id,
|
|
|
container_type: pre == 'p' ? 'Phone' : 'Mail',
|
|
|
score: 500
|
|
|
)
|
|
|
end
|
|
|
successful_authentication(@user)
|
|
|
# session[:user_id] = @user.id
|
|
|
session[:"#{default_yun_session}"] = @user.id
|
|
|
|
|
|
# render_ok(user_id: @user.id)
|
|
|
end
|
|
|
|
|
|
private
|
|
|
|
|
|
# 1 手机类型;0 邮箱类型
|
|
|
# 注意新版的login是自动名生成的
|
|
|
def phone_mail_type value
|
|
|
value =~ /^1\d{10}$/ ? 1 : 0
|
|
|
end
|
|
|
end |