Skip to content

Commit

Permalink
Merge pull request #8534 from poikilotherm/8531-refactor-validators
Browse files Browse the repository at this point in the history
8531 refactor validators
  • Loading branch information
kcondon committed Apr 11, 2022
2 parents f2bd559 + f9c326f commit 891ff50
Show file tree
Hide file tree
Showing 33 changed files with 568 additions and 487 deletions.
9 changes: 8 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -200,11 +200,18 @@
<artifactId>omnifaces</artifactId>
<version>3.8</version> <!-- Or 1.8-SNAPSHOT -->
</dependency>

<dependency>
<groupId>jakarta.validation</groupId>
<artifactId>jakarta.validation-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>jakarta.el</artifactId>
<scope>provided</scope>
Expand Down
5 changes: 4 additions & 1 deletion src/main/java/ValidationMessages.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ user.firstName=Please enter your first name.
user.lastName=Please enter your last name.
user.invalidEmail=Please enter a valid email address.
user.enterUsername=Please enter a username.
user.usernameLength=Username must be between 2 and 60 characters.
user.usernameLength=Username must be between {min} and {max} characters.
user.illegalCharacters=Found an illegal character(s). Valid characters are a-Z, 0-9, '_', '-', and '.'.

user.enterNickname=Please enter a nickname.
Expand Down Expand Up @@ -42,3 +42,6 @@ password.validate=Password reset page default email message.
guestbook.name=Enter a name for the guestbook
guestbook.response.nameLength=Please limit response to 255 characters
email.invalid=is not a valid email address.
url.invalid=is not a valid URL.
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
import java.util.regex.Pattern;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

import edu.harvard.iq.dataverse.validation.EMailValidator;
import edu.harvard.iq.dataverse.validation.URLValidator;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.validator.routines.UrlValidator;

Expand Down Expand Up @@ -165,29 +168,19 @@ public boolean isValid(DatasetFieldValue value, ConstraintValidatorContext conte
// Note, length validation for FieldType.TEXT was removed to accommodate migrated data that is greater than 255 chars.

if (fieldType.equals(FieldType.URL) && !lengthOnly) {

String[] schemes = {"http","https", "ftp"};
UrlValidator urlValidator = new UrlValidator(schemes);

try {
if (urlValidator.isValid(value.getValue())) {
} else {
context.buildConstraintViolationWithTemplate(dsfType.getDisplayName() + " " + value.getValue() + " is not a valid URL.").addConstraintViolation();
return false;
}
} catch (NullPointerException npe) {
boolean isValidUrl = URLValidator.isURLValid(value.getValue());
if (!isValidUrl) {
context.buildConstraintViolationWithTemplate(dsfType.getDisplayName() + " " + value.getValue() + " {url.invalid}").addConstraintViolation();
return false;
}

}

if (fieldType.equals(FieldType.EMAIL) && !lengthOnly) {
if(value.getDatasetField().isRequired() && value.getValue()==null){
boolean isValidMail = EMailValidator.isEmailValid(value.getValue());
if (!isValidMail) {
context.buildConstraintViolationWithTemplate(dsfType.getDisplayName() + " " + value.getValue() + " {email.invalid}").addConstraintViolation();
return false;
}

return EMailValidator.isEmailValid(value.getValue(), context);

}

return true;
Expand Down
1 change: 1 addition & 0 deletions src/main/java/edu/harvard/iq/dataverse/DatasetPage.java
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@

import edu.harvard.iq.dataverse.util.StringUtil;
import edu.harvard.iq.dataverse.util.SystemConfig;
import edu.harvard.iq.dataverse.validation.URLValidator;
import edu.harvard.iq.dataverse.workflows.WorkflowComment;

import java.io.File;
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/edu/harvard/iq/dataverse/DataverseContact.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import org.hibernate.validator.constraints.Email;

import edu.harvard.iq.dataverse.validation.ValidateEmail;
import org.hibernate.validator.constraints.NotBlank;

/**
Expand Down
48 changes: 0 additions & 48 deletions src/main/java/edu/harvard/iq/dataverse/EMailValidator.java

This file was deleted.

4 changes: 3 additions & 1 deletion src/main/java/edu/harvard/iq/dataverse/MailServiceBean.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import edu.harvard.iq.dataverse.validation.EMailValidator;
import org.apache.commons.lang3.StringUtils;

/**
Expand Down Expand Up @@ -188,7 +190,7 @@ public void sendMail(String reply, String to, String subject, String messageText
logger.severe(ex.getMessage());
}
msg.setFrom(fromAddress);
if (EMailValidator.isEmailValid(reply, null)) {
if (EMailValidator.isEmailValid(reply)) {
// But set the reply-to address to direct replies to the requested 'from' party if it is a valid email address
msg.setReplyTo(new Address[] {new InternetAddress(reply)});
} else {
Expand Down
5 changes: 3 additions & 2 deletions src/main/java/edu/harvard/iq/dataverse/Shib.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import edu.harvard.iq.dataverse.util.BundleUtil;
import edu.harvard.iq.dataverse.util.JsfHelper;
import edu.harvard.iq.dataverse.util.SystemConfig;
import edu.harvard.iq.dataverse.validation.EMailValidator;
import org.apache.commons.lang3.StringUtils;

import java.io.IOException;
Expand Down Expand Up @@ -190,12 +191,12 @@ public void init() {
}
}

if (!EMailValidator.isEmailValid(emailAddressInAssertion, null)) {
if (!EMailValidator.isEmailValid(emailAddressInAssertion)) {
String msg = "The SAML assertion contained an invalid email address: \"" + emailAddressInAssertion + "\".";
logger.info(msg);
msg=BundleUtil.getStringFromBundle("shib.invalidEmailAddress", Arrays.asList(emailAddressInAssertion));
String singleEmailAddress = ShibUtil.findSingleValue(emailAddressInAssertion);
if (EMailValidator.isEmailValid(singleEmailAddress, null)) {
if (EMailValidator.isEmailValid(singleEmailAddress)) {
msg = "Multiple email addresses were asserted by the Identity Provider (" + emailAddressInAssertion + " ). These were sorted and the first was chosen: " + singleEmailAddress;
logger.info(msg);
emailAddress = singleEmailAddress;
Expand Down
50 changes: 0 additions & 50 deletions src/main/java/edu/harvard/iq/dataverse/URLValidator.java

This file was deleted.

64 changes: 0 additions & 64 deletions src/main/java/edu/harvard/iq/dataverse/UserNameValidator.java

This file was deleted.

33 changes: 0 additions & 33 deletions src/main/java/edu/harvard/iq/dataverse/ValidateUserName.java

This file was deleted.

8 changes: 4 additions & 4 deletions src/main/java/edu/harvard/iq/dataverse/api/Admin.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
import edu.harvard.iq.dataverse.DataverseRequestServiceBean;
import edu.harvard.iq.dataverse.DataverseSession;
import edu.harvard.iq.dataverse.DvObject;
import edu.harvard.iq.dataverse.EMailValidator;
import edu.harvard.iq.dataverse.validation.EMailValidator;
import edu.harvard.iq.dataverse.EjbDataverseEngine;
import edu.harvard.iq.dataverse.GlobalId;
import edu.harvard.iq.dataverse.UserServiceBean;
Expand Down Expand Up @@ -97,7 +97,7 @@

import java.io.IOException;
import java.io.OutputStream;
import edu.harvard.iq.dataverse.util.json.JsonPrinter;

import static edu.harvard.iq.dataverse.util.json.JsonPrinter.json;
import static edu.harvard.iq.dataverse.util.json.JsonPrinter.rolesToJson;
import static edu.harvard.iq.dataverse.util.json.JsonPrinter.toJsonArray;
Expand Down Expand Up @@ -659,7 +659,7 @@ public Response builtin2shib(String content) {
String overwriteEmail = randomUser.get("email");
overwriteEmail = newEmailAddressToUse;
logger.info("overwriteEmail: " + overwriteEmail);
boolean validEmail = EMailValidator.isEmailValid(overwriteEmail, null);
boolean validEmail = EMailValidator.isEmailValid(overwriteEmail);
if (!validEmail) {
// See https://github.com/IQSS/dataverse/issues/2998
return error(Response.Status.BAD_REQUEST, "invalid email: " + overwriteEmail);
Expand Down Expand Up @@ -816,7 +816,7 @@ public Response builtin2oauth(String content) {
String overwriteEmail = randomUser.get("email");
overwriteEmail = newEmailAddressToUse;
logger.info("overwriteEmail: " + overwriteEmail);
boolean validEmail = EMailValidator.isEmailValid(overwriteEmail, null);
boolean validEmail = EMailValidator.isEmailValid(overwriteEmail);
if (!validEmail) {
// See https://github.com/IQSS/dataverse/issues/2998
return error(Response.Status.BAD_REQUEST, "invalid email: " + overwriteEmail);
Expand Down
Loading

0 comments on commit 891ff50

Please sign in to comment.