Adapt viewer preview controls to permission changes.

This commit is contained in:
Michael Lipp 2024-11-09 11:08:59 +00:00
parent a9c31a378e
commit abe06b4658
2 changed files with 12 additions and 13 deletions

View file

@ -31,6 +31,7 @@ import java.util.logging.Logger;
*/ */
public final class DataPath { public final class DataPath {
@SuppressWarnings("PMD.FieldNamingConventions")
private static final Logger logger private static final Logger logger
= Logger.getLogger(DataPath.class.getName()); = Logger.getLogger(DataPath.class.getName());

View file

@ -45,6 +45,7 @@ import java.util.Optional;
import java.util.ResourceBundle; import java.util.ResourceBundle;
import java.util.Set; import java.util.Set;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.stream.Collectors;
import org.bouncycastle.util.Objects; import org.bouncycastle.util.Objects;
import org.jdrupes.vmoperator.common.K8sObserver; import org.jdrupes.vmoperator.common.K8sObserver;
import org.jdrupes.vmoperator.common.VmDefinition; import org.jdrupes.vmoperator.common.VmDefinition;
@ -55,7 +56,6 @@ import org.jdrupes.vmoperator.manager.events.ModifyVm;
import org.jdrupes.vmoperator.manager.events.ResetVm; import org.jdrupes.vmoperator.manager.events.ResetVm;
import org.jdrupes.vmoperator.manager.events.VmChannel; import org.jdrupes.vmoperator.manager.events.VmChannel;
import org.jdrupes.vmoperator.manager.events.VmDefChanged; import org.jdrupes.vmoperator.manager.events.VmDefChanged;
import org.jdrupes.vmoperator.util.DataPath;
import org.jgrapes.core.Channel; import org.jgrapes.core.Channel;
import org.jgrapes.core.Components; import org.jgrapes.core.Components;
import org.jgrapes.core.Event; import org.jgrapes.core.Event;
@ -123,7 +123,7 @@ public class VmViewer extends FreeMarkerConlet<VmViewer.ViewerModel> {
private static ObjectMapper objectMapper private static ObjectMapper objectMapper
= new ObjectMapper().registerModule(new JavaTimeModule()); = new ObjectMapper().registerModule(new JavaTimeModule());
private Class<?> preferredIpVersion = Inet4Address.class; private Class<?> preferredIpVersion = Inet4Address.class;
private final Set<String> syncUsers = new HashSet<>(); private Set<String> syncUsers = new HashSet<>();
private final Set<String> syncRoles = new HashSet<>(); private final Set<String> syncRoles = new HashSet<>();
private boolean deleteConnectionFile = true; private boolean deleteConnectionFile = true;
@ -173,15 +173,12 @@ public class VmViewer extends FreeMarkerConlet<VmViewer.ViewerModel> {
.filter(v -> v instanceof String).map(v -> (String) v) .filter(v -> v instanceof String).map(v -> (String) v)
.map(Boolean::parseBoolean).orElse(true); .map(Boolean::parseBoolean).orElse(true);
// Sync // Sync preview for users or roles
for (var entry : (List<Map<String, String>>) c.getOrDefault( syncUsers = ((List<Map<String, String>>) c.getOrDefault(
"syncPreviewsFor", Collections.emptyList())) { "syncPreviewsFor", Collections.emptyList())).stream()
if (entry.containsKey("user")) { .map(m -> Optional.ofNullable(m.get("user"))
syncUsers.add(entry.get("user")); .orElse(m.get("role")))
} else if (entry.containsKey("role")) { .filter(s -> s != null).collect(Collectors.toSet());
syncRoles.add(entry.get("role"));
}
}
} catch (ClassCastException e) { } catch (ClassCastException e) {
logger.config("Malformed configuration: " + e.getMessage()); logger.config("Malformed configuration: " + e.getMessage());
} }
@ -367,8 +364,9 @@ public class VmViewer extends FreeMarkerConlet<VmViewer.ViewerModel> {
fmModel(event, channel, conletId, model))) fmModel(event, channel, conletId, model)))
.setRenderAs( .setRenderAs(
RenderMode.Preview.addModifiers(event.renderAs())) RenderMode.Preview.addModifiers(event.renderAs()))
.setSupportedModes( .setSupportedModes(syncPreviews(channel.session())
model.isGenerated() ? MODES_FOR_GENERATED : MODES)); ? MODES_FOR_GENERATED
: MODES));
renderedAs.add(RenderMode.Preview); renderedAs.add(RenderMode.Preview);
if (!Strings.isNullOrEmpty(model.vmName())) { if (!Strings.isNullOrEmpty(model.vmName())) {
Optional.ofNullable(channel.session().get(RENDERED)) Optional.ofNullable(channel.session().get(RENDERED))