mirror of
https://gitlink.org.cn/Gitlink/forgeplus.git
synced 2026-05-03 03:40:49 +08:00
init project
This commit is contained in:
59
app/controllers/weapps/verification_codes_controller.rb
Normal file
59
app/controllers/weapps/verification_codes_controller.rb
Normal file
@@ -0,0 +1,59 @@
|
||||
class Weapps::VerificationCodesController < Weapps::BaseController
|
||||
before_action :require_wechat_login!
|
||||
|
||||
def create
|
||||
params[:type] == 'register' ? check_can_register : check_can_reset_password
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def check_can_register
|
||||
login = params[:login].to_s.strip
|
||||
if login =~ /^[a-zA-Z0-9]+([._\\]*[a-zA-Z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/
|
||||
user = User.find_by(mail: login)
|
||||
return render_error('该邮箱已注册') if user.present?
|
||||
elsif login =~ /^1\d{10}$/
|
||||
user = User.find_by(phone: params[:login])
|
||||
return render_error('该手机号已注册') if user.present?
|
||||
else
|
||||
return render_error('请输入正确的邮箱或手机号')
|
||||
end
|
||||
|
||||
send_type = login =~ /^1\d{10}$/ ? 1 : 8
|
||||
|
||||
# 发送验证码
|
||||
send_code(send_type, login)
|
||||
|
||||
render_ok
|
||||
end
|
||||
|
||||
def check_can_reset_password
|
||||
login = params[:login].to_s.strip
|
||||
if login =~ /^[a-zA-Z0-9]+([._\\]*[a-zA-Z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/
|
||||
user = User.find_by(mail: login)
|
||||
return render_error('该邮箱尚未注册') if user.blank?
|
||||
elsif login =~ /^1\d{10}$/
|
||||
user = User.find_by(phone: login)
|
||||
return render_error('该手机号尚未注册') if user.blank?
|
||||
else
|
||||
return render_error('请输入正确的邮箱或手机号')
|
||||
end
|
||||
|
||||
send_type = login =~ /^1\d{10}$/ ? 2 : 3
|
||||
|
||||
# 发送验证码
|
||||
send_code(send_type, login)
|
||||
|
||||
render_ok
|
||||
end
|
||||
|
||||
def send_code send_type, login
|
||||
code = %W(0 1 2 3 4 5 6 7 8 9)
|
||||
verification_code = code.sample(6).join
|
||||
# 记录验证码
|
||||
sign = Digest::MD5.hexdigest("#{OPENKEY}#{login}")
|
||||
tip_exception(501, "请求不合理") if sign != params[:smscode]
|
||||
|
||||
check_verification_code(verification_code, send_type, login)
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user