From 2e3a1f1487113fed554c4f742080937dec454394 Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Mon, 22 Feb 2021 15:45:08 +0100 Subject: [PATCH] [New] Added UserHistory to UserRep --- .../json/PrivilegeElementFromJsonVisitor.java | 2 +- .../json/PrivilegeElementToJsonVisitor.java | 9 +++++++++ .../handler/DefaultPrivilegeHandler.java | 2 +- .../li/strolch/privilege/model/UserRep.java | 20 +++++++++++++++++-- .../privilege/model/internal/User.java | 2 +- .../strolch/privilege/test/PrivilegeTest.java | 18 ++++++++--------- 6 files changed, 39 insertions(+), 14 deletions(-) diff --git a/li.strolch.model/src/main/java/li/strolch/model/json/PrivilegeElementFromJsonVisitor.java b/li.strolch.model/src/main/java/li/strolch/model/json/PrivilegeElementFromJsonVisitor.java index d2a8b9afa..8d091e670 100644 --- a/li.strolch.model/src/main/java/li/strolch/model/json/PrivilegeElementFromJsonVisitor.java +++ b/li.strolch.model/src/main/java/li/strolch/model/json/PrivilegeElementFromJsonVisitor.java @@ -111,6 +111,6 @@ public class PrivilegeElementFromJsonVisitor { } } - return new UserRep(userId, username, firstname, lastname, userState, roles, locale, properties); + return new UserRep(userId, username, firstname, lastname, userState, roles, locale, properties, null); } } diff --git a/li.strolch.model/src/main/java/li/strolch/model/json/PrivilegeElementToJsonVisitor.java b/li.strolch.model/src/main/java/li/strolch/model/json/PrivilegeElementToJsonVisitor.java index 4a25ce6d1..b72050171 100644 --- a/li.strolch.model/src/main/java/li/strolch/model/json/PrivilegeElementToJsonVisitor.java +++ b/li.strolch.model/src/main/java/li/strolch/model/json/PrivilegeElementToJsonVisitor.java @@ -7,6 +7,8 @@ import li.strolch.privilege.model.PrivilegeElementVisitor; import li.strolch.privilege.model.PrivilegeRep; import li.strolch.privilege.model.RoleRep; import li.strolch.privilege.model.UserRep; +import li.strolch.privilege.model.internal.UserHistory; +import li.strolch.utils.iso8601.ISO8601; public class PrivilegeElementToJsonVisitor implements PrivilegeElementVisitor { @@ -36,6 +38,13 @@ public class PrivilegeElementToJsonVisitor implements PrivilegeElementVisitor roles = new HashSet<>(Collections.singletonList(roleName)); - UserRep selector = new UserRep(null, null, null, null, null, roles, null, null); + UserRep selector = new UserRep(null, null, null, null, null, roles, null, null, null); List usersWithRole = queryUsers(certificate, selector); if (!usersWithRole.isEmpty()) { String usersS = usersWithRole.stream().map(UserRep::getUsername).collect(Collectors.joining(", ")); diff --git a/li.strolch.privilege/src/main/java/li/strolch/privilege/model/UserRep.java b/li.strolch.privilege/src/main/java/li/strolch/privilege/model/UserRep.java index 18f258ed6..647615688 100644 --- a/li.strolch.privilege/src/main/java/li/strolch/privilege/model/UserRep.java +++ b/li.strolch.privilege/src/main/java/li/strolch/privilege/model/UserRep.java @@ -25,6 +25,7 @@ import li.strolch.privilege.base.PrivilegeConstants; import li.strolch.privilege.base.PrivilegeException; import li.strolch.privilege.model.internal.Role; import li.strolch.privilege.model.internal.User; +import li.strolch.privilege.model.internal.UserHistory; import li.strolch.utils.helper.StringHelper; /** @@ -45,6 +46,8 @@ public class UserRep implements Serializable { private Set roles; private Map properties; + private UserHistory history; + /** * Default constructor * @@ -66,7 +69,7 @@ public class UserRep implements Serializable { * a {@link Map} containing string value pairs of properties for this user */ public UserRep(String userId, String username, String firstname, String lastname, UserState userState, - Set roles, Locale locale, Map propertyMap) { + Set roles, Locale locale, Map propertyMap, UserHistory history) { this.userId = userId; this.username = username; this.firstname = firstname; @@ -79,6 +82,8 @@ public class UserRep implements Serializable { this.properties = new HashMap<>(propertyMap); this.properties.remove(""); } + + this.history = history; } /** @@ -239,6 +244,17 @@ public class UserRep implements Serializable { this.locale = locale; } + /** + * Returns the {@link UserHistory} + * + * @return the user history + */ + public UserHistory getHistory() { + if (this.history == null) + return new UserHistory(); + return this.history; + } + /** * Returns the property with the given key * @@ -375,7 +391,7 @@ public class UserRep implements Serializable { Map propertyMap = this.properties == null ? null : new HashMap<>(this.properties); return new UserRep(this.userId, this.username, this.firstname, this.lastname, this.userState, roles, - this.locale, propertyMap); + this.locale, propertyMap, this.history.getClone()); } public T accept(PrivilegeElementVisitor visitor) { diff --git a/li.strolch.privilege/src/main/java/li/strolch/privilege/model/internal/User.java b/li.strolch.privilege/src/main/java/li/strolch/privilege/model/internal/User.java index 289476ccc..92768d78c 100644 --- a/li.strolch.privilege/src/main/java/li/strolch/privilege/model/internal/User.java +++ b/li.strolch.privilege/src/main/java/li/strolch/privilege/model/internal/User.java @@ -341,7 +341,7 @@ public final class User { */ public UserRep asUserRep() { return new UserRep(this.userId, this.username, this.firstname, this.lastname, this.userState, - new HashSet<>(this.roles), this.locale, new HashMap<>(this.propertyMap)); + new HashSet<>(this.roles), this.locale, new HashMap<>(this.propertyMap), this.history.getClone()); } /** diff --git a/li.strolch.privilege/src/test/java/li/strolch/privilege/test/PrivilegeTest.java b/li.strolch.privilege/src/test/java/li/strolch/privilege/test/PrivilegeTest.java index 443d89e58..0e52ba971 100644 --- a/li.strolch.privilege/src/test/java/li/strolch/privilege/test/PrivilegeTest.java +++ b/li.strolch.privilege/src/test/java/li/strolch/privilege/test/PrivilegeTest.java @@ -252,7 +252,7 @@ public class PrivilegeTest extends AbstractPrivilegeTest { assertNotEquals("Admin", user.getLastname()); // let's add a new user bob - UserRep userRep = new UserRep(null, ADMIN, "The", "Admin", null, null, null, null); + UserRep userRep = new UserRep(null, ADMIN, "The", "Admin", null, null, null, null, null); this.privilegeHandler.updateUser(certificate, userRep); user = this.privilegeHandler.getUser(certificate, ADMIN); @@ -273,7 +273,7 @@ public class PrivilegeTest extends AbstractPrivilegeTest { Certificate certificate = this.ctx.getCertificate(); // let's add a new user bob - UserRep userRep = new UserRep(null, BOB, null, null, null, null, null, null); + UserRep userRep = new UserRep(null, BOB, null, null, null, null, null, null, null); this.privilegeHandler.updateUser(certificate, userRep); } finally { logout(); @@ -291,7 +291,7 @@ public class PrivilegeTest extends AbstractPrivilegeTest { Certificate certificate = this.ctx.getCertificate(); // let's add a new user bob - UserRep userRep = new UserRep(null, ADMIN, null, null, null, null, null, null); + UserRep userRep = new UserRep(null, ADMIN, null, null, null, null, null, null, null); this.privilegeHandler.updateUser(certificate, userRep); } finally { logout(); @@ -308,7 +308,7 @@ public class PrivilegeTest extends AbstractPrivilegeTest { Certificate certificate = this.ctx.getCertificate(); - UserRep selectorRep = new UserRep(null, ADMIN, null, null, null, null, null, null); + UserRep selectorRep = new UserRep(null, ADMIN, null, null, null, null, null, null, null); List users = this.privilegeHandler.queryUsers(certificate, selectorRep); assertEquals(1, users.size()); assertEquals(ADMIN, users.get(0).getUsername()); @@ -326,7 +326,7 @@ public class PrivilegeTest extends AbstractPrivilegeTest { Certificate certificate = this.ctx.getCertificate(); UserRep selectorRep = new UserRep(null, null, null, null, null, - new HashSet<>(Collections.singletonList("PrivilegeAdmin")), null, null); + new HashSet<>(Collections.singletonList("PrivilegeAdmin")), null, null, null); List users = this.privilegeHandler.queryUsers(certificate, selectorRep); assertEquals(2, users.size()); assertEquals(ADMIN, users.get(0).getUsername()); @@ -344,7 +344,7 @@ public class PrivilegeTest extends AbstractPrivilegeTest { Certificate certificate = this.ctx.getCertificate(); UserRep selectorRep = new UserRep(null, null, null, null, null, - new HashSet<>(Collections.singletonList(ROLE_TEMP)), null, null); + new HashSet<>(Collections.singletonList(ROLE_TEMP)), null, null, null); List users = this.privilegeHandler.queryUsers(certificate, selectorRep); assertEquals(0, users.size()); @@ -656,7 +656,7 @@ public class PrivilegeTest extends AbstractPrivilegeTest { // let's add a new user ted HashSet roles = new HashSet<>(); roles.add(ROLE_USER); - userRep = new UserRep(null, TED, "Ted", "Newman", UserState.ENABLED, roles, null, new HashMap<>()); + userRep = new UserRep(null, TED, "Ted", "Newman", UserState.ENABLED, roles, null, new HashMap<>(), null); Certificate certificate = this.ctx.getCertificate(); this.privilegeHandler.addUser(certificate, userRep, null); logger.info("Added user " + TED); @@ -689,7 +689,7 @@ public class PrivilegeTest extends AbstractPrivilegeTest { login(BOB, ArraysHelper.copyOf(PASS_BOB)); // let's add a new user Ted userRep = new UserRep("1", TED, "Ted", "And then Some", UserState.NEW, new HashSet<>(), null, - new HashMap<>()); + new HashMap<>(), null); certificate = this.ctx.getCertificate(); this.privilegeHandler.addUser(certificate, userRep, null); fail("User bob may not add a user as bob does not have admin rights!"); @@ -769,7 +769,7 @@ public class PrivilegeTest extends AbstractPrivilegeTest { // let's add a new user bob UserRep userRep = new UserRep(null, BOB, "Bob", "Newman", UserState.NEW, - new HashSet<>(Collections.singletonList(ROLE_MY)), null, new HashMap<>()); + new HashSet<>(Collections.singletonList(ROLE_MY)), null, new HashMap<>(), null); Certificate certificate = this.ctx.getCertificate(); this.privilegeHandler.addUser(certificate, userRep, null); logger.info("Added user " + BOB);