forked from Archives/Athou_commafeed
make sure emails are unique
This commit is contained in:
@@ -6,6 +6,8 @@ import javax.persistence.TypedQuery;
|
||||
import javax.persistence.criteria.CriteriaQuery;
|
||||
import javax.persistence.criteria.Root;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import com.commafeed.backend.model.User;
|
||||
import com.commafeed.backend.model.User_;
|
||||
|
||||
@@ -45,6 +47,9 @@ public class UserDAO extends GenericDAO<User> {
|
||||
}
|
||||
|
||||
public User findByEmail(String email) {
|
||||
if (StringUtils.isBlank(email)) {
|
||||
return null;
|
||||
}
|
||||
CriteriaQuery<User> query = builder.createQuery(getType());
|
||||
Root<User> root = query.from(getType());
|
||||
query.where(builder.equal(root.get(User_.email), email));
|
||||
|
||||
@@ -66,7 +66,7 @@ public class PasswordRecoveryCallbackPage extends BasePage {
|
||||
userDAO.update(user);
|
||||
info("Password saved.");
|
||||
} else {
|
||||
error("Password do not match");
|
||||
error("Passwords do not match.");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -98,7 +98,18 @@ public class RegisterPanel extends Panel {
|
||||
protected String getInputType() {
|
||||
return "email";
|
||||
}
|
||||
}.add(RfcCompliantEmailAddressValidator.getInstance()));
|
||||
}.add(RfcCompliantEmailAddressValidator.getInstance()).add(
|
||||
new IValidator<String>() {
|
||||
@Override
|
||||
public void validate(IValidatable<String> validatable) {
|
||||
String email = validatable.getValue();
|
||||
User user = userDAO.findByEmail(email);
|
||||
if (user != null) {
|
||||
validatable.error(new ValidationError(
|
||||
"Email is already taken."));
|
||||
}
|
||||
}
|
||||
}));
|
||||
form.add(new CheckBox("import", MF.m(model, p.isGoogleImport())));
|
||||
|
||||
}
|
||||
|
||||
@@ -108,6 +108,15 @@ public class UserREST extends AbstractResourceREST {
|
||||
public Response save(
|
||||
@ApiParam(required = true) ProfileModificationRequest request) {
|
||||
User user = getUser();
|
||||
|
||||
Preconditions.checkArgument(StringUtils.isBlank(request.getPassword())
|
||||
|| request.getPassword().length() >= 6);
|
||||
if (StringUtils.isNotBlank(request.getEmail())) {
|
||||
User u = userDAO.findByEmail(request.getEmail());
|
||||
Preconditions.checkArgument(u == null
|
||||
|| user.getId().equals(u.getId()));
|
||||
}
|
||||
|
||||
if (StartupBean.USERNAME_DEMO.equals(user.getName())) {
|
||||
return Response.status(Status.UNAUTHORIZED).build();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user