[Major] added firstname and lastname to certificate

Also renamed model attribute from surname to lastname
This commit is contained in:
Robert von Burg 2014-08-22 20:36:18 +02:00
parent b47d3e3dcd
commit d2faed1d2e
11 changed files with 108 additions and 75 deletions

View File

@ -5,7 +5,7 @@
<User userId="1" username="admin" password="8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918">
<Firstname>Application</Firstname>
<Surname>Administrator</Surname>
<Lastname>Administrator</Lastname>
<State>ENABLED</State>
<Locale>en_GB</Locale>
<Roles>
@ -20,7 +20,7 @@
<User userId="2" username="system_admin">
<Firstname>System User</Firstname>
<Surname>Administrator</Surname>
<Lastname>Administrator</Lastname>
<State>SYSTEM</State>
<Locale>en_GB</Locale>
<Roles>
@ -30,7 +30,7 @@
<User userId="3" username="system_admin2">
<Firstname>System User</Firstname>
<Surname>Administrator</Surname>
<Lastname>Administrator</Lastname>
<State>SYSTEM</State>
<Locale>en_GB</Locale>
<Roles>

View File

@ -129,7 +129,7 @@ public class DefaultPrivilegeHandler implements PrivilegeHandler {
String selUserId = selectorRep.getUserId();
String selUsername = selectorRep.getUsername();
String selFirstname = selectorRep.getFirstname();
String selSurname = selectorRep.getSurname();
String selLastname = selectorRep.getLastname();
UserState selUserState = selectorRep.getUserState();
Locale selLocale = selectorRep.getLocale();
Set<String> selRoles = selectorRep.getRoles();
@ -143,7 +143,7 @@ public class DefaultPrivilegeHandler implements PrivilegeHandler {
boolean userIdSelected;
boolean usernameSelected;
boolean firstnameSelected;
boolean surnameSelected;
boolean lastnameSelected;
boolean userStateSelected;
boolean localeSelected;
boolean roleSelected;
@ -173,13 +173,13 @@ public class DefaultPrivilegeHandler implements PrivilegeHandler {
else
firstnameSelected = false;
// surname
if (selSurname == null)
surnameSelected = true;
else if (selSurname.equals(user.getSurname()))
surnameSelected = true;
// lastname
if (selLastname == null)
lastnameSelected = true;
else if (selLastname.equals(user.getLastname()))
lastnameSelected = true;
else
surnameSelected = false;
lastnameSelected = false;
// user state
if (selUserState == null)
@ -203,7 +203,7 @@ public class DefaultPrivilegeHandler implements PrivilegeHandler {
// properties
propertySelected = isSelectedByProperty(selPropertyMap, user.getProperties());
boolean selected = userIdSelected && usernameSelected && firstnameSelected && surnameSelected
boolean selected = userIdSelected && usernameSelected && firstnameSelected && lastnameSelected
&& userStateSelected && localeSelected && roleSelected && propertySelected;
if (selected)
@ -303,7 +303,7 @@ public class DefaultPrivilegeHandler implements PrivilegeHandler {
// create new user
User user = new User(userRep.getUserId(), userRep.getUsername(), passwordHash, userRep.getFirstname(),
userRep.getSurname(), userRep.getUserState(), userRep.getRoles(), userRep.getLocale(),
userRep.getLastname(), userRep.getUserState(), userRep.getRoles(), userRep.getLocale(),
userRep.getProperties());
// delegate to persistence handler
@ -387,7 +387,7 @@ public class DefaultPrivilegeHandler implements PrivilegeHandler {
newRoles.add(roleName);
User newUser = new User(user.getUserId(), user.getUsername(), user.getPassword(), user.getFirstname(),
user.getSurname(), user.getUserState(), newRoles, user.getLocale(), user.getProperties());
user.getLastname(), user.getUserState(), newRoles, user.getLocale(), user.getProperties());
// delegate user replacement to persistence handler
this.persistenceHandler.addOrReplaceUser(newUser);
@ -467,7 +467,7 @@ public class DefaultPrivilegeHandler implements PrivilegeHandler {
Set<String> newRoles = new HashSet<String>(currentRoles);
newRoles.remove(roleName);
User newUser = new User(user.getUserId(), user.getUsername(), user.getPassword(), user.getFirstname(),
user.getSurname(), user.getUserState(), newRoles, user.getLocale(), user.getProperties());
user.getLastname(), user.getUserState(), newRoles, user.getLocale(), user.getProperties());
// delegate user replacement to persistence handler
this.persistenceHandler.addOrReplaceUser(newUser);
@ -505,14 +505,14 @@ public class DefaultPrivilegeHandler implements PrivilegeHandler {
// create new user
User newUser = new User(user.getUserId(), user.getUsername(), user.getPassword(), user.getFirstname(),
user.getSurname(), user.getUserState(), user.getRoles(), locale, user.getProperties());
user.getLastname(), user.getUserState(), user.getRoles(), locale, user.getProperties());
// delegate user replacement to persistence handler
this.persistenceHandler.addOrReplaceUser(newUser);
}
@Override
public void setUserName(Certificate certificate, String username, String firstname, String surname) {
public void setUserName(Certificate certificate, String username, String firstname, String lastname) {
// validate who is doing this
assertIsPrivilegeAdmin(certificate);
@ -524,7 +524,7 @@ public class DefaultPrivilegeHandler implements PrivilegeHandler {
}
// create new user
User newUser = new User(user.getUserId(), user.getUsername(), user.getPassword(), firstname, surname,
User newUser = new User(user.getUserId(), user.getUsername(), user.getPassword(), firstname, lastname,
user.getUserState(), user.getRoles(), user.getLocale(), user.getProperties());
// delegate user replacement to persistence handler
@ -569,7 +569,7 @@ public class DefaultPrivilegeHandler implements PrivilegeHandler {
// create new user
User newUser = new User(user.getUserId(), user.getUsername(), passwordHash, user.getFirstname(),
user.getSurname(), user.getUserState(), user.getRoles(), user.getLocale(), user.getProperties());
user.getLastname(), user.getUserState(), user.getRoles(), user.getLocale(), user.getProperties());
// delegate user replacement to persistence handler
this.persistenceHandler.addOrReplaceUser(newUser);
@ -598,7 +598,7 @@ public class DefaultPrivilegeHandler implements PrivilegeHandler {
// create new user
User newUser = new User(user.getUserId(), user.getUsername(), user.getPassword(), user.getFirstname(),
user.getSurname(), state, user.getRoles(), user.getLocale(), user.getProperties());
user.getLastname(), state, user.getRoles(), user.getLocale(), user.getProperties());
// delegate user replacement to persistence handler
this.persistenceHandler.addOrReplaceUser(newUser);
@ -673,8 +673,8 @@ public class DefaultPrivilegeHandler implements PrivilegeHandler {
String sessionId = nextSessionId();
// create a new certificate, with details of the user
certificate = new Certificate(sessionId, System.currentTimeMillis(), username, authToken, user.getLocale(),
new HashMap<String, String>(user.getProperties()));
certificate = new Certificate(sessionId, System.currentTimeMillis(), username, user.getFirstname(),
user.getLastname(), authToken, user.getLocale(), new HashMap<String, String>(user.getProperties()));
PrivilegeContext privilegeContext = buildPrivilegeContext(certificate, user);
this.privilegeContextMap.put(sessionId, privilegeContext);
@ -1055,7 +1055,7 @@ public class DefaultPrivilegeHandler implements PrivilegeHandler {
// create a new certificate, with details of the user
Certificate systemUserCertificate = new Certificate(sessionId, System.currentTimeMillis(), systemUsername,
authToken, user.getLocale(), new HashMap<String, String>(user.getProperties()));
null, null, authToken, user.getLocale(), new HashMap<String, String>(user.getProperties()));
// create and save a new privilege context
PrivilegeContext privilegeContext = buildPrivilegeContext(systemUserCertificate, user);

View File

@ -256,7 +256,7 @@ public interface PrivilegeHandler {
throws AccessDeniedException, PrivilegeException;
/**
* Changes the name of the user. This changes the first name and the surname. If either value is null, then that
* Changes the name of the user. This changes the first name and the lastname. If either value is null, then that
* value is not changed
*
* @param certificate
@ -265,15 +265,15 @@ public interface PrivilegeHandler {
* the username of the {@link User} for which the name is to be changed
* @param firstname
* the new first name
* @param surname
* the new surname
* @param lastname
* the new lastname
*
* @throws AccessDeniedException
* if the user for this certificate may not perform the action
* @throws PrivilegeException
* if there is anything wrong with this certificate
*/
public void setUserName(Certificate certificate, String username, String firstname, String surname)
public void setUserName(Certificate certificate, String username, String firstname, String lastname)
throws AccessDeniedException, PrivilegeException;
/**

View File

@ -134,9 +134,9 @@ public class XmlConstants {
public static final String XML_FIRSTNAME = "Firstname";
/**
* XML_SURNAME = "Surname" :
* XML_LASTNAME = "Lastname" :
*/
public static final String XML_SURNAME = "Surname";
public static final String XML_LASTNAME = "Lastname";
/**
* XML_STATE = "State" :

View File

@ -40,6 +40,8 @@ public final class Certificate implements Serializable {
private final String sessionId;
private final long loginTime;
private final String username;
private final String firstname;
private final String lastname;
private final String authToken;
private Locale locale;
@ -59,6 +61,10 @@ public final class Certificate implements Serializable {
* the users session id
* @param username
* the users login name
* @param firstname
* the users first name
* @param lastname
* the users last name
* @param authToken
* the authentication token defining the users unique session and is a private field of this certificate.
* @param locale
@ -67,8 +73,8 @@ public final class Certificate implements Serializable {
* a {@link Map} containing string value pairs of properties for the logged in user. These properties can
* be edited and can be used for the user to change settings of this session
*/
public Certificate(String sessionId, long loginTime, String username, String authToken, Locale locale,
Map<String, String> propertyMap) {
public Certificate(String sessionId, long loginTime, String username, String firstname, String lastname,
String authToken, Locale locale, Map<String, String> propertyMap) {
// validate arguments are not null
if (StringHelper.isEmpty(sessionId)) {
@ -84,6 +90,8 @@ public final class Certificate implements Serializable {
this.sessionId = sessionId;
this.loginTime = loginTime;
this.username = username;
this.firstname = firstname;
this.lastname = lastname;
this.authToken = authToken;
// if no locale is given, set default
@ -147,6 +155,20 @@ public final class Certificate implements Serializable {
return this.username;
}
/**
* @return the firstname
*/
public String getFirstname() {
return this.firstname;
}
/**
* @return the lastname
*/
public String getLastname() {
return this.lastname;
}
/**
* @return the loginTime
*/
@ -176,6 +198,17 @@ public final class Certificate implements Serializable {
builder.append(this.sessionId);
builder.append(", username=");
builder.append(this.username);
if (StringHelper.isNotEmpty(this.firstname)) {
builder.append(", firstname=");
builder.append(this.firstname);
}
if (StringHelper.isNotEmpty(this.lastname)) {
builder.append(", lastname=");
builder.append(this.lastname);
}
builder.append(", locale=");
builder.append(this.locale);
builder.append("]");

View File

@ -39,7 +39,7 @@ public class UserRep implements Serializable {
private final String userId;
private String username;
private String firstname;
private String surname;
private String lastname;
private UserState userState;
private Set<String> roles;
private Locale locale;
@ -54,8 +54,8 @@ public class UserRep implements Serializable {
* the user's login name
* @param firstname
* the user's first name
* @param surname
* the user's surname
* @param lastname
* the user's last name
* @param userState
* the user's {@link UserState}
* @param roles
@ -65,12 +65,12 @@ public class UserRep implements Serializable {
* @param propertyMap
* a {@link Map} containing string value pairs of properties for this user
*/
public UserRep(String userId, String username, String firstname, String surname, UserState userState,
public UserRep(String userId, String username, String firstname, String lastname, UserState userState,
Set<String> roles, Locale locale, Map<String, String> propertyMap) {
this.userId = userId;
this.username = username;
this.firstname = firstname;
this.surname = surname;
this.lastname = lastname;
this.userState = userState;
this.roles = roles;
this.locale = locale;
@ -97,8 +97,8 @@ public class UserRep implements Serializable {
if (StringHelper.isEmpty(this.firstname))
throw new PrivilegeException("firstname is null or empty"); //$NON-NLS-1$
if (StringHelper.isEmpty(this.surname))
throw new PrivilegeException("surname is null or empty"); //$NON-NLS-1$
if (StringHelper.isEmpty(this.lastname))
throw new PrivilegeException("lastname is null or empty"); //$NON-NLS-1$
}
if (this.roles == null)
@ -143,18 +143,18 @@ public class UserRep implements Serializable {
}
/**
* @return the surname
* @return the lastname
*/
public String getSurname() {
return this.surname;
public String getLastname() {
return this.lastname;
}
/**
* @param surname
* the surname to set
* @param lastname
* the lastname to set
*/
public void setSurname(String surname) {
this.surname = surname;
public void setLastname(String lastname) {
this.lastname = lastname;
}
/**
@ -259,8 +259,8 @@ public class UserRep implements Serializable {
builder.append(this.username);
builder.append(", firstname=");
builder.append(this.firstname);
builder.append(", surname=");
builder.append(this.surname);
builder.append(", lastname=");
builder.append(this.lastname);
builder.append(", userState=");
builder.append(this.userState);
builder.append(", locale=");

View File

@ -29,7 +29,7 @@ import ch.eitchnet.utils.helper.StringHelper;
/**
* This class defines the actual login information for a given user which can be granted privileges. Every user is
* granted a set of {@link Role}s and has a {@link UserState} including detail information like first name and surname
* granted a set of {@link Role}s and has a {@link UserState} including detail information like first name and lastname
*
* <p>
* Note: This is an internal object which is not to be serialized or passed to clients, {@link UserRep}s are used for
@ -46,7 +46,7 @@ public final class User {
private final String password;
private final String firstname;
private final String surname;
private final String lastname;
private final UserState userState;
@ -67,8 +67,8 @@ public final class User {
* the user's password (hashed)
* @param firstname
* the user's first name
* @param surname
* the user's surname
* @param lastname
* the user's lastname
* @param userState
* the user's {@link UserState}
* @param roles
@ -78,7 +78,7 @@ public final class User {
* @param propertyMap
* a {@link Map} containing string value pairs of properties for this user
*/
public User(String userId, String username, String password, String firstname, String surname, UserState userState,
public User(String userId, String username, String password, String firstname, String lastname, UserState userState,
Set<String> roles, Locale locale, Map<String, String> propertyMap) {
if (StringHelper.isEmpty(userId)) {
@ -91,8 +91,8 @@ public final class User {
throw new PrivilegeException("No username defined!"); //$NON-NLS-1$
}
if (userState != UserState.SYSTEM) {
if (StringHelper.isEmpty(surname)) {
throw new PrivilegeException("No surname defined!"); //$NON-NLS-1$
if (StringHelper.isEmpty(lastname)) {
throw new PrivilegeException("No lastname defined!"); //$NON-NLS-1$
}
if (StringHelper.isEmpty(firstname)) {
throw new PrivilegeException("No firstname defined!"); //$NON-NLS-1$
@ -111,7 +111,7 @@ public final class User {
this.userState = userState;
this.firstname = firstname;
this.surname = surname;
this.lastname = lastname;
if (roles == null)
this.roles = Collections.emptySet();
@ -153,17 +153,17 @@ public final class User {
}
/**
* @return the firstname
* @return the first name
*/
public String getFirstname() {
return this.firstname;
}
/**
* @return the surname
* @return the last name
*/
public String getSurname() {
return this.surname;
public String getLastname() {
return this.lastname;
}
/**
@ -233,7 +233,7 @@ public final class User {
* @return a {@link UserRep} which is a representation of this object used to serialize and view on clients
*/
public UserRep asUserRep() {
return new UserRep(this.userId, this.username, this.firstname, this.surname, this.userState,
return new UserRep(this.userId, this.username, this.firstname, this.lastname, this.userState,
new HashSet<String>(this.roles), this.locale, new HashMap<String, String>(this.propertyMap));
}
@ -252,8 +252,8 @@ public final class User {
builder.append(this.username);
builder.append(", firstname=");
builder.append(this.firstname);
builder.append(", surname=");
builder.append(this.surname);
builder.append(", lastname=");
builder.append(this.lastname);
builder.append(", locale=");
builder.append(this.locale);
builder.append(", userState=");

View File

@ -72,10 +72,10 @@ public class PrivilegeModelDomWriter {
firstnameElement.setTextContent(user.getFirstname());
userElement.appendChild(firstnameElement);
// add surname element
Element surnameElement = doc.createElement(XmlConstants.XML_SURNAME);
surnameElement.setTextContent(user.getSurname());
userElement.appendChild(surnameElement);
// add lastname element
Element lastnameElement = doc.createElement(XmlConstants.XML_LASTNAME);
lastnameElement.setTextContent(user.getLastname());
userElement.appendChild(lastnameElement);
// add state element
Element stateElement = doc.createElement(XmlConstants.XML_STATE);

View File

@ -206,7 +206,7 @@ public class PrivilegeModelSaxReader extends DefaultHandler {
// <User userId="1" username="admin" password="8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918">
// <Firstname>Application</Firstname>
// <Surname>Administrator</Surname>
// <Lastname>Administrator</Lastname>
// <State>ENABLED</State>
// <Locale>en_GB</Locale>
// <Roles>
@ -227,7 +227,7 @@ public class PrivilegeModelSaxReader extends DefaultHandler {
String username;
String password;
String firstName;
String surname;
String lastname;
UserState userState;
Locale locale;
Set<String> userRoles;
@ -259,8 +259,8 @@ public class PrivilegeModelSaxReader extends DefaultHandler {
if (qName.equals(XmlConstants.XML_FIRSTNAME)) {
this.firstName = this.text.toString().trim();
} else if (qName.equals(XmlConstants.XML_SURNAME)) {
this.surname = this.text.toString().trim();
} else if (qName.equals(XmlConstants.XML_LASTNAME)) {
this.lastname = this.text.toString().trim();
} else if (qName.equals(XmlConstants.XML_STATE)) {
this.userState = UserState.valueOf(this.text.toString().trim());
} else if (qName.equals(XmlConstants.XML_LOCALE)) {
@ -269,7 +269,7 @@ public class PrivilegeModelSaxReader extends DefaultHandler {
this.userRoles.add(this.text.toString().trim());
} else if (qName.equals(XmlConstants.XML_USER)) {
User user = new User(this.userId, this.username, this.password, this.firstName, this.surname,
User user = new User(this.userId, this.username, this.password, this.firstName, this.lastname,
this.userState, this.userRoles, this.locale, this.parameters);
logger.info(MessageFormat.format("New User: {0}", user)); //$NON-NLS-1$
getUsers().add(user);

View File

@ -45,7 +45,7 @@ Copyright 2013 Robert von Burg &lt;eitch@eitchnet.ch&gt;
<sequence>
<element type="string" name="Firstname" minOccurs="1" maxOccurs="1" />
<element type="string" name="Surname" minOccurs="1" maxOccurs="1" />
<element type="string" name="Lastname" minOccurs="1" maxOccurs="1" />
<element type="string" name="State" minOccurs="1" maxOccurs="1" />
<element type="string" name="Locale" minOccurs="0" maxOccurs="1" />

View File

@ -183,7 +183,7 @@ public class XmlTest {
assertEquals("admin", admin.getUsername());
assertEquals("8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918", admin.getPassword());
assertEquals("Application", admin.getFirstname());
assertEquals("Administrator", admin.getSurname());
assertEquals("Administrator", admin.getLastname());
assertEquals(UserState.ENABLED, admin.getUserState());
assertEquals("en_gb", admin.getLocale().toString());
assertThat(admin.getRoles(), containsInAnyOrder("PrivilegeAdmin", "AppUser"));
@ -198,7 +198,7 @@ public class XmlTest {
assertEquals("system_admin", systemAdmin.getUsername());
assertEquals(null, systemAdmin.getPassword());
assertEquals("System User", systemAdmin.getFirstname());
assertEquals("Administrator", systemAdmin.getSurname());
assertEquals("Administrator", systemAdmin.getLastname());
assertEquals(UserState.SYSTEM, systemAdmin.getUserState());
assertEquals("en_gb", systemAdmin.getLocale().toString());
assertThat(systemAdmin.getRoles(), containsInAnyOrder("system_admin_privileges"));
@ -338,6 +338,6 @@ public class XmlTest {
configSaxWriter.write();
String fileHash = StringHelper.getHexString(FileHelper.hashFileSha256(modelFile));
assertEquals("a2127d20a61e00bcdbb61569cd2b200c4f0f111c972bac3b1e54df3b2fcdc8be", fileHash);
assertEquals("c9732a05bf0ed53d89b3d12e7c8d7216150b6a91412d1bf47fbe3e6f3be750ff", fileHash);
}
}