[New] Added UserHistory to UserRep

This commit is contained in:
Robert von Burg 2021-02-22 15:45:08 +01:00
parent fd7362b2c1
commit 2e3a1f1487
6 changed files with 39 additions and 14 deletions

View File

@ -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);
}
}

View File

@ -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<JsonObject> {
@ -36,6 +38,13 @@ public class PrivilegeElementToJsonVisitor implements PrivilegeElementVisitor<Js
propsArr.add(propObj);
}
JsonObject historyJ = new JsonObject();
jsonObject.add("history", historyJ);
UserHistory history = userRep.getHistory();
historyJ.addProperty("firstLogin", ISO8601.toString(history.getFirstLogin()));
historyJ.addProperty("lastLogin", ISO8601.toString(history.getLastLogin()));
historyJ.addProperty("lastPasswordChange", ISO8601.toString(history.getLastPasswordChange()));
return jsonObject;
}

View File

@ -934,7 +934,7 @@ public class DefaultPrivilegeHandler implements PrivilegeHandler {
// validate no user is using this role
Set<String> 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<UserRep> usersWithRole = queryUsers(certificate, selector);
if (!usersWithRole.isEmpty()) {
String usersS = usersWithRole.stream().map(UserRep::getUsername).collect(Collectors.joining(", "));

View File

@ -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<String> roles;
private Map<String, String> 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<String> roles, Locale locale, Map<String, String> propertyMap) {
Set<String> roles, Locale locale, Map<String, String> 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<String, String> 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> T accept(PrivilegeElementVisitor<T> visitor) {

View File

@ -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());
}
/**

View File

@ -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<UserRep> 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<UserRep> 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<UserRep> 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<String> 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);