public async Task <IHttpActionResult> RequestResetPassword(ResetPasswordBindingModel resetmodel) { using (var dataContext = HttpContext.Current.GetOwinContext().Get <ApplicationDbContext>()) { using (var trans = dataContext.Database.BeginTransaction(IsolationLevel.ReadCommitted)) { try { resetmodel.token = RandomLink.getVerifyPathResetPsw() + resetmodel.token; var resetpass = dataContext.ResetPasswords.FirstOrDefault(t => t.email.Equals(resetmodel.email) && t.token.Equals(resetmodel.token)); if (resetpass == null) { throw new ApiDataException(16, "No existe una confirmación en el sistema para confirmar" , System.Net.HttpStatusCode.NotFound, "Http://"); } if (resetpass.state == (Int32)StatesEnum.Confirmed) { throw new ApiBusinessException(0006, "El link ya fue utilizado", System.Net.HttpStatusCode.NotFound, "Http"); } if (resetpass.state == (Int32)StatesEnum.Annulled) { throw new ApiDataException(18, "La confirmación fue reemplazada por una nueva o ya expiró" , System.Net.HttpStatusCode.NotFound, "Http://"); } if (resetpass.expiredate < DateTime.Now) { throw new ApiBusinessException(17, "Esta solicitud ya expiró, mande una nueva solicitud." , System.Net.HttpStatusCode.NotFound, "Http://"); } var user = await this.AppUserManager.FindByEmailAsync(resetpass.email); if (user == null) { throw new ApiDataException(15, "No existe ese email en nuestro sistema", System.Net.HttpStatusCode.NotFound, "Http://"); } user.PasswordHash = this.AppUserManager.PasswordHasher.HashPassword(resetmodel.newpassword); this.AppUserManager.UpdateSecurityStamp(user.Id); resetpass.state = (Int32)StatesEnum.Confirmed; dataContext.SaveChanges(); trans.Commit(); return(Ok()); } catch (Exception ex) { trans.Rollback(); throw HandlerExceptions.GetInstance().RunCustomExceptions(ex); } } } }
internal TimeLink(RandomLink random) { this._random = random; }
internal NamesLink(RandomLink random) { this._random = random; }
internal TextLink(RandomLink random) { this._random = random; }
internal PhoneNumbersLink(RandomLink random) { this._random = random; this._generate = this._random.Numbers.Integers(0, 10); }
internal InternetLink(RandomLink random) { this._random = random; }