[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)) {
tx.setSuppressAudits(true);
li.strolch.runtime.privilege.PrivilegeHandler strolchPrivilegeHandler = getContainer()
.getPrivilegeHandler();
li.strolch.runtime.privilege.PrivilegeHandler strolchPrivilegeHandler = getContainer().getPrivilegeHandler();
PrivilegeHandler privilegeHandler = strolchPrivilegeHandler.getPrivilegeHandler();
privilegeHandler.setUserPassword(getCertificate(), arg.username, null);
// only persist if not setting own password
if (!getCertificate().getUsername().equals(arg.username) && getPrivilegeContext().getPrivilegeNames()
.contains(PrivilegeHandler.PRIVILEGE_ACTION_PERSIST)) {
privilegeHandler.persist(getCertificate());
if (privilegeHandler.isPersistOnUserDataChanged())
privilegeHandler.persist(getCertificate());
}
Audit audit = tx
.auditFrom(AccessType.UPDATE, StrolchPrivilegeConstants.PRIVILEGE, StrolchPrivilegeConstants.USER,
arg.username);
Audit audit = tx.auditFrom(AccessType.UPDATE, StrolchPrivilegeConstants.PRIVILEGE,
StrolchPrivilegeConstants.USER, arg.username);
tx.getAuditTrail().add(tx, audit);
}

View File

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

View File

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

View File

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

View File

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

View File

@ -34,7 +34,8 @@ public class PrivilegeRemoveUserCommand extends Command {
PrivilegeHandler privilegeHandler = strolchPrivilegeHandler.getPrivilegeHandler();
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);
tx().getAuditTrail().add(tx(), audit);

View File

@ -51,11 +51,11 @@ public class PrivilegeSetUserLocaleService
tx.setSuppressAudits(true);
user = privilegeHandler.setUserLocale(getCertificate(), arg.username, arg.locale);
privilegeHandler.persist(getCertificate());
if (privilegeHandler.isPersistOnUserDataChanged())
privilegeHandler.persist(getCertificate());
Audit audit = tx
.auditFrom(AccessType.UPDATE, StrolchPrivilegeConstants.PRIVILEGE, StrolchPrivilegeConstants.USER,
user.getUsername());
Audit audit = tx.auditFrom(AccessType.UPDATE, StrolchPrivilegeConstants.PRIVILEGE,
StrolchPrivilegeConstants.USER, user.getUsername());
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)) {
tx.setSuppressAudits(true);
li.strolch.runtime.privilege.PrivilegeHandler strolchPrivilegeHandler = getContainer()
.getPrivilegeHandler();
li.strolch.runtime.privilege.PrivilegeHandler strolchPrivilegeHandler = getContainer().getPrivilegeHandler();
PrivilegeHandler privilegeHandler = strolchPrivilegeHandler.getPrivilegeHandler();
privilegeHandler.setUserPassword(getCertificate(), arg.username, arg.password);
// only persist if not setting own password
if (!getCertificate().getUsername().equals(arg.username) && getPrivilegeContext().getPrivilegeNames()
.contains(PrivilegeHandler.PRIVILEGE_ACTION_PERSIST)) {
privilegeHandler.persist(getCertificate());
if (privilegeHandler.isPersistOnUserDataChanged())
privilegeHandler.persist(getCertificate());
}
Audit audit = tx
.auditFrom(AccessType.UPDATE, StrolchPrivilegeConstants.PRIVILEGE, StrolchPrivilegeConstants.USER,
arg.username);
Audit audit = tx.auditFrom(AccessType.UPDATE, StrolchPrivilegeConstants.PRIVILEGE,
StrolchPrivilegeConstants.USER, arg.username);
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)) {
tx.setSuppressAudits(true);
li.strolch.runtime.privilege.PrivilegeHandler strolchPrivilegeHandler = getContainer()
.getPrivilegeHandler();
li.strolch.runtime.privilege.PrivilegeHandler strolchPrivilegeHandler = getContainer().getPrivilegeHandler();
PrivilegeHandler privilegeHandler = strolchPrivilegeHandler.getPrivilegeHandler();
privilegeHandler.requirePasswordChange(getCertificate(), username);
if (privilegeHandler.isPersistOnUserDataChanged())
privilegeHandler.persist(getCertificate());
Audit audit = tx.auditFrom(AccessType.UPDATE, PRIVILEGE, USER, username);
tx.getAuditTrail().add(tx, audit);

View File

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

View File

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

View File

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