You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2016/07/20 14:58:06 UTC
[12/43] syncope git commit: [SYNCOPE-894] Enhancement provided
[SYNCOPE-894] Enhancement provided
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/0656bc07
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/0656bc07
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/0656bc07
Branch: refs/heads/2_0_NO_JAXB
Commit: 0656bc07fc99d8fa9d87bf407f7641c4fa221ad8
Parents: a9bd3ce
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Wed Jul 6 18:05:23 2016 +0200
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Wed Jul 6 18:05:23 2016 +0200
----------------------------------------------------------------------
.../org/apache/syncope/common/lib/SyncopeConstants.java | 2 +-
.../syncope/core/persistence/jpa/dao/JPAUserDAO.java | 9 +++++++++
.../persistence/jpa/entity/AbstractAnnotatedEntity.java | 5 -----
.../syncope/core/persistence/jpa/outer/GroupTest.java | 11 +++++++++++
.../java/org/apache/syncope/fit/core/GroupITCase.java | 8 ++++++++
5 files changed, 29 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/0656bc07/common/lib/src/main/java/org/apache/syncope/common/lib/SyncopeConstants.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/SyncopeConstants.java b/common/lib/src/main/java/org/apache/syncope/common/lib/SyncopeConstants.java
index 1f2febd..81f93a0 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/SyncopeConstants.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/SyncopeConstants.java
@@ -37,7 +37,7 @@ public final class SyncopeConstants {
public static final String ENUM_VALUES_SEPARATOR = ";";
- public static final String NAME_PATTERN = "[\\w \\-@.]+";
+ public static final String NAME_PATTERN = "[\\p{L}\\p{gc=Mn}\\p{gc=Me}\\p{gc=Mc}\\p{Digit}\\p{gc=Pc} \\-@.]+";
public static final String[] DATE_PATTERNS = {
"yyyy-MM-dd'T'HH:mm:ssZ",
http://git-wip-us.apache.org/repos/asf/syncope/blob/0656bc07/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java
index a33e29e..d4f93ed 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java
@@ -26,6 +26,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.regex.Pattern;
import javax.annotation.Resource;
import javax.persistence.NoResultException;
import javax.persistence.Query;
@@ -36,6 +37,7 @@ import org.apache.commons.collections4.Predicate;
import org.apache.commons.collections4.Transformer;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
+import org.apache.syncope.common.lib.SyncopeConstants;
import org.apache.syncope.common.lib.policy.AccountRuleConf;
import org.apache.syncope.common.lib.policy.PasswordRuleConf;
import org.apache.syncope.common.lib.types.AnyTypeKind;
@@ -81,6 +83,9 @@ import org.springframework.transaction.annotation.Transactional;
@Repository
public class JPAUserDAO extends AbstractAnyDAO<User> implements UserDAO {
+ private static final Pattern USERNAME_PATTERN =
+ Pattern.compile("^" + SyncopeConstants.NAME_PATTERN, Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);
+
@Autowired
private RealmDAO realmDAO;
@@ -343,6 +348,10 @@ public class JPAUserDAO extends AbstractAnyDAO<User> implements UserDAO {
throw new AccountPolicyException("Not allowed: " + user.getUsername());
}
+ if (!USERNAME_PATTERN.matcher(user.getUsername()).matches()) {
+ throw new AccountPolicyException("Character(s) not allowed");
+ }
+
for (AccountPolicy policy : getAccountPolicies(user)) {
for (AccountRuleConf ruleConf : policy.getRuleConfs()) {
Class<? extends AccountRule> ruleClass =
http://git-wip-us.apache.org/repos/asf/syncope/blob/0656bc07/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractAnnotatedEntity.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractAnnotatedEntity.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractAnnotatedEntity.java
index e9e71fa..bf7ec39 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractAnnotatedEntity.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractAnnotatedEntity.java
@@ -19,7 +19,6 @@
package org.apache.syncope.core.persistence.jpa.entity;
import java.util.Date;
-import javax.persistence.Column;
import javax.persistence.EntityListeners;
import javax.persistence.MappedSuperclass;
import javax.persistence.Temporal;
@@ -39,13 +38,11 @@ public abstract class AbstractAnnotatedEntity extends AbstractGeneratedKeyEntity
* Username of the user that has created this profile.
* Reference to existing user cannot be used: the creator can either be <tt>admin</tt> or was deleted.
*/
- @Column(nullable = false)
private String creator;
/**
* Creation date.
*/
- @Column(nullable = false)
@Temporal(TemporalType.TIMESTAMP)
private Date creationDate;
@@ -55,14 +52,12 @@ public abstract class AbstractAnnotatedEntity extends AbstractGeneratedKeyEntity
* The modifier can be the user itself if the last performed change was a self-modification.
* Reference to existing user cannot be used: the creator can either be <tt>admin</tt> or was deleted.
*/
- @Column(nullable = false)
private String lastModifier;
/**
* Last change date.
* This field cannot be null: at creation time it needs to be initialized with <tt>creationDate</tt> field value.
*/
- @Column(nullable = false)
@Temporal(TemporalType.TIMESTAMP)
private Date lastChangeDate;
http://git-wip-us.apache.org/repos/asf/syncope/blob/0656bc07/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/GroupTest.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/GroupTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/GroupTest.java
index 8037a2b..39eb25e 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/GroupTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/GroupTest.java
@@ -30,6 +30,7 @@ import java.util.HashSet;
import java.util.List;
import javax.persistence.TypedQuery;
import org.apache.commons.collections4.CollectionUtils;
+import org.apache.syncope.common.lib.SyncopeConstants;
import org.apache.syncope.common.lib.types.AnyTypeKind;
import org.apache.syncope.core.provisioning.api.utils.EntityUtils;
import org.apache.syncope.core.persistence.api.attrvalue.validation.InvalidEntityException;
@@ -147,6 +148,16 @@ public class GroupTest extends AbstractTest {
}
@Test
+ public void createWithInternationalCharacters() {
+ Group group = entityFactory.newEntity(Group.class);
+ group.setName("r�ksm�rg�s");
+ group.setRealm(realmDAO.findByFullPath(SyncopeConstants.ROOT_REALM));
+
+ groupDAO.save(group);
+ groupDAO.flush();
+ }
+
+ @Test
public void delete() {
groupDAO.delete("b1f7c12d-ec83-441f-a50e-1691daaedf3b");
http://git-wip-us.apache.org/repos/asf/syncope/blob/0656bc07/fit/core-reference/src/test/java/org/apache/syncope/fit/core/GroupITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/GroupITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/GroupITCase.java
index 00959a0..939e1f8 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/GroupITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/GroupITCase.java
@@ -141,6 +141,14 @@ public class GroupITCase extends AbstractITCase {
}
@Test
+ public void createWithInternationalCharacters() {
+ GroupTO groupTO = getSampleTO("r�ksm�rg�s");
+
+ groupTO = createGroup(groupTO).getEntity();
+ assertNotNull(groupTO);
+ }
+
+ @Test
public void delete() {
try {
groupService.delete(UUID.randomUUID().toString());