403 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			403 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| 
								 | 
							
								package authservice
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//import (
							 | 
						|||
| 
								 | 
							
								//	"go-admin/app/admin/models"
							 | 
						|||
| 
								 | 
							
								//	"go-admin/app/admin/models/sysmodel"
							 | 
						|||
| 
								 | 
							
								//	"go-admin/app/admin/service/aduserdb"
							 | 
						|||
| 
								 | 
							
								//	"go-admin/app/admin/service/otcdb/orderdb"
							 | 
						|||
| 
								 | 
							
								//	"go-admin/common/const/enum/businesstype"
							 | 
						|||
| 
								 | 
							
								//	statuscode "go-admin/common/status_code"
							 | 
						|||
| 
								 | 
							
								//	"go-admin/pkg/googleauthhelper"
							 | 
						|||
| 
								 | 
							
								//	"go-admin/pkg/utility"
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//	log "github.com/go-admin-team/go-admin-core/logger"
							 | 
						|||
| 
								 | 
							
								//	"gorm.io/gorm"
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//	"go.uber.org/zap"
							 | 
						|||
| 
								 | 
							
								//)
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//// GetUserAuthSwitch 获取用户验证器开关状态
							 | 
						|||
| 
								 | 
							
								//func GetUserAuthSwitch(orm *gorm.DB, userID int) (auth sysmodel.UserAuthSwitchStatus, err error) {
							 | 
						|||
| 
								 | 
							
								//	// 获取用户验证器开关
							 | 
						|||
| 
								 | 
							
								//	auth, err = aduserdb.GetUserAuthSwitch(orm, userID)
							 | 
						|||
| 
								 | 
							
								//	if err != nil {
							 | 
						|||
| 
								 | 
							
								//		return
							 | 
						|||
| 
								 | 
							
								//	}
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//	if auth.PhoneAuth != 1 {
							 | 
						|||
| 
								 | 
							
								//		auth.PhoneAuth = 0
							 | 
						|||
| 
								 | 
							
								//	}
							 | 
						|||
| 
								 | 
							
								//	if auth.EmailAuth != 1 {
							 | 
						|||
| 
								 | 
							
								//		auth.EmailAuth = 0
							 | 
						|||
| 
								 | 
							
								//	}
							 | 
						|||
| 
								 | 
							
								//	if auth.GoogleAuth != 1 {
							 | 
						|||
| 
								 | 
							
								//		auth.GoogleAuth = 0
							 | 
						|||
| 
								 | 
							
								//	}
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//	return
							 | 
						|||
| 
								 | 
							
								//}
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//// AuthenticatorVerify 已开通验证器校验
							 | 
						|||
| 
								 | 
							
								//func AuthenticatorVerify(orm *gorm.DB, authenticator sysmodel.Authenticator) int {
							 | 
						|||
| 
								 | 
							
								//	// 是否完全验证
							 | 
						|||
| 
								 | 
							
								//	if authenticator.PhoneAuth == 1 && len(authenticator.SmsCaptcha) == 0 ||
							 | 
						|||
| 
								 | 
							
								//		authenticator.EmailAuth == 1 && len(authenticator.EmailCaptcha) == 0 ||
							 | 
						|||
| 
								 | 
							
								//		authenticator.GoogleAuth == 1 && len(authenticator.GoogleCaptcha) == 0 {
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//		return statuscode.PleasePerformCompleteSecurityVerification
							 | 
						|||
| 
								 | 
							
								//	}
							 | 
						|||
| 
								 | 
							
								//	var phoneCheck sysmodel.CheckCaptcha
							 | 
						|||
| 
								 | 
							
								//	var emailCheck sysmodel.CheckCaptcha
							 | 
						|||
| 
								 | 
							
								//	// 校验验证码
							 | 
						|||
| 
								 | 
							
								//	if authenticator.PhoneAuth == 1 {
							 | 
						|||
| 
								 | 
							
								//		phoneCheck = sysmodel.CheckCaptcha{
							 | 
						|||
| 
								 | 
							
								//			BusinessType: int(authenticator.BusinessType),
							 | 
						|||
| 
								 | 
							
								//			Receive:      authenticator.Phone,
							 | 
						|||
| 
								 | 
							
								//			Captcha:      authenticator.SmsCaptcha,
							 | 
						|||
| 
								 | 
							
								//		}
							 | 
						|||
| 
								 | 
							
								//	}
							 | 
						|||
| 
								 | 
							
								//	if authenticator.EmailAuth == 1 {
							 | 
						|||
| 
								 | 
							
								//		emailCheck = sysmodel.CheckCaptcha{
							 | 
						|||
| 
								 | 
							
								//			BusinessType: int(authenticator.BusinessType),
							 | 
						|||
| 
								 | 
							
								//			Receive:      authenticator.Email,
							 | 
						|||
| 
								 | 
							
								//			Captcha:      authenticator.EmailCaptcha,
							 | 
						|||
| 
								 | 
							
								//		}
							 | 
						|||
| 
								 | 
							
								//	}
							 | 
						|||
| 
								 | 
							
								//	var googleSecret string
							 | 
						|||
| 
								 | 
							
								//	var googleCaptcha string
							 | 
						|||
| 
								 | 
							
								//	if authenticator.GoogleAuth == 1 {
							 | 
						|||
| 
								 | 
							
								//		googleSecret = authenticator.GoogleSecret
							 | 
						|||
| 
								 | 
							
								//		googleCaptcha = authenticator.GoogleCaptcha
							 | 
						|||
| 
								 | 
							
								//	}
							 | 
						|||
| 
								 | 
							
								//	// 检验验证码
							 | 
						|||
| 
								 | 
							
								//	code := CheckCaptchaNew(orm, phoneCheck, emailCheck, googleSecret, googleCaptcha)
							 | 
						|||
| 
								 | 
							
								//	return code
							 | 
						|||
| 
								 | 
							
								//}
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//// AuthSwitchBefore 身份验证开关前校验(新)
							 | 
						|||
| 
								 | 
							
								//func AuthSwitchBefore(orm *gorm.DB, auth sysmodel.AuthenticatorSwitch) int {
							 | 
						|||
| 
								 | 
							
								//	// 开启手机、更改手机、开启邮箱、更改邮箱 判断是否被占用
							 | 
						|||
| 
								 | 
							
								//	var user models.AdUser
							 | 
						|||
| 
								 | 
							
								//	var err error
							 | 
						|||
| 
								 | 
							
								//	if auth.BusinessType == businesstype.OpenPhoneAuth || auth.BusinessType == businesstype.ChangePhoneAuth {
							 | 
						|||
| 
								 | 
							
								//		user, err = aduserdb.GetUserByPhone(orm, auth.NewPhoneArea, auth.NewPhone)
							 | 
						|||
| 
								 | 
							
								//		if err != nil {
							 | 
						|||
| 
								 | 
							
								//			return statuscode.ServerError
							 | 
						|||
| 
								 | 
							
								//		}
							 | 
						|||
| 
								 | 
							
								//		if user.Id != 0 && user.Id != auth.UserID {
							 | 
						|||
| 
								 | 
							
								//			return statuscode.ThePhoneHasBeenBound
							 | 
						|||
| 
								 | 
							
								//		}
							 | 
						|||
| 
								 | 
							
								//	} else if auth.BusinessType == businesstype.OpenEmailAuth || auth.BusinessType == businesstype.ChangeEmailAuth {
							 | 
						|||
| 
								 | 
							
								//		user, err = aduserdb.GetUserByEmail(orm, auth.NewEmail) //GetUser("useremail", auth.NewEmail)
							 | 
						|||
| 
								 | 
							
								//		if err != nil {
							 | 
						|||
| 
								 | 
							
								//			return statuscode.ServerError
							 | 
						|||
| 
								 | 
							
								//		}
							 | 
						|||
| 
								 | 
							
								//		if user.Id != 0 && user.Id != auth.UserID {
							 | 
						|||
| 
								 | 
							
								//			return statuscode.TheEmailHasBeenBound
							 | 
						|||
| 
								 | 
							
								//		}
							 | 
						|||
| 
								 | 
							
								//	}
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//	// 获取用户验证器开关状态
							 | 
						|||
| 
								 | 
							
								//	authSwitch, err := GetUserAuthSwitch(orm, auth.UserID)
							 | 
						|||
| 
								 | 
							
								//	if err != nil {
							 | 
						|||
| 
								 | 
							
								//		return statuscode.ServerError
							 | 
						|||
| 
								 | 
							
								//	}
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//	// 关闭验证器 需保证至少两个开启
							 | 
						|||
| 
								 | 
							
								//	if auth.BusinessType == businesstype.ClosePhoneAuth ||
							 | 
						|||
| 
								 | 
							
								//		auth.BusinessType == businesstype.CloseEmailAuth ||
							 | 
						|||
| 
								 | 
							
								//		auth.BusinessType == businesstype.CloseGoogleAuth {
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//		if (authSwitch.PhoneAuth + authSwitch.EmailAuth + authSwitch.GoogleAuth) < 3 {
							 | 
						|||
| 
								 | 
							
								//			return statuscode.AllAuthMustOpen
							 | 
						|||
| 
								 | 
							
								//		}
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//		// OTC 订单状态为:1-待付款、3-代放币、7-申诉中时,不允许解绑手机
							 | 
						|||
| 
								 | 
							
								//		if auth.BusinessType == businesstype.ClosePhoneAuth {
							 | 
						|||
| 
								 | 
							
								//			// hc todo 注释
							 | 
						|||
| 
								 | 
							
								//			// 广告
							 | 
						|||
| 
								 | 
							
								//			// sum, err := advertisedb.GetUserAdvertiseSum(auth.UserID)
							 | 
						|||
| 
								 | 
							
								//			// if err != nil {
							 | 
						|||
| 
								 | 
							
								//			// 	return statuscode.ServerError
							 | 
						|||
| 
								 | 
							
								//			// }
							 | 
						|||
| 
								 | 
							
								//			// if sum > 0 {
							 | 
						|||
| 
								 | 
							
								//			// 	return statuscode.OTCAdvertiseAreInProgress
							 | 
						|||
| 
								 | 
							
								//			// }
							 | 
						|||
| 
								 | 
							
								//			// 订单
							 | 
						|||
| 
								 | 
							
								//			num, err := orderdb.GetUnfilledOrderCount(orm, auth.UserID)
							 | 
						|||
| 
								 | 
							
								//			if err != nil {
							 | 
						|||
| 
								 | 
							
								//				return statuscode.ServerError
							 | 
						|||
| 
								 | 
							
								//			}
							 | 
						|||
| 
								 | 
							
								//			if num > 0 {
							 | 
						|||
| 
								 | 
							
								//				return statuscode.OTCOrdersAreInProgress
							 | 
						|||
| 
								 | 
							
								//			}
							 | 
						|||
| 
								 | 
							
								//		}
							 | 
						|||
| 
								 | 
							
								//	}
							 | 
						|||
| 
								 | 
							
								//	if user.Id == 0 {
							 | 
						|||
| 
								 | 
							
								//		user, err = aduserdb.GetUserById(orm, auth.UserID) //"id", auth.UserID)
							 | 
						|||
| 
								 | 
							
								//		if err != nil {
							 | 
						|||
| 
								 | 
							
								//			return statuscode.ServerError
							 | 
						|||
| 
								 | 
							
								//		}
							 | 
						|||
| 
								 | 
							
								//	}
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//	// ==================== 1 已开通验证器校验 ==================== //
							 | 
						|||
| 
								 | 
							
								//	validator := sysmodel.Authenticator{
							 | 
						|||
| 
								 | 
							
								//		UserID:        auth.UserID,
							 | 
						|||
| 
								 | 
							
								//		PhoneAuth:     authSwitch.PhoneAuth,
							 | 
						|||
| 
								 | 
							
								//		EmailAuth:     authSwitch.EmailAuth,
							 | 
						|||
| 
								 | 
							
								//		GoogleAuth:    authSwitch.GoogleAuth,
							 | 
						|||
| 
								 | 
							
								//		Phone:         user.Phone,
							 | 
						|||
| 
								 | 
							
								//		Email:         user.UserEmail,
							 | 
						|||
| 
								 | 
							
								//		GoogleSecret:  authSwitch.GoogleSecret,
							 | 
						|||
| 
								 | 
							
								//		SmsCaptcha:    auth.SmsCaptcha,
							 | 
						|||
| 
								 | 
							
								//		EmailCaptcha:  auth.EmailCaptcha,
							 | 
						|||
| 
								 | 
							
								//		GoogleCaptcha: auth.GoogleCaptcha,
							 | 
						|||
| 
								 | 
							
								//		BusinessType:  auth.BusinessType,
							 | 
						|||
| 
								 | 
							
								//	}
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//	// 是否完全验证
							 | 
						|||
| 
								 | 
							
								//	if validator.PhoneAuth == 1 && len(validator.SmsCaptcha) == 0 ||
							 | 
						|||
| 
								 | 
							
								//		validator.EmailAuth == 1 && len(validator.EmailCaptcha) == 0 ||
							 | 
						|||
| 
								 | 
							
								//		validator.GoogleAuth == 1 && len(validator.GoogleCaptcha) == 0 {
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//		return statuscode.PleasePerformCompleteSecurityVerification
							 | 
						|||
| 
								 | 
							
								//	}
							 | 
						|||
| 
								 | 
							
								//	var phoneCode models.AdVerifyCode
							 | 
						|||
| 
								 | 
							
								//	if len(validator.SmsCaptcha) > 0 && !CheckOpenVerifyCode(validator.SmsCaptcha) {
							 | 
						|||
| 
								 | 
							
								//		// 校验手机号码发送的验证码
							 | 
						|||
| 
								 | 
							
								//		phoneCheck := sysmodel.CheckCaptcha{
							 | 
						|||
| 
								 | 
							
								//			BusinessType: int(businesstype.WithdrawAuth),
							 | 
						|||
| 
								 | 
							
								//			Receive:      validator.Phone,
							 | 
						|||
| 
								 | 
							
								//			Captcha:      validator.SmsCaptcha,
							 | 
						|||
| 
								 | 
							
								//		}
							 | 
						|||
| 
								 | 
							
								//		phoneCode = aduserdb.GetVerifyCode(orm, phoneCheck)
							 | 
						|||
| 
								 | 
							
								//		if phoneCode.Id == 0 {
							 | 
						|||
| 
								 | 
							
								//			return statuscode.PhoneCaptchaInvalid
							 | 
						|||
| 
								 | 
							
								//		}
							 | 
						|||
| 
								 | 
							
								//	}
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//	var emailCode models.AdVerifyCode
							 | 
						|||
| 
								 | 
							
								//	if len(validator.EmailCaptcha) > 0 && !CheckOpenVerifyCode(validator.EmailCaptcha) {
							 | 
						|||
| 
								 | 
							
								//		// 校验邮箱号码发送的验证码
							 | 
						|||
| 
								 | 
							
								//		emailCheck := sysmodel.CheckCaptcha{
							 | 
						|||
| 
								 | 
							
								//			BusinessType: int(businesstype.WithdrawAuth),
							 | 
						|||
| 
								 | 
							
								//			Receive:      validator.Email,
							 | 
						|||
| 
								 | 
							
								//			Captcha:      validator.EmailCaptcha,
							 | 
						|||
| 
								 | 
							
								//		}
							 | 
						|||
| 
								 | 
							
								//		emailCode = aduserdb.GetVerifyCode(orm, emailCheck)
							 | 
						|||
| 
								 | 
							
								//		if emailCode.Id == 0 {
							 | 
						|||
| 
								 | 
							
								//			return statuscode.EmailCaptchaInvalid
							 | 
						|||
| 
								 | 
							
								//		}
							 | 
						|||
| 
								 | 
							
								//	}
							 | 
						|||
| 
								 | 
							
								//	if len(validator.GoogleCaptcha) > 0 {
							 | 
						|||
| 
								 | 
							
								//		// 校验谷歌的验证码
							 | 
						|||
| 
								 | 
							
								//		auth2 := googleauthhelper.VerifyCode(validator.GoogleSecret, utility.StringAsInt32(validator.GoogleCaptcha))
							 | 
						|||
| 
								 | 
							
								//		if !auth2 {
							 | 
						|||
| 
								 | 
							
								//			return statuscode.GoogleCaptchaInvalid
							 | 
						|||
| 
								 | 
							
								//		}
							 | 
						|||
| 
								 | 
							
								//	}
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//	// ==================== 2 新绑定的验证器校验 ==================== //
							 | 
						|||
| 
								 | 
							
								//	var phoneNewCode models.AdVerifyCode
							 | 
						|||
| 
								 | 
							
								//	// 开启手机|更改手机验证 都需要校验新手机
							 | 
						|||
| 
								 | 
							
								//	if auth.BusinessType == businesstype.OpenPhoneAuth || auth.BusinessType == businesstype.ChangePhoneAuth {
							 | 
						|||
| 
								 | 
							
								//		if !CheckOpenVerifyCode(auth.NewPhoneCaptcha) {
							 | 
						|||
| 
								 | 
							
								//			cc := sysmodel.CheckCaptcha{
							 | 
						|||
| 
								 | 
							
								//				BusinessType: int(auth.BusinessType),
							 | 
						|||
| 
								 | 
							
								//				Receive:      auth.NewPhone,
							 | 
						|||
| 
								 | 
							
								//				Captcha:      auth.NewPhoneCaptcha,
							 | 
						|||
| 
								 | 
							
								//			}
							 | 
						|||
| 
								 | 
							
								//			phoneNewCode = aduserdb.GetVerifyCode(orm, cc)
							 | 
						|||
| 
								 | 
							
								//			if phoneNewCode.Id == 0 {
							 | 
						|||
| 
								 | 
							
								//				return statuscode.NewPhoneCaptchaInvalid
							 | 
						|||
| 
								 | 
							
								//			}
							 | 
						|||
| 
								 | 
							
								//		}
							 | 
						|||
| 
								 | 
							
								//	}
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//	var emailNewCode models.AdVerifyCode
							 | 
						|||
| 
								 | 
							
								//	// 开启邮箱|更改邮箱验证 都需要校验新邮箱
							 | 
						|||
| 
								 | 
							
								//	if auth.BusinessType == businesstype.OpenEmailAuth || auth.BusinessType == businesstype.ChangeEmailAuth {
							 | 
						|||
| 
								 | 
							
								//		if !CheckOpenVerifyCode(auth.NewEmailCaptcha) {
							 | 
						|||
| 
								 | 
							
								//			cc := sysmodel.CheckCaptcha{
							 | 
						|||
| 
								 | 
							
								//				BusinessType: int(auth.BusinessType),
							 | 
						|||
| 
								 | 
							
								//				Receive:      auth.NewEmail,
							 | 
						|||
| 
								 | 
							
								//				Captcha:      auth.NewEmailCaptcha,
							 | 
						|||
| 
								 | 
							
								//			}
							 | 
						|||
| 
								 | 
							
								//			emailNewCode = aduserdb.GetVerifyCode(orm, cc)
							 | 
						|||
| 
								 | 
							
								//			if emailNewCode.Id == 0 {
							 | 
						|||
| 
								 | 
							
								//				return statuscode.NewEmailCaptchaInvalid
							 | 
						|||
| 
								 | 
							
								//			}
							 | 
						|||
| 
								 | 
							
								//		}
							 | 
						|||
| 
								 | 
							
								//	}
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//	// 开启谷歌验证器 需要验证谷歌
							 | 
						|||
| 
								 | 
							
								//	if auth.BusinessType == businesstype.OpenGoogleAuth {
							 | 
						|||
| 
								 | 
							
								//		newSecret, _ := aduserdb.GetNewGoogleSecret(orm, auth.UserID)
							 | 
						|||
| 
								 | 
							
								//		if ok := googleauthhelper.VerifyCode(newSecret, utility.StringAsInt32(auth.NewGoogleCaptcha)); !ok {
							 | 
						|||
| 
								 | 
							
								//			// tx.Rollback()
							 | 
						|||
| 
								 | 
							
								//			log.Error("google验证码校验失败")
							 | 
						|||
| 
								 | 
							
								//			return statuscode.GoogleCaptchaInvalid
							 | 
						|||
| 
								 | 
							
								//		}
							 | 
						|||
| 
								 | 
							
								//	}
							 | 
						|||
| 
								 | 
							
								//	if phoneCode.Id == 0 && phoneNewCode.Id == 0 && emailCode.Id == 0 && emailNewCode.Id == 0 {
							 | 
						|||
| 
								 | 
							
								//		log.Error("AuthSwitchBefore", zap.String("没验证旧手机、新手机、旧邮箱、新邮箱,估计只验证谷歌验证器",
							 | 
						|||
| 
								 | 
							
								//			"phoneCode.Id ==0 && phoneNewCode.Id ==0 && emailCode.Id ==0&& emailNewCode.Id ==0"))
							 | 
						|||
| 
								 | 
							
								//		return statuscode.OK
							 | 
						|||
| 
								 | 
							
								//	}
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//	var transCode int
							 | 
						|||
| 
								 | 
							
								//	err = orm.Transaction(func(tx *gorm.DB) error {
							 | 
						|||
| 
								 | 
							
								//		// ==================== 1 已开通验证器校验,修改表数据为已验证 ==================== //
							 | 
						|||
| 
								 | 
							
								//		if phoneCode.Id > 0 { // 旧手机验证码修改
							 | 
						|||
| 
								 | 
							
								//			err := aduserdb.UpdateVerifyFlag(tx, phoneCode.Id)
							 | 
						|||
| 
								 | 
							
								//			if err != nil {
							 | 
						|||
| 
								 | 
							
								//				log.Error("AuthSwitchBefore phoneCode", zap.Error(err))
							 | 
						|||
| 
								 | 
							
								//				// _ = tx.Rollback()
							 | 
						|||
| 
								 | 
							
								//				transCode = statuscode.PhoneCaptchaInvalid
							 | 
						|||
| 
								 | 
							
								//				return err
							 | 
						|||
| 
								 | 
							
								//			}
							 | 
						|||
| 
								 | 
							
								//		}
							 | 
						|||
| 
								 | 
							
								//		if emailCode.Id > 0 { // 旧邮箱验证码修改
							 | 
						|||
| 
								 | 
							
								//			err = aduserdb.UpdateVerifyFlag(tx, emailCode.Id)
							 | 
						|||
| 
								 | 
							
								//			if err != nil {
							 | 
						|||
| 
								 | 
							
								//				log.Error("AuthSwitchBefore emailCode", zap.Error(err))
							 | 
						|||
| 
								 | 
							
								//				// _ = tx.Rollback()
							 | 
						|||
| 
								 | 
							
								//				transCode = statuscode.EmailCaptchaInvalid
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//				return err
							 | 
						|||
| 
								 | 
							
								//			}
							 | 
						|||
| 
								 | 
							
								//		}
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//		// ==================== 2 新绑定的验证器校验,修改表数据为已验证 ==================== //
							 | 
						|||
| 
								 | 
							
								//		if phoneNewCode.Id > 0 { // 新手机验证码修改
							 | 
						|||
| 
								 | 
							
								//			err = aduserdb.UpdateVerifyFlag(tx, phoneNewCode.Id)
							 | 
						|||
| 
								 | 
							
								//			if err != nil {
							 | 
						|||
| 
								 | 
							
								//				log.Error("AuthSwitchBefore phoneNewCode", zap.Error(err))
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//				transCode = statuscode.PhoneCaptchaInvalid
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//				return err
							 | 
						|||
| 
								 | 
							
								//			}
							 | 
						|||
| 
								 | 
							
								//		}
							 | 
						|||
| 
								 | 
							
								//		if emailNewCode.Id > 0 { // 新邮箱验证码修改
							 | 
						|||
| 
								 | 
							
								//			err = aduserdb.UpdateVerifyFlag(tx, emailNewCode.Id)
							 | 
						|||
| 
								 | 
							
								//			if err != nil {
							 | 
						|||
| 
								 | 
							
								//				log.Error("AuthSwitchBefore emailNewCode", zap.Error(err))
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//				transCode = statuscode.EmailCaptchaInvalid
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//				return err
							 | 
						|||
| 
								 | 
							
								//			}
							 | 
						|||
| 
								 | 
							
								//		}
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//		return nil
							 | 
						|||
| 
								 | 
							
								//	})
							 | 
						|||
| 
								 | 
							
								//	// 开启事务
							 | 
						|||
| 
								 | 
							
								//	// tx, err := dbhelper.MasterPgdb.Beginx()
							 | 
						|||
| 
								 | 
							
								//	// if err != nil {
							 | 
						|||
| 
								 | 
							
								//	// 	return statuscode.ServerError
							 | 
						|||
| 
								 | 
							
								//	// }
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//	// // ==================== 1 已开通验证器校验,修改表数据为已验证 ==================== //
							 | 
						|||
| 
								 | 
							
								//	// if phoneCode.Id > 0 { // 旧手机验证码修改
							 | 
						|||
| 
								 | 
							
								//	// 	err = aduserdb.UpdateVerifyFlag(phoneCode.Id, tx)
							 | 
						|||
| 
								 | 
							
								//	// 	if err != nil {
							 | 
						|||
| 
								 | 
							
								//	// 		log.Error("AuthSwitchBefore phoneCode", zap.Error(err))
							 | 
						|||
| 
								 | 
							
								//	// 		_ = tx.Rollback()
							 | 
						|||
| 
								 | 
							
								//	// 		return statuscode.PhoneCaptchaInvalid
							 | 
						|||
| 
								 | 
							
								//	// 	}
							 | 
						|||
| 
								 | 
							
								//	// }
							 | 
						|||
| 
								 | 
							
								//	// if emailCode.Id > 0 { // 旧邮箱验证码修改
							 | 
						|||
| 
								 | 
							
								//	// 	err = aduserdb.UpdateVerifyFlag(emailCode.Id, tx)
							 | 
						|||
| 
								 | 
							
								//	// 	if err != nil {
							 | 
						|||
| 
								 | 
							
								//	// 		log.Error("AuthSwitchBefore emailCode", zap.Error(err))
							 | 
						|||
| 
								 | 
							
								//	// 		_ = tx.Rollback()
							 | 
						|||
| 
								 | 
							
								//	// 		return statuscode.EmailCaptchaInvalid
							 | 
						|||
| 
								 | 
							
								//	// 	}
							 | 
						|||
| 
								 | 
							
								//	// }
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//	// // ==================== 2 新绑定的验证器校验,修改表数据为已验证 ==================== //
							 | 
						|||
| 
								 | 
							
								//	// if phoneNewCode.Id > 0 { // 新手机验证码修改
							 | 
						|||
| 
								 | 
							
								//	// 	err = aduserdb.UpdateVerifyFlag(phoneNewCode.Id, tx)
							 | 
						|||
| 
								 | 
							
								//	// 	if err != nil {
							 | 
						|||
| 
								 | 
							
								//	// 		log.Error("AuthSwitchBefore phoneNewCode", zap.Error(err))
							 | 
						|||
| 
								 | 
							
								//	// 		_ = tx.Rollback()
							 | 
						|||
| 
								 | 
							
								//	// 		return statuscode.PhoneCaptchaInvalid
							 | 
						|||
| 
								 | 
							
								//	// 	}
							 | 
						|||
| 
								 | 
							
								//	// }
							 | 
						|||
| 
								 | 
							
								//	// if emailNewCode.Id > 0 { // 新邮箱验证码修改
							 | 
						|||
| 
								 | 
							
								//	// 	err = aduserdb.UpdateVerifyFlag(emailNewCode.Id, tx)
							 | 
						|||
| 
								 | 
							
								//	// 	if err != nil {
							 | 
						|||
| 
								 | 
							
								//	// 		log.Error("AuthSwitchBefore emailNewCode", zap.Error(err))
							 | 
						|||
| 
								 | 
							
								//	// 		_ = tx.Rollback()
							 | 
						|||
| 
								 | 
							
								//	// 		return statuscode.EmailCaptchaInvalid
							 | 
						|||
| 
								 | 
							
								//	// 	}
							 | 
						|||
| 
								 | 
							
								//	// }
							 | 
						|||
| 
								 | 
							
								//	// // 提交事务
							 | 
						|||
| 
								 | 
							
								//	// if err = tx.Commit(); err != nil {
							 | 
						|||
| 
								 | 
							
								//	// 	return statuscode.ServerError
							 | 
						|||
| 
								 | 
							
								//	// }
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//	if err != nil {
							 | 
						|||
| 
								 | 
							
								//		return transCode
							 | 
						|||
| 
								 | 
							
								//	}
							 | 
						|||
| 
								 | 
							
								//	return statuscode.OK
							 | 
						|||
| 
								 | 
							
								//}
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//// AuthSwitchNew 身份验证开关(新)
							 | 
						|||
| 
								 | 
							
								//func AuthSwitchNew(orm *gorm.DB, auth sysmodel.AuthenticatorSwitch) int {
							 | 
						|||
| 
								 | 
							
								//	// 验证器-开关
							 | 
						|||
| 
								 | 
							
								//	switch auth.BusinessType {
							 | 
						|||
| 
								 | 
							
								//	case businesstype.OpenPhoneAuth:
							 | 
						|||
| 
								 | 
							
								//		if err := aduserdb.BindPhoneAuth(orm, auth.UserID, auth.NewPhoneArea, auth.NewPhone); err != nil {
							 | 
						|||
| 
								 | 
							
								//			return statuscode.ServerError
							 | 
						|||
| 
								 | 
							
								//		}
							 | 
						|||
| 
								 | 
							
								//	case businesstype.ChangePhoneAuth:
							 | 
						|||
| 
								 | 
							
								//		if err := aduserdb.ChangePhoneAuth(orm, auth.UserID, auth.NewPhoneArea, auth.NewPhone); err != nil {
							 | 
						|||
| 
								 | 
							
								//			return statuscode.ServerError
							 | 
						|||
| 
								 | 
							
								//		}
							 | 
						|||
| 
								 | 
							
								//		// hc todo 注释掉 先不急
							 | 
						|||
| 
								 | 
							
								//		// 更新商家信息
							 | 
						|||
| 
								 | 
							
								//		// merchant := merchantdb.GetMerchantInfoForUserId(orm, auth.UserID)
							 | 
						|||
| 
								 | 
							
								//		// if merchant.Id > 0 {
							 | 
						|||
| 
								 | 
							
								//		// 	_ = merchantdb.UpdateMerchantMobile(auth.UserID, auth.NewPhone)
							 | 
						|||
| 
								 | 
							
								//		// }
							 | 
						|||
| 
								 | 
							
								//	case businesstype.ClosePhoneAuth:
							 | 
						|||
| 
								 | 
							
								//		if err := aduserdb.ClosePhoneAuth(orm, auth.UserID); err != nil {
							 | 
						|||
| 
								 | 
							
								//			return statuscode.ServerError
							 | 
						|||
| 
								 | 
							
								//		}
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//	case businesstype.OpenEmailAuth:
							 | 
						|||
| 
								 | 
							
								//		if err := aduserdb.BindEmailAuth(orm, auth.UserID, auth.NewEmail); err != nil {
							 | 
						|||
| 
								 | 
							
								//			return statuscode.ServerError
							 | 
						|||
| 
								 | 
							
								//		}
							 | 
						|||
| 
								 | 
							
								//	case businesstype.ChangeEmailAuth:
							 | 
						|||
| 
								 | 
							
								//		if err := aduserdb.ChangeEmailAuth(orm, auth.UserID, auth.NewEmail); err != nil {
							 | 
						|||
| 
								 | 
							
								//			return statuscode.ServerError
							 | 
						|||
| 
								 | 
							
								//		}
							 | 
						|||
| 
								 | 
							
								//	case businesstype.CloseEmailAuth:
							 | 
						|||
| 
								 | 
							
								//		if err := aduserdb.CloseEmailAuth(orm, auth.UserID); err != nil {
							 | 
						|||
| 
								 | 
							
								//			return statuscode.ServerError
							 | 
						|||
| 
								 | 
							
								//		}
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//	case businesstype.OpenGoogleAuth:
							 | 
						|||
| 
								 | 
							
								//		if err := aduserdb.OpenGoogleAuth(orm, auth.UserID); err != nil {
							 | 
						|||
| 
								 | 
							
								//			return statuscode.ServerError
							 | 
						|||
| 
								 | 
							
								//		}
							 | 
						|||
| 
								 | 
							
								//	case businesstype.ChangeGoogleAuth:
							 | 
						|||
| 
								 | 
							
								//		if err := aduserdb.CloseGoogleAuth(orm, auth.UserID); err != nil {
							 | 
						|||
| 
								 | 
							
								//			return statuscode.ServerError
							 | 
						|||
| 
								 | 
							
								//		}
							 | 
						|||
| 
								 | 
							
								//	case businesstype.CloseGoogleAuth:
							 | 
						|||
| 
								 | 
							
								//		if err := aduserdb.CloseGoogleAuth(orm, auth.UserID); err != nil {
							 | 
						|||
| 
								 | 
							
								//			return statuscode.ServerError
							 | 
						|||
| 
								 | 
							
								//		}
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//	default:
							 | 
						|||
| 
								 | 
							
								//		return statuscode.ParameterInvalid
							 | 
						|||
| 
								 | 
							
								//	}
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//	return statuscode.OK
							 | 
						|||
| 
								 | 
							
								//}
							 |