增加: 已登录用户对用户名、邮箱、电话进行校验
This commit is contained in:
parent
e36c7a4b6a
commit
2ea78b4f20
|
@ -1,5 +1,5 @@
|
||||||
class AccountsController < ApplicationController
|
class AccountsController < ApplicationController
|
||||||
before_action :require_login, only: [:simple_update]
|
before_action :require_login, only: [:login_check, :simple_update]
|
||||||
include ApplicationHelper
|
include ApplicationHelper
|
||||||
|
|
||||||
#skip_before_action :check_account, :only => [:logout]
|
#skip_before_action :check_account, :only => [:logout]
|
||||||
|
@ -333,6 +333,11 @@ class AccountsController < ApplicationController
|
||||||
Register::CheckColumnsForm.new(check_params).validate!
|
Register::CheckColumnsForm.new(check_params).validate!
|
||||||
render_ok
|
render_ok
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def login_check
|
||||||
|
Register::LoginCheckColumnsForm.new(check_params.merge(user: current_user)).validate!
|
||||||
|
render_ok
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
|
|
@ -10,28 +10,40 @@ module Register
|
||||||
VerifiCodeError = Class.new(Error)
|
VerifiCodeError = Class.new(Error)
|
||||||
|
|
||||||
private
|
private
|
||||||
def check_login(login)
|
def check_login(login, user=nil)
|
||||||
login = strip(login)
|
login = strip(login)
|
||||||
raise LoginError, "登录名格式有误" unless login =~ CustomRegexp::LOGIN
|
raise LoginError, "登录名格式有误" unless login =~ CustomRegexp::LOGIN
|
||||||
|
|
||||||
login_exist = Owner.exists?(login: login) || ReversedKeyword.check_exists?(login)
|
login_exist = Owner.exists?(login: login) || ReversedKeyword.check_exists?(login)
|
||||||
raise LoginError, '登录名已被使用' if login_exist
|
if user.present?
|
||||||
|
raise LoginError, '登录名已被使用' if login_exist && login != user&.login
|
||||||
|
else
|
||||||
|
raise LoginError, '登录名已被使用' if login_exist
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def check_mail(mail)
|
def check_mail(mail, user=nil)
|
||||||
mail = strip(mail)
|
mail = strip(mail)
|
||||||
raise EmailError, "邮件格式有误" unless mail =~ CustomRegexp::EMAIL
|
raise EmailError, "邮件格式有误" unless mail =~ CustomRegexp::EMAIL
|
||||||
|
|
||||||
mail_exist = Owner.exists?(mail: mail)
|
mail_exist = Owner.exists?(mail: mail)
|
||||||
raise EmailError, '邮箱已被使用' if mail_exist
|
if user.present?
|
||||||
|
raise EmailError, '邮箱已被使用' if mail_exist && mail != user&.mail
|
||||||
|
else
|
||||||
|
raise EmailError, '邮箱已被使用' if mail_exist
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def check_phone(phone)
|
def check_phone(phone, user=nil)
|
||||||
phone = strip(phone)
|
phone = strip(phone)
|
||||||
raise PhoneError, "手机号格式有误" unless phone =~ CustomRegexp::PHONE
|
raise PhoneError, "手机号格式有误" unless phone =~ CustomRegexp::PHONE
|
||||||
|
|
||||||
phone_exist = Owner.exists?(phone: phone)
|
phone_exist = Owner.exists?(phone: phone)
|
||||||
raise PhoneError, '手机号已被使用' if phone_exist
|
if user.present?
|
||||||
|
raise PhoneError, '手机号已被使用' if phone_exist && phone != user&.phone
|
||||||
|
else
|
||||||
|
raise PhoneError, '手机号已被使用' if phone_exist
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def check_password(password)
|
def check_password(password)
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
module Register
|
||||||
|
class LoginCheckColumnsForm < Register::BaseForm
|
||||||
|
attr_accessor :type, :value, :user
|
||||||
|
|
||||||
|
validates :type, presence: true, numericality: true
|
||||||
|
validates :value, presence: true
|
||||||
|
validate :check!
|
||||||
|
|
||||||
|
def check!
|
||||||
|
# params[:type] 为事件类型 1:登录名(login) 2:email(邮箱) 3:phone(手机号)
|
||||||
|
case strip(type).to_i
|
||||||
|
when 1 then check_login(strip(value), user)
|
||||||
|
when 2 then check_mail(strip(value), user)
|
||||||
|
when 3 then check_phone(strip(value), user)
|
||||||
|
else raise("type值无效")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -203,6 +203,7 @@ Rails.application.routes.draw do
|
||||||
post :remote_password
|
post :remote_password
|
||||||
post :change_password
|
post :change_password
|
||||||
post :check
|
post :check
|
||||||
|
post :login_check
|
||||||
post :simple_update
|
post :simple_update
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue