From d2faed1d2eabaaba0720e00f8c457ce9b90d44ed Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Fri, 22 Aug 2014 20:36:18 +0200 Subject: [PATCH] [Major] added firstname and lastname to certificate Also renamed model attribute from surname to lastname --- config/PrivilegeModel.xml | 6 +-- .../handler/DefaultPrivilegeHandler.java | 40 +++++++++---------- .../privilege/handler/PrivilegeHandler.java | 8 ++-- .../privilege/helper/XmlConstants.java | 4 +- .../eitchnet/privilege/model/Certificate.java | 37 ++++++++++++++++- .../ch/eitchnet/privilege/model/UserRep.java | 32 +++++++-------- .../privilege/model/internal/User.java | 30 +++++++------- .../xml/PrivilegeModelDomWriter.java | 8 ++-- .../xml/PrivilegeModelSaxReader.java | 10 ++--- src/main/resources/PrivilegeModel.xsd | 2 +- .../ch/eitchnet/privilege/test/XmlTest.java | 6 +-- 11 files changed, 108 insertions(+), 75 deletions(-) diff --git a/config/PrivilegeModel.xml b/config/PrivilegeModel.xml index 488ae379a..1ab9708d6 100644 --- a/config/PrivilegeModel.xml +++ b/config/PrivilegeModel.xml @@ -5,7 +5,7 @@ Application - Administrator + Administrator ENABLED en_GB @@ -20,7 +20,7 @@ System User - Administrator + Administrator SYSTEM en_GB @@ -30,7 +30,7 @@ System User - Administrator + Administrator SYSTEM en_GB diff --git a/src/main/java/ch/eitchnet/privilege/handler/DefaultPrivilegeHandler.java b/src/main/java/ch/eitchnet/privilege/handler/DefaultPrivilegeHandler.java index f48a10964..e3ec04f6f 100644 --- a/src/main/java/ch/eitchnet/privilege/handler/DefaultPrivilegeHandler.java +++ b/src/main/java/ch/eitchnet/privilege/handler/DefaultPrivilegeHandler.java @@ -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 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 newRoles = new HashSet(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(user.getProperties())); + certificate = new Certificate(sessionId, System.currentTimeMillis(), username, user.getFirstname(), + user.getLastname(), authToken, user.getLocale(), new HashMap(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(user.getProperties())); + null, null, authToken, user.getLocale(), new HashMap(user.getProperties())); // create and save a new privilege context PrivilegeContext privilegeContext = buildPrivilegeContext(systemUserCertificate, user); diff --git a/src/main/java/ch/eitchnet/privilege/handler/PrivilegeHandler.java b/src/main/java/ch/eitchnet/privilege/handler/PrivilegeHandler.java index fafd54bdc..d527fd171 100644 --- a/src/main/java/ch/eitchnet/privilege/handler/PrivilegeHandler.java +++ b/src/main/java/ch/eitchnet/privilege/handler/PrivilegeHandler.java @@ -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; /** diff --git a/src/main/java/ch/eitchnet/privilege/helper/XmlConstants.java b/src/main/java/ch/eitchnet/privilege/helper/XmlConstants.java index 079fe433d..d4a0c1e9d 100644 --- a/src/main/java/ch/eitchnet/privilege/helper/XmlConstants.java +++ b/src/main/java/ch/eitchnet/privilege/helper/XmlConstants.java @@ -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" : diff --git a/src/main/java/ch/eitchnet/privilege/model/Certificate.java b/src/main/java/ch/eitchnet/privilege/model/Certificate.java index b7e38ac5b..9cb3d9ada 100644 --- a/src/main/java/ch/eitchnet/privilege/model/Certificate.java +++ b/src/main/java/ch/eitchnet/privilege/model/Certificate.java @@ -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 propertyMap) { + public Certificate(String sessionId, long loginTime, String username, String firstname, String lastname, + String authToken, Locale locale, Map 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("]"); diff --git a/src/main/java/ch/eitchnet/privilege/model/UserRep.java b/src/main/java/ch/eitchnet/privilege/model/UserRep.java index 5f50594e2..3ffa0738d 100644 --- a/src/main/java/ch/eitchnet/privilege/model/UserRep.java +++ b/src/main/java/ch/eitchnet/privilege/model/UserRep.java @@ -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 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 roles, Locale locale, Map 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="); diff --git a/src/main/java/ch/eitchnet/privilege/model/internal/User.java b/src/main/java/ch/eitchnet/privilege/model/internal/User.java index 8e710e235..f54ccb630 100644 --- a/src/main/java/ch/eitchnet/privilege/model/internal/User.java +++ b/src/main/java/ch/eitchnet/privilege/model/internal/User.java @@ -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 * *

* 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 roles, Locale locale, Map 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(this.roles), this.locale, new HashMap(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="); diff --git a/src/main/java/ch/eitchnet/privilege/xml/PrivilegeModelDomWriter.java b/src/main/java/ch/eitchnet/privilege/xml/PrivilegeModelDomWriter.java index 6e419a542..480904019 100644 --- a/src/main/java/ch/eitchnet/privilege/xml/PrivilegeModelDomWriter.java +++ b/src/main/java/ch/eitchnet/privilege/xml/PrivilegeModelDomWriter.java @@ -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); diff --git a/src/main/java/ch/eitchnet/privilege/xml/PrivilegeModelSaxReader.java b/src/main/java/ch/eitchnet/privilege/xml/PrivilegeModelSaxReader.java index 1ac89649e..03f43bf91 100644 --- a/src/main/java/ch/eitchnet/privilege/xml/PrivilegeModelSaxReader.java +++ b/src/main/java/ch/eitchnet/privilege/xml/PrivilegeModelSaxReader.java @@ -206,7 +206,7 @@ public class PrivilegeModelSaxReader extends DefaultHandler { // // Application -// Administrator +// Administrator // ENABLED // en_GB // @@ -227,7 +227,7 @@ public class PrivilegeModelSaxReader extends DefaultHandler { String username; String password; String firstName; - String surname; + String lastname; UserState userState; Locale locale; Set 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); diff --git a/src/main/resources/PrivilegeModel.xsd b/src/main/resources/PrivilegeModel.xsd index 7d0ea3d40..d2f82d897 100644 --- a/src/main/resources/PrivilegeModel.xsd +++ b/src/main/resources/PrivilegeModel.xsd @@ -45,7 +45,7 @@ Copyright 2013 Robert von Burg <eitch@eitchnet.ch> - + diff --git a/src/test/java/ch/eitchnet/privilege/test/XmlTest.java b/src/test/java/ch/eitchnet/privilege/test/XmlTest.java index a120c4d6b..b1db9740e 100644 --- a/src/test/java/ch/eitchnet/privilege/test/XmlTest.java +++ b/src/test/java/ch/eitchnet/privilege/test/XmlTest.java @@ -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); } }