"migrate" SERVER object also after receiving initial load, ensuring that a newly created server group is used for the SERVER object's group ownership

This commit is contained in:
Axel Uhl committed 2020-02-13 18:41:31 +01:00
1 parent 3a2a1c947a
commit d19bd2a7f3
5 files changed
+18 -7

No files matched your search

@@ -161,7 +161,6 @@ public class LocalServerManagementPanel extends SimplePanel {
final boolean hasUserOwner = ownership != null && ownership.getUserOwner() != null;
groupOwnerInfo.setText(hasGroupOwner ? ownership.getTenantOwner().getName() : "---");
userOwnerInfo.setText(hasUserOwner ? ownership.getUserOwner().getName() : "---");
// Update changeability
isSelfServiceServerCheckbox.setEnabled(userService.hasCurrentUserMetaPermission(
serverInfo.getIdentifier().getPermission(ServerActions.CREATE_OBJECT), serverInfo.getOwnership()));
@@ -172,7 +171,6 @@ public class LocalServerManagementPanel extends SimplePanel {
private void updateServerConfiguration(ServerConfigurationDTO result) {
isStandaloneServerCheckbox.setValue(result.isStandaloneServer(), false);
isStandaloneServerCheckbox.setEnabled(true);
isPublicServerCheckbox.setValue(result.isPublic(), false);
isSelfServiceServerCheckbox.setValue(result.isSelfService(), false);
}
@@ -271,7 +271,6 @@ public class UserService {
}
anonymousUser = resultAndAnomynous.getB();
serverInfo = resultAndAnomynous.getC();
preAuthenticated = (!userInitiallyLoaded && currentUser != null);
userInitiallyLoaded = true;
logger.info("User changed to "
@@ -535,6 +535,13 @@ public interface SecurityService extends ReplicableWithObjectInputStream<Replica
void migratePermission(User user, WildcardPermission permissionToMigrate,
Function<WildcardPermission, WildcardPermission> permissionReplacement);
/**
* If the {@link SecuredSecurityTypes#SERVER} object has a group ownership. If not, it is set to the
* {@link #getServerGroup() server group}. The {@link SecuredSecurityTypes#SERVER} type is then marked
* as migrated (see {@link #checkMigration(Iterable)}).
*/
void migrateServerObject();
void checkMigration(Iterable<HasPermissions> allInstances);
<T extends WithQualifiedObjectIdentifier> boolean hasCurrentUserRoleForOwnedObject(HasPermissions type, T object,
@@ -280,10 +280,7 @@ public class Activator implements BundleActivator {
}
}
}
final QualifiedObjectIdentifier serverIdentifier = SecuredSecurityTypes.SERVER
.getQualifiedObjectIdentifier(
new TypeRelativeObjectIdentifier(ServerInfo.getName()));
securityService.migrateOwnership(serverIdentifier, serverIdentifier.toString());
securityService.migrateServerObject();
securityService.checkMigration(SecuredSecurityTypes.getAllInstances());
}
@@ -2105,6 +2105,8 @@ public class SecurityServiceImpl implements ReplicableSecurityService, ClearStat
} finally {
Thread.currentThread().setContextClassLoader(oldCCL);
}
// now ensure that the SERVER object has a valid ownership; use the (potentially new) server group as the default:
migrateServerObject();
logger.info("Reading isSharedAcrossSubdomains...");
sharedAcrossSubdomainsOf = (String) is.readObject();
logger.info("...as "+sharedAcrossSubdomainsOf);
@@ -2251,6 +2253,14 @@ public class SecurityServiceImpl implements ReplicableSecurityService, ClearStat
return wasNecessaryToMigrate;
}
@Override
public void migrateServerObject() {
final QualifiedObjectIdentifier serverIdentifier = SecuredSecurityTypes.SERVER
.getQualifiedObjectIdentifier(
new TypeRelativeObjectIdentifier(ServerInfo.getName()));
migrateOwnership(serverIdentifier, serverIdentifier.toString());
}
@Override
public void checkMigration(Iterable<HasPermissions> allInstances) {
Class<? extends HasPermissions> clazz = Util.first(allInstances).getClass();