public CompletePasswordResetResponse CompletePasswordReset(CompletePasswordResetRequest request) { CompletePasswordResetResponse response = new CompletePasswordResetResponse(); try { Common.Helpers.ValidationHelper.ValidateRequiredField(request.Username, "User name"); Common.Helpers.ValidationHelper.ValidateRequiredField(request.Token, "Token"); Common.Helpers.ValidationHelper.ValidateRequiredField(request.NewPassword, "New Password"); Common.Helpers.ValidationHelper.ValidateStringLength(request.NewPassword, "New Password", Constants.MaxPasswordLength); Common.Helpers.ValidationHelper.ValidateUsername(request.Username); ValidationHelper.ValidatePassword(request.NewPassword); ResetPasswordToken token = ResetPasswordToken.FromBytes(EncryptionHelper.DecryptURL(Convert.FromBase64String(request.Token))); Common.Helpers.ValidationHelper.Assert(token.Username.Equals(request.Username), "Invalid input."); Common.Helpers.ValidationHelper.Assert(DateTime.Now < token.ExpiresOn, "Password reset request has expired."); DbContext context = DataController.CreateDbContext(); UserController.ChangePassword(token.Username, request.NewPassword); } catch (AuthenticationException ex) { throw new WebFaultException <string>(ex.Message, System.Net.HttpStatusCode.BadRequest); } catch (Common.Exceptions.ValidationException ex) { throw new WebFaultException <string>(ex.Message, System.Net.HttpStatusCode.BadRequest); } catch (Exception ex) { ExceptionHelper.Log(ex, string.Empty); throw new WebFaultException <string>("An unknown error has occurred.", System.Net.HttpStatusCode.InternalServerError); } return(response); }
public CompletePasswordResetResponse CompletePasswordReset(CompletePasswordResetRequest request) { CompletePasswordResetResponse response = new CompletePasswordResetResponse(); try { Common.Helpers.ValidationHelper.ValidateRequiredField(request.Username, "User name"); Common.Helpers.ValidationHelper.ValidateRequiredField(request.Token, "Token"); Common.Helpers.ValidationHelper.ValidateRequiredField(request.NewPassword, "New Password"); Common.Helpers.ValidationHelper.ValidateStringLength(request.NewPassword, "New Password", Constants.MaxPasswordLength); Common.Helpers.ValidationHelper.ValidateUsername(request.Username); ValidationHelper.ValidatePassword(request.NewPassword); ResetPasswordToken token = ResetPasswordToken.FromBytes(EncryptionHelper.DecryptURL(Convert.FromBase64String(request.Token))); Common.Helpers.ValidationHelper.Assert(token.Username.Equals(request.Username), "Invalid input."); Common.Helpers.ValidationHelper.Assert(DateTime.Now < token.ExpiresOn, "Password reset request has expired."); DbContext context = DataController.CreateDbContext(); UserController.ChangePassword(token.Username, request.NewPassword); } catch (AuthenticationException ex) { throw new WebFaultException<string>(ex.Message, System.Net.HttpStatusCode.BadRequest); } catch (Common.Exceptions.ValidationException ex) { throw new WebFaultException<string>(ex.Message, System.Net.HttpStatusCode.BadRequest); } catch (Exception ex) { ExceptionHelper.Log(ex, string.Empty); throw new WebFaultException<string>("An unknown error has occurred.", System.Net.HttpStatusCode.InternalServerError); } return response; }