public async Task <object> Verification(PhoneVerificationRequest verificationRequest) { try { User user = await this._context.Users.FirstOrDefaultAsync(user => user.Id == verificationRequest.UserId); if (user.Role != RoleType.Unverified) { return(new ResponseBase <string> { Data = ResponseMessages.VerifiedUser }); } UserPublicData userData = await this._context.UsersPublicData.FirstOrDefaultAsync(user => user.UserId == verificationRequest.UserId); if (userData.SecretKey == verificationRequest.SecretKey && DateTime.Now < userData.SecretKeyValidTo) { user.Role = RoleType.User; await this._context.SaveChangesAsync(); return(new ResponseBase <string> { Data = ResponseMessages.VerifiedUser }); } else { userData.UnsuccessfullyVerificationAttempts++; if (userData.UnsuccessfullyVerificationAttempts == 3) { userData.SecretKey = await this.SendMessageViaPhone(userData.User.Phone); userData.SecretKeyValidTo = DateTime.Now.AddMinutes(SecretKeyToVerifyPhoneValidInMinutes); userData.UnsuccessfullyVerificationAttempts = 0; await this._context.SaveChangesAsync(); return(new ResponseBase <string> { Status = ResponeStatusCodes.UnverifiedUser, Data = ResponseMessages.RepeatedVerification }); } await this._context.SaveChangesAsync(); return(new ResponseBase <string> { Status = ResponeStatusCodes.BadRequest, Data = ResponseMessages.BadVerificationSecretKey }); } } catch (Exception ex) { return(new ResponseBase <string> { Status = ResponeStatusCodes.UnexpectedServerError, Data = $"Oops... {ex.Message}" }); } }
/// <summary> /// 本接口用于校验手机号、姓名和身份证号的真实性和一致性。支持的手机号段详情请查阅<a href="https://cloud.tencent.com/document/product/1007/46063">运营商类</a>文档。 /// </summary> /// <param name="req"><see cref="PhoneVerificationRequest"/></param> /// <returns><see cref="PhoneVerificationResponse"/></returns> public PhoneVerificationResponse PhoneVerificationSync(PhoneVerificationRequest req) { JsonResponseModel <PhoneVerificationResponse> rsp = null; try { var strResp = this.InternalRequestSync(req, "PhoneVerification"); rsp = JsonConvert.DeserializeObject <JsonResponseModel <PhoneVerificationResponse> >(strResp); } catch (JsonSerializationException e) { throw new TencentCloudSDKException(e.Message); } return(rsp.Response); }
public async Task <ActionResult> Verification([FromBody] PhoneVerificationRequest verificationRequest) { var result = await _userService.Verification(verificationRequest : verificationRequest); return(new JsonResult(result)); }