NIHVIVO-2279 Add externalAuthId to the UserAccount.

This commit is contained in:
j2blake 2011-05-16 19:07:52 +00:00
parent c6ed488e64
commit eac9e5dca1
6 changed files with 52 additions and 35 deletions

View file

@ -11,6 +11,10 @@ import java.util.Set;
* Information about the account of a user. URI, email, password, etc. * Information about the account of a user. URI, email, password, etc.
*/ */
public class UserAccount { public class UserAccount {
public final static int MIN_PASSWORD_LENGTH = 6;
public final static int MAX_PASSWORD_LENGTH = 12;
public enum Status { public enum Status {
ACTIVE, INACTIVE; ACTIVE, INACTIVE;
@ -30,36 +34,20 @@ public class UserAccount {
} }
/** Should never be null. */ private String uri = ""; // Never null.
private String uri = "";
private String emailAddress = ""; // Never null.
private String firstName = ""; // Never null.
private String lastName = ""; // Never null.
/** Should never be null. */ private String md5Password = ""; // Never null.
private String emailAddress = ""; private String oldPassword = ""; // Never null.
private long passwordLinkExpires = 0L; // Never negative.
/** Should never be null. */
private String firstName = "";
/** Should never be null. */
private String lastName = "";
/** Should never be null. */
private String md5Password = "";
/** Should never be null. */
private String oldPassword = "";
/** Should never be negative. */
private long passwordLinkExpires = 0L;
private boolean passwordChangeRequired = false; private boolean passwordChangeRequired = false;
/** Should never be negative. */ private int loginCount = 0; // Never negative.
private int loginCount = 0; private Status status = Status.INACTIVE; // Might be null.
private String externalAuthId = ""; // Never null.
/** Might be null. */
private Status status = Status.INACTIVE;
/** This may be empty, but should never be null. */ /** This may be empty, but should never be null. */
private Set<String> permissionSetUris = Collections.emptySet(); private Set<String> permissionSetUris = Collections.emptySet();
@ -128,7 +116,8 @@ public class UserAccount {
} }
public void setPasswordChangeRequired(Boolean passwordChangeRequired) { public void setPasswordChangeRequired(Boolean passwordChangeRequired) {
this.passwordChangeRequired = nonNull(passwordChangeRequired, Boolean.FALSE); this.passwordChangeRequired = nonNull(passwordChangeRequired,
Boolean.FALSE);
} }
public int getLoginCount() { public int getLoginCount() {
@ -151,6 +140,14 @@ public class UserAccount {
this.status = Status.fromString(statusString); this.status = Status.fromString(statusString);
} }
public String getExternalAuthId() {
return externalAuthId;
}
public void setExternalAuthId(String externalAuthId) {
this.externalAuthId = nonNull(externalAuthId, "");
}
public Set<String> getPermissionSetUris() { public Set<String> getPermissionSetUris() {
return new HashSet<String>(permissionSetUris); return new HashSet<String>(permissionSetUris);
} }
@ -168,12 +165,14 @@ public class UserAccount {
@Override @Override
public String toString() { public String toString() {
return "UserAccount[uri=" + uri + ", emailAddress=" + emailAddress return "UserAccount[uri=" + uri + (", emailAddress=" + emailAddress)
+ ", firstName=" + firstName + ", lastName=" + lastName + (", firstName=" + firstName) + (", lastName=" + lastName)
+ ", md5password=" + md5Password + ", passwordChangeExpires=" + (", md5password=" + md5Password)
+ passwordLinkExpires + ", loginCount=" + loginCount + (", oldPassword=" + oldPassword)
+ ", status=" + status + ", permissionSetUris=" + (", passwordLinkExpires=" + passwordLinkExpires)
+ permissionSetUris + "]"; + (", passwordChangeRequired=" + passwordChangeRequired)
+ (", loginCount=" + loginCount) + (", status=" + status)
+ (", externalAuthId=" + externalAuthId)
+ (", permissionSetUris=" + permissionSetUris) + "]";
} }
} }

View file

@ -193,6 +193,7 @@ public class VitroVocabulary {
public static final String USERACCOUNT_STATUS = VITRO_AUTH + "status"; public static final String USERACCOUNT_STATUS = VITRO_AUTH + "status";
public static final String USERACCOUNT_PASSWORD_LINK_EXPIRES = VITRO_AUTH + "passwordLinkExpires"; public static final String USERACCOUNT_PASSWORD_LINK_EXPIRES = VITRO_AUTH + "passwordLinkExpires";
public static final String USERACCOUNT_PASSWORD_CHANGE_REQUIRED = VITRO_AUTH + "passwordChangeRequired"; public static final String USERACCOUNT_PASSWORD_CHANGE_REQUIRED = VITRO_AUTH + "passwordChangeRequired";
public static final String USERACCOUNT_EXTERNAL_AUTH_ID = VITRO_AUTH + "externalAuthId";
public static final String USERACCOUNT_HAS_PERMISSION_SET = VITRO_AUTH + "hasPermissionSet"; public static final String USERACCOUNT_HAS_PERMISSION_SET = VITRO_AUTH + "hasPermissionSet";
public static final String PERMISSIONSET = VITRO_AUTH + "PermissionSet"; public static final String PERMISSIONSET = VITRO_AUTH + "PermissionSet";

View file

@ -167,6 +167,7 @@ public class JenaBaseDaoCon {
protected DatatypeProperty USERACCOUNT_STATUS = _constModel.createDatatypeProperty(VitroVocabulary.USERACCOUNT_STATUS); protected DatatypeProperty USERACCOUNT_STATUS = _constModel.createDatatypeProperty(VitroVocabulary.USERACCOUNT_STATUS);
protected DatatypeProperty USERACCOUNT_PASSWORD_LINK_EXPIRES = _constModel.createDatatypeProperty(VitroVocabulary.USERACCOUNT_PASSWORD_LINK_EXPIRES); protected DatatypeProperty USERACCOUNT_PASSWORD_LINK_EXPIRES = _constModel.createDatatypeProperty(VitroVocabulary.USERACCOUNT_PASSWORD_LINK_EXPIRES);
protected DatatypeProperty USERACCOUNT_PASSWORD_CHANGE_REQUIRED = _constModel.createDatatypeProperty(VitroVocabulary.USERACCOUNT_PASSWORD_CHANGE_REQUIRED); protected DatatypeProperty USERACCOUNT_PASSWORD_CHANGE_REQUIRED = _constModel.createDatatypeProperty(VitroVocabulary.USERACCOUNT_PASSWORD_CHANGE_REQUIRED);
protected DatatypeProperty USERACCOUNT_EXTERNAL_AUTH_ID = _constModel.createDatatypeProperty(VitroVocabulary.USERACCOUNT_EXTERNAL_AUTH_ID);
protected ObjectProperty USERACCOUNT_HAS_PERMISSION_SET = _constModel.createObjectProperty(VitroVocabulary.USERACCOUNT_HAS_PERMISSION_SET); protected ObjectProperty USERACCOUNT_HAS_PERMISSION_SET = _constModel.createObjectProperty(VitroVocabulary.USERACCOUNT_HAS_PERMISSION_SET);
protected OntClass PERMISSIONSET = _constModel.createClass(VitroVocabulary.PERMISSIONSET); protected OntClass PERMISSIONSET = _constModel.createClass(VitroVocabulary.PERMISSIONSET);

View file

@ -61,6 +61,8 @@ public class UserAccountsDaoJena extends JenaBaseDao implements UserAccountsDao
USERACCOUNT_PASSWORD_CHANGE_REQUIRED)); USERACCOUNT_PASSWORD_CHANGE_REQUIRED));
u.setLoginCount(getPropertyIntValue(r, USERACCOUNT_LOGIN_COUNT)); u.setLoginCount(getPropertyIntValue(r, USERACCOUNT_LOGIN_COUNT));
u.setStatusFromString(getPropertyStringValue(r, USERACCOUNT_STATUS)); u.setStatusFromString(getPropertyStringValue(r, USERACCOUNT_STATUS));
u.setExternalAuthId(getPropertyStringValue(r,
USERACCOUNT_EXTERNAL_AUTH_ID));
u.setPermissionSetUris(getPropertyResourceURIValues(r, u.setPermissionSetUris(getPropertyResourceURIValues(r,
USERACCOUNT_HAS_PERMISSION_SET)); USERACCOUNT_HAS_PERMISSION_SET));
return u; return u;
@ -105,6 +107,8 @@ public class UserAccountsDaoJena extends JenaBaseDao implements UserAccountsDao
addPropertyStringValue(res, USERACCOUNT_STATUS, userAccount addPropertyStringValue(res, USERACCOUNT_STATUS, userAccount
.getStatus().toString(), model); .getStatus().toString(), model);
} }
addPropertyStringValue(res, USERACCOUNT_EXTERNAL_AUTH_ID,
userAccount.getExternalAuthId(), model);
updatePropertyResourceURIValues(res, updatePropertyResourceURIValues(res,
USERACCOUNT_HAS_PERMISSION_SET, USERACCOUNT_HAS_PERMISSION_SET,
userAccount.getPermissionSetUris(), model); userAccount.getPermissionSetUris(), model);
@ -158,6 +162,8 @@ public class UserAccountsDaoJena extends JenaBaseDao implements UserAccountsDao
updatePropertyStringValue(res, USERACCOUNT_STATUS, userAccount updatePropertyStringValue(res, USERACCOUNT_STATUS, userAccount
.getStatus().toString(), model); .getStatus().toString(), model);
} }
updatePropertyStringValue(res, USERACCOUNT_EXTERNAL_AUTH_ID,
userAccount.getExternalAuthId(), model);
updatePropertyResourceURIValues(res, updatePropertyResourceURIValues(res,
USERACCOUNT_HAS_PERMISSION_SET, USERACCOUNT_HAS_PERMISSION_SET,
userAccount.getPermissionSetUris(), model); userAccount.getPermissionSetUris(), model);

View file

@ -83,6 +83,7 @@ public class UserAccountsDaoJenaTest extends AbstractTestClass {
assertEquals("changeRequired", false, u.isPasswordChangeRequired()); assertEquals("changeRequired", false, u.isPasswordChangeRequired());
assertEquals("loginCount", 5, u.getLoginCount()); assertEquals("loginCount", 5, u.getLoginCount());
assertEquals("status", Status.ACTIVE, u.getStatus()); assertEquals("status", Status.ACTIVE, u.getStatus());
assertEquals("externalAuthId", "user1", u.getExternalAuthId());
assertEquals("permissionSetUris", Collections.singleton(URI_ROLE1), assertEquals("permissionSetUris", Collections.singleton(URI_ROLE1),
u.getPermissionSetUris()); u.getPermissionSetUris());
} }
@ -112,6 +113,7 @@ public class UserAccountsDaoJenaTest extends AbstractTestClass {
in.setPasswordChangeRequired(true); in.setPasswordChangeRequired(true);
in.setLoginCount(42); in.setLoginCount(42);
in.setStatus(Status.INACTIVE); in.setStatus(Status.INACTIVE);
in.setExternalAuthId("newUser");
in.setPermissionSetUris(buildSet(URI_ROLE1, URI_ROLE2)); in.setPermissionSetUris(buildSet(URI_ROLE1, URI_ROLE2));
String newUri = dao.insertUserAccount(in); String newUri = dao.insertUserAccount(in);
@ -127,6 +129,7 @@ public class UserAccountsDaoJenaTest extends AbstractTestClass {
assertEquals("changeRequired", true, u.isPasswordChangeRequired()); assertEquals("changeRequired", true, u.isPasswordChangeRequired());
assertEquals("loginCount", 42, u.getLoginCount()); assertEquals("loginCount", 42, u.getLoginCount());
assertEquals("status", Status.INACTIVE, u.getStatus()); assertEquals("status", Status.INACTIVE, u.getStatus());
assertEquals("externalAuthId", "newUser", u.getExternalAuthId());
assertEquals("permissionSetUris", buildSet(URI_ROLE1, URI_ROLE2), assertEquals("permissionSetUris", buildSet(URI_ROLE1, URI_ROLE2),
u.getPermissionSetUris()); u.getPermissionSetUris());
} }
@ -157,6 +160,7 @@ public class UserAccountsDaoJenaTest extends AbstractTestClass {
up.setPasswordChangeRequired(false); up.setPasswordChangeRequired(false);
up.setLoginCount(43); up.setLoginCount(43);
up.setStatus(Status.ACTIVE); up.setStatus(Status.ACTIVE);
up.setExternalAuthId("updatedUser1");
up.setPermissionSetUris(buildSet(URI_ROLE1, URI_ROLE3)); up.setPermissionSetUris(buildSet(URI_ROLE1, URI_ROLE3));
dao.updateUserAccount(up); dao.updateUserAccount(up);
@ -172,6 +176,7 @@ public class UserAccountsDaoJenaTest extends AbstractTestClass {
assertEquals("changeRequired", false, u.isPasswordChangeRequired()); assertEquals("changeRequired", false, u.isPasswordChangeRequired());
assertEquals("loginCount", 43, u.getLoginCount()); assertEquals("loginCount", 43, u.getLoginCount());
assertEquals("status", Status.ACTIVE, u.getStatus()); assertEquals("status", Status.ACTIVE, u.getStatus());
assertEquals("externalAuthId", "updatedUser1", u.getExternalAuthId());
assertEquals("permissionSetUris", buildSet(URI_ROLE1, URI_ROLE3), assertEquals("permissionSetUris", buildSet(URI_ROLE1, URI_ROLE3),
u.getPermissionSetUris()); u.getPermissionSetUris());
} }
@ -257,6 +262,10 @@ public class UserAccountsDaoJenaTest extends AbstractTestClass {
assertCorrectPermissionSets(expected, dao.getAllPermissionSets()); assertCorrectPermissionSets(expected, dao.getAllPermissionSets());
} }
// ----------------------------------------------------------------------
// helper methods
// ----------------------------------------------------------------------
private void assertCorrectPermissionSets(Set<PermissionSet> expected, private void assertCorrectPermissionSets(Set<PermissionSet> expected,
Collection<PermissionSet> actual) { Collection<PermissionSet> actual) {
Set<Map<String, Object>> expectedMaps = new HashSet<Map<String, Object>>(); Set<Map<String, Object>> expectedMaps = new HashSet<Map<String, Object>>();

View file

@ -17,6 +17,7 @@ mydomain:user01
auth:passwordChangeExpires 0 ; auth:passwordChangeExpires 0 ;
auth:loginCount 5 ; auth:loginCount 5 ;
auth:status "ACTIVE" ; auth:status "ACTIVE" ;
auth:externalAuthId "user1";
auth:hasPermissionSet mydomain:role1 ; auth:hasPermissionSet mydomain:role1 ;
. .