[New] Added UserHistory to UserRep
This commit is contained in:
parent
fd7362b2c1
commit
2e3a1f1487
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,8 @@ import li.strolch.privilege.model.PrivilegeElementVisitor;
|
||||||
import li.strolch.privilege.model.PrivilegeRep;
|
import li.strolch.privilege.model.PrivilegeRep;
|
||||||
import li.strolch.privilege.model.RoleRep;
|
import li.strolch.privilege.model.RoleRep;
|
||||||
import li.strolch.privilege.model.UserRep;
|
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> {
|
public class PrivilegeElementToJsonVisitor implements PrivilegeElementVisitor<JsonObject> {
|
||||||
|
|
||||||
|
@ -36,6 +38,13 @@ public class PrivilegeElementToJsonVisitor implements PrivilegeElementVisitor<Js
|
||||||
propsArr.add(propObj);
|
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;
|
return jsonObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -934,7 +934,7 @@ public class DefaultPrivilegeHandler implements PrivilegeHandler {
|
||||||
|
|
||||||
// validate no user is using this role
|
// validate no user is using this role
|
||||||
Set<String> roles = new HashSet<>(Collections.singletonList(roleName));
|
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);
|
List<UserRep> usersWithRole = queryUsers(certificate, selector);
|
||||||
if (!usersWithRole.isEmpty()) {
|
if (!usersWithRole.isEmpty()) {
|
||||||
String usersS = usersWithRole.stream().map(UserRep::getUsername).collect(Collectors.joining(", "));
|
String usersS = usersWithRole.stream().map(UserRep::getUsername).collect(Collectors.joining(", "));
|
||||||
|
|
|
@ -25,6 +25,7 @@ import li.strolch.privilege.base.PrivilegeConstants;
|
||||||
import li.strolch.privilege.base.PrivilegeException;
|
import li.strolch.privilege.base.PrivilegeException;
|
||||||
import li.strolch.privilege.model.internal.Role;
|
import li.strolch.privilege.model.internal.Role;
|
||||||
import li.strolch.privilege.model.internal.User;
|
import li.strolch.privilege.model.internal.User;
|
||||||
|
import li.strolch.privilege.model.internal.UserHistory;
|
||||||
import li.strolch.utils.helper.StringHelper;
|
import li.strolch.utils.helper.StringHelper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -45,6 +46,8 @@ public class UserRep implements Serializable {
|
||||||
private Set<String> roles;
|
private Set<String> roles;
|
||||||
private Map<String, String> properties;
|
private Map<String, String> properties;
|
||||||
|
|
||||||
|
private UserHistory history;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default constructor
|
* Default constructor
|
||||||
*
|
*
|
||||||
|
@ -66,7 +69,7 @@ public class UserRep implements Serializable {
|
||||||
* a {@link Map} containing string value pairs of properties for this user
|
* a {@link Map} containing string value pairs of properties for this user
|
||||||
*/
|
*/
|
||||||
public UserRep(String userId, String username, String firstname, String lastname, UserState userState,
|
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.userId = userId;
|
||||||
this.username = username;
|
this.username = username;
|
||||||
this.firstname = firstname;
|
this.firstname = firstname;
|
||||||
|
@ -79,6 +82,8 @@ public class UserRep implements Serializable {
|
||||||
this.properties = new HashMap<>(propertyMap);
|
this.properties = new HashMap<>(propertyMap);
|
||||||
this.properties.remove("");
|
this.properties.remove("");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.history = history;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -239,6 +244,17 @@ public class UserRep implements Serializable {
|
||||||
this.locale = locale;
|
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
|
* 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);
|
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,
|
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) {
|
public <T> T accept(PrivilegeElementVisitor<T> visitor) {
|
||||||
|
|
|
@ -341,7 +341,7 @@ public final class User {
|
||||||
*/
|
*/
|
||||||
public UserRep asUserRep() {
|
public UserRep asUserRep() {
|
||||||
return new UserRep(this.userId, this.username, this.firstname, this.lastname, 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));
|
new HashSet<>(this.roles), this.locale, new HashMap<>(this.propertyMap), this.history.getClone());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -252,7 +252,7 @@ public class PrivilegeTest extends AbstractPrivilegeTest {
|
||||||
assertNotEquals("Admin", user.getLastname());
|
assertNotEquals("Admin", user.getLastname());
|
||||||
|
|
||||||
// let's add a new user bob
|
// 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);
|
this.privilegeHandler.updateUser(certificate, userRep);
|
||||||
|
|
||||||
user = this.privilegeHandler.getUser(certificate, ADMIN);
|
user = this.privilegeHandler.getUser(certificate, ADMIN);
|
||||||
|
@ -273,7 +273,7 @@ public class PrivilegeTest extends AbstractPrivilegeTest {
|
||||||
Certificate certificate = this.ctx.getCertificate();
|
Certificate certificate = this.ctx.getCertificate();
|
||||||
|
|
||||||
// let's add a new user bob
|
// 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);
|
this.privilegeHandler.updateUser(certificate, userRep);
|
||||||
} finally {
|
} finally {
|
||||||
logout();
|
logout();
|
||||||
|
@ -291,7 +291,7 @@ public class PrivilegeTest extends AbstractPrivilegeTest {
|
||||||
Certificate certificate = this.ctx.getCertificate();
|
Certificate certificate = this.ctx.getCertificate();
|
||||||
|
|
||||||
// let's add a new user bob
|
// 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);
|
this.privilegeHandler.updateUser(certificate, userRep);
|
||||||
} finally {
|
} finally {
|
||||||
logout();
|
logout();
|
||||||
|
@ -308,7 +308,7 @@ public class PrivilegeTest extends AbstractPrivilegeTest {
|
||||||
|
|
||||||
Certificate certificate = this.ctx.getCertificate();
|
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);
|
List<UserRep> users = this.privilegeHandler.queryUsers(certificate, selectorRep);
|
||||||
assertEquals(1, users.size());
|
assertEquals(1, users.size());
|
||||||
assertEquals(ADMIN, users.get(0).getUsername());
|
assertEquals(ADMIN, users.get(0).getUsername());
|
||||||
|
@ -326,7 +326,7 @@ public class PrivilegeTest extends AbstractPrivilegeTest {
|
||||||
Certificate certificate = this.ctx.getCertificate();
|
Certificate certificate = this.ctx.getCertificate();
|
||||||
|
|
||||||
UserRep selectorRep = new UserRep(null, null, null, null, null,
|
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);
|
List<UserRep> users = this.privilegeHandler.queryUsers(certificate, selectorRep);
|
||||||
assertEquals(2, users.size());
|
assertEquals(2, users.size());
|
||||||
assertEquals(ADMIN, users.get(0).getUsername());
|
assertEquals(ADMIN, users.get(0).getUsername());
|
||||||
|
@ -344,7 +344,7 @@ public class PrivilegeTest extends AbstractPrivilegeTest {
|
||||||
Certificate certificate = this.ctx.getCertificate();
|
Certificate certificate = this.ctx.getCertificate();
|
||||||
|
|
||||||
UserRep selectorRep = new UserRep(null, null, null, null, null,
|
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);
|
List<UserRep> users = this.privilegeHandler.queryUsers(certificate, selectorRep);
|
||||||
assertEquals(0, users.size());
|
assertEquals(0, users.size());
|
||||||
|
|
||||||
|
@ -656,7 +656,7 @@ public class PrivilegeTest extends AbstractPrivilegeTest {
|
||||||
// let's add a new user ted
|
// let's add a new user ted
|
||||||
HashSet<String> roles = new HashSet<>();
|
HashSet<String> roles = new HashSet<>();
|
||||||
roles.add(ROLE_USER);
|
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();
|
Certificate certificate = this.ctx.getCertificate();
|
||||||
this.privilegeHandler.addUser(certificate, userRep, null);
|
this.privilegeHandler.addUser(certificate, userRep, null);
|
||||||
logger.info("Added user " + TED);
|
logger.info("Added user " + TED);
|
||||||
|
@ -689,7 +689,7 @@ public class PrivilegeTest extends AbstractPrivilegeTest {
|
||||||
login(BOB, ArraysHelper.copyOf(PASS_BOB));
|
login(BOB, ArraysHelper.copyOf(PASS_BOB));
|
||||||
// let's add a new user Ted
|
// let's add a new user Ted
|
||||||
userRep = new UserRep("1", TED, "Ted", "And then Some", UserState.NEW, new HashSet<>(), null,
|
userRep = new UserRep("1", TED, "Ted", "And then Some", UserState.NEW, new HashSet<>(), null,
|
||||||
new HashMap<>());
|
new HashMap<>(), null);
|
||||||
certificate = this.ctx.getCertificate();
|
certificate = this.ctx.getCertificate();
|
||||||
this.privilegeHandler.addUser(certificate, userRep, null);
|
this.privilegeHandler.addUser(certificate, userRep, null);
|
||||||
fail("User bob may not add a user as bob does not have admin rights!");
|
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
|
// let's add a new user bob
|
||||||
UserRep userRep = new UserRep(null, BOB, "Bob", "Newman", UserState.NEW,
|
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();
|
Certificate certificate = this.ctx.getCertificate();
|
||||||
this.privilegeHandler.addUser(certificate, userRep, null);
|
this.privilegeHandler.addUser(certificate, userRep, null);
|
||||||
logger.info("Added user " + BOB);
|
logger.info("Added user " + BOB);
|
||||||
|
|
Loading…
Reference in New Issue