[Fix] Respected privilegeHandler.isPersistOnUserDataChanged() for all privilege services

This commit is contained in:
Robert von Burg 2021-08-19 15:09:14 +02:00
parent 1ac594f78e
commit dc7972927b
12 changed files with 43 additions and 37 deletions

View File

@ -45,20 +45,19 @@ public class ClearUserPasswordService extends AbstractService<PrivilegeUserNameA
try (StrolchTransaction tx = openArgOrUserTx(arg, PrivilegeHandler.PRIVILEGE_SET_USER_PASSWORD)) { try (StrolchTransaction tx = openArgOrUserTx(arg, PrivilegeHandler.PRIVILEGE_SET_USER_PASSWORD)) {
tx.setSuppressAudits(true); tx.setSuppressAudits(true);
li.strolch.runtime.privilege.PrivilegeHandler strolchPrivilegeHandler = getContainer() li.strolch.runtime.privilege.PrivilegeHandler strolchPrivilegeHandler = getContainer().getPrivilegeHandler();
.getPrivilegeHandler();
PrivilegeHandler privilegeHandler = strolchPrivilegeHandler.getPrivilegeHandler(); PrivilegeHandler privilegeHandler = strolchPrivilegeHandler.getPrivilegeHandler();
privilegeHandler.setUserPassword(getCertificate(), arg.username, null); privilegeHandler.setUserPassword(getCertificate(), arg.username, null);
// only persist if not setting own password // only persist if not setting own password
if (!getCertificate().getUsername().equals(arg.username) && getPrivilegeContext().getPrivilegeNames() if (!getCertificate().getUsername().equals(arg.username) && getPrivilegeContext().getPrivilegeNames()
.contains(PrivilegeHandler.PRIVILEGE_ACTION_PERSIST)) { .contains(PrivilegeHandler.PRIVILEGE_ACTION_PERSIST)) {
privilegeHandler.persist(getCertificate()); if (privilegeHandler.isPersistOnUserDataChanged())
privilegeHandler.persist(getCertificate());
} }
Audit audit = tx Audit audit = tx.auditFrom(AccessType.UPDATE, StrolchPrivilegeConstants.PRIVILEGE,
.auditFrom(AccessType.UPDATE, StrolchPrivilegeConstants.PRIVILEGE, StrolchPrivilegeConstants.USER, StrolchPrivilegeConstants.USER, arg.username);
arg.username);
tx.getAuditTrail().add(tx, audit); tx.getAuditTrail().add(tx, audit);
} }

View File

@ -51,11 +51,11 @@ public class PrivilegeAddRoleToUserService
tx.setSuppressAudits(true); tx.setSuppressAudits(true);
user = privilegeHandler.addRoleToUser(getCertificate(), arg.username, arg.rolename); user = privilegeHandler.addRoleToUser(getCertificate(), arg.username, arg.rolename);
privilegeHandler.persist(getCertificate()); if (privilegeHandler.isPersistOnUserDataChanged())
privilegeHandler.persist(getCertificate());
Audit audit = tx Audit audit = tx.auditFrom(AccessType.UPDATE, StrolchPrivilegeConstants.PRIVILEGE,
.auditFrom(AccessType.UPDATE, StrolchPrivilegeConstants.PRIVILEGE, StrolchPrivilegeConstants.USER, StrolchPrivilegeConstants.USER, user.getUsername());
user.getUsername());
tx.getAuditTrail().add(tx, audit); tx.getAuditTrail().add(tx, audit);
} }

View File

@ -54,7 +54,8 @@ public class PrivilegeAddUserCommand extends Command {
public void doCommand() { public void doCommand() {
PrivilegeHandler privilegeHandler = getContainer().getPrivilegeHandler().getPrivilegeHandler(); PrivilegeHandler privilegeHandler = getContainer().getPrivilegeHandler().getPrivilegeHandler();
this.userOut = privilegeHandler.addUser(this.cert, this.userIn, null); this.userOut = privilegeHandler.addUser(this.cert, this.userIn, null);
privilegeHandler.persist(this.cert); if (privilegeHandler.isPersistOnUserDataChanged())
privilegeHandler.persist(this.cert);
writeAudit(); writeAudit();
} }

View File

@ -46,7 +46,8 @@ public class PrivilegeAddUsersCommand extends Command {
public void doCommand() { public void doCommand() {
PrivilegeHandler privilegeHandler = getContainer().getPrivilegeHandler().getPrivilegeHandler(); PrivilegeHandler privilegeHandler = getContainer().getPrivilegeHandler().getPrivilegeHandler();
privilegeHandler.addOrUpdateUsers(this.cert, this.usersIn); privilegeHandler.addOrUpdateUsers(this.cert, this.usersIn);
privilegeHandler.persist(this.cert); if (privilegeHandler.isPersistOnUserDataChanged())
privilegeHandler.persist(this.cert);
writeAudits(); writeAudits();
} }

View File

@ -50,11 +50,11 @@ public class PrivilegeRemoveRoleFromUserService
tx.setSuppressAudits(true); tx.setSuppressAudits(true);
user = privilegeHandler.removeRoleFromUser(getCertificate(), arg.username, arg.rolename); user = privilegeHandler.removeRoleFromUser(getCertificate(), arg.username, arg.rolename);
privilegeHandler.persist(getCertificate()); if (privilegeHandler.isPersistOnUserDataChanged())
privilegeHandler.persist(getCertificate());
Audit audit = tx Audit audit = tx.auditFrom(AccessType.UPDATE, StrolchPrivilegeConstants.PRIVILEGE,
.auditFrom(AccessType.UPDATE, StrolchPrivilegeConstants.PRIVILEGE, StrolchPrivilegeConstants.USER, StrolchPrivilegeConstants.USER, user.getUsername());
user.getUsername());
tx.getAuditTrail().add(tx, audit); tx.getAuditTrail().add(tx, audit);
} }

View File

@ -34,7 +34,8 @@ public class PrivilegeRemoveUserCommand extends Command {
PrivilegeHandler privilegeHandler = strolchPrivilegeHandler.getPrivilegeHandler(); PrivilegeHandler privilegeHandler = strolchPrivilegeHandler.getPrivilegeHandler();
privilegeHandler.removeUser(tx().getCertificate(), this.username); privilegeHandler.removeUser(tx().getCertificate(), this.username);
privilegeHandler.persist(tx().getCertificate()); if (privilegeHandler.isPersistOnUserDataChanged())
privilegeHandler.persist(tx().getCertificate());
Audit audit = tx().auditFrom(AccessType.DELETE, PRIVILEGE, USER, this.username); Audit audit = tx().auditFrom(AccessType.DELETE, PRIVILEGE, USER, this.username);
tx().getAuditTrail().add(tx(), audit); tx().getAuditTrail().add(tx(), audit);

View File

@ -51,11 +51,11 @@ public class PrivilegeSetUserLocaleService
tx.setSuppressAudits(true); tx.setSuppressAudits(true);
user = privilegeHandler.setUserLocale(getCertificate(), arg.username, arg.locale); user = privilegeHandler.setUserLocale(getCertificate(), arg.username, arg.locale);
privilegeHandler.persist(getCertificate()); if (privilegeHandler.isPersistOnUserDataChanged())
privilegeHandler.persist(getCertificate());
Audit audit = tx Audit audit = tx.auditFrom(AccessType.UPDATE, StrolchPrivilegeConstants.PRIVILEGE,
.auditFrom(AccessType.UPDATE, StrolchPrivilegeConstants.PRIVILEGE, StrolchPrivilegeConstants.USER, StrolchPrivilegeConstants.USER, user.getUsername());
user.getUsername());
tx.getAuditTrail().add(tx, audit); tx.getAuditTrail().add(tx, audit);
} }

View File

@ -45,20 +45,19 @@ public class PrivilegeSetUserPasswordService extends AbstractService<PrivilegeSe
try (StrolchTransaction tx = openArgOrUserTx(arg, PrivilegeHandler.PRIVILEGE_SET_USER_PASSWORD)) { try (StrolchTransaction tx = openArgOrUserTx(arg, PrivilegeHandler.PRIVILEGE_SET_USER_PASSWORD)) {
tx.setSuppressAudits(true); tx.setSuppressAudits(true);
li.strolch.runtime.privilege.PrivilegeHandler strolchPrivilegeHandler = getContainer() li.strolch.runtime.privilege.PrivilegeHandler strolchPrivilegeHandler = getContainer().getPrivilegeHandler();
.getPrivilegeHandler();
PrivilegeHandler privilegeHandler = strolchPrivilegeHandler.getPrivilegeHandler(); PrivilegeHandler privilegeHandler = strolchPrivilegeHandler.getPrivilegeHandler();
privilegeHandler.setUserPassword(getCertificate(), arg.username, arg.password); privilegeHandler.setUserPassword(getCertificate(), arg.username, arg.password);
// only persist if not setting own password // only persist if not setting own password
if (!getCertificate().getUsername().equals(arg.username) && getPrivilegeContext().getPrivilegeNames() if (!getCertificate().getUsername().equals(arg.username) && getPrivilegeContext().getPrivilegeNames()
.contains(PrivilegeHandler.PRIVILEGE_ACTION_PERSIST)) { .contains(PrivilegeHandler.PRIVILEGE_ACTION_PERSIST)) {
privilegeHandler.persist(getCertificate()); if (privilegeHandler.isPersistOnUserDataChanged())
privilegeHandler.persist(getCertificate());
} }
Audit audit = tx Audit audit = tx.auditFrom(AccessType.UPDATE, StrolchPrivilegeConstants.PRIVILEGE,
.auditFrom(AccessType.UPDATE, StrolchPrivilegeConstants.PRIVILEGE, StrolchPrivilegeConstants.USER, StrolchPrivilegeConstants.USER, arg.username);
arg.username);
tx.getAuditTrail().add(tx, audit); tx.getAuditTrail().add(tx, audit);
} }

View File

@ -56,10 +56,11 @@ public class PrivilegeSetUserPasswordStateService extends AbstractService<String
try (StrolchTransaction tx = openArgOrUserTx(arg, PRIVILEGE_SET_USER_PASSWORD)) { try (StrolchTransaction tx = openArgOrUserTx(arg, PRIVILEGE_SET_USER_PASSWORD)) {
tx.setSuppressAudits(true); tx.setSuppressAudits(true);
li.strolch.runtime.privilege.PrivilegeHandler strolchPrivilegeHandler = getContainer() li.strolch.runtime.privilege.PrivilegeHandler strolchPrivilegeHandler = getContainer().getPrivilegeHandler();
.getPrivilegeHandler();
PrivilegeHandler privilegeHandler = strolchPrivilegeHandler.getPrivilegeHandler(); PrivilegeHandler privilegeHandler = strolchPrivilegeHandler.getPrivilegeHandler();
privilegeHandler.requirePasswordChange(getCertificate(), username); privilegeHandler.requirePasswordChange(getCertificate(), username);
if (privilegeHandler.isPersistOnUserDataChanged())
privilegeHandler.persist(getCertificate());
Audit audit = tx.auditFrom(AccessType.UPDATE, PRIVILEGE, USER, username); Audit audit = tx.auditFrom(AccessType.UPDATE, PRIVILEGE, USER, username);
tx.getAuditTrail().add(tx, audit); tx.getAuditTrail().add(tx, audit);

View File

@ -50,11 +50,11 @@ public class PrivilegeSetUserStateService extends AbstractService<PrivilegeSetUs
tx.setSuppressAudits(true); tx.setSuppressAudits(true);
user = privilegeHandler.setUserState(getCertificate(), arg.username, arg.userState); user = privilegeHandler.setUserState(getCertificate(), arg.username, arg.userState);
privilegeHandler.persist(getCertificate()); if (privilegeHandler.isPersistOnUserDataChanged())
privilegeHandler.persist(getCertificate());
Audit audit = tx Audit audit = tx.auditFrom(AccessType.UPDATE, StrolchPrivilegeConstants.PRIVILEGE,
.auditFrom(AccessType.UPDATE, StrolchPrivilegeConstants.PRIVILEGE, StrolchPrivilegeConstants.USER, StrolchPrivilegeConstants.USER, user.getUsername());
user.getUsername());
tx.getAuditTrail().add(tx, audit); tx.getAuditTrail().add(tx, audit);
} }

View File

@ -80,6 +80,10 @@ public class PrivilegeUpdateUserRolesService extends AbstractService<JsonService
} }
if (changed) { if (changed) {
if (privilegeHandler.isPersistOnUserDataChanged())
privilegeHandler.persist(getCertificate());
Audit audit = tx.auditFrom(AccessType.UPDATE, StrolchPrivilegeConstants.PRIVILEGE, Audit audit = tx.auditFrom(AccessType.UPDATE, StrolchPrivilegeConstants.PRIVILEGE,
StrolchPrivilegeConstants.USER, user.getUsername()); StrolchPrivilegeConstants.USER, user.getUsername());
tx.getAuditTrail().add(tx, audit); tx.getAuditTrail().add(tx, audit);

View File

@ -50,11 +50,11 @@ public class PrivilegeUpdateUserService extends AbstractService<PrivilegeUserArg
tx.setSuppressAudits(true); tx.setSuppressAudits(true);
user = privilegeHandler.updateUser(getCertificate(), arg.user); user = privilegeHandler.updateUser(getCertificate(), arg.user);
privilegeHandler.persist(getCertificate()); if (privilegeHandler.isPersistOnUserDataChanged())
privilegeHandler.persist(getCertificate());
Audit audit = tx Audit audit = tx.auditFrom(AccessType.UPDATE, StrolchPrivilegeConstants.PRIVILEGE,
.auditFrom(AccessType.UPDATE, StrolchPrivilegeConstants.PRIVILEGE, StrolchPrivilegeConstants.USER, StrolchPrivilegeConstants.USER, user.getUsername());
user.getUsername());
tx.getAuditTrail().add(tx, audit); tx.getAuditTrail().add(tx, audit);
} }