Skip to content

Commit

Permalink
hide whole content when is used generic repo without active subscript…
Browse files Browse the repository at this point in the history
…ion in production use
  • Loading branch information
skublik committed Jan 26, 2024
1 parent 553c59a commit 7c4059f
Show file tree
Hide file tree
Showing 14 changed files with 131 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import com.evolveum.midpoint.gui.api.page.PageAdminLTE;

import com.evolveum.midpoint.gui.api.registry.GuiComponentRegistry;
import com.evolveum.midpoint.repo.common.subscription.SubscriptionState;
import com.evolveum.midpoint.schema.result.OperationResult;

import com.evolveum.midpoint.task.api.Task;
Expand Down Expand Up @@ -192,4 +193,8 @@ public WebApplicationConfiguration getWebApplicationConfiguration() {
public MidPointAuthWebSession getSession() {
return (MidPointAuthWebSession) super.getSession();
}

public SubscriptionState getSubscriptionState() {
return MidPointApplication.get().getSubscriptionState();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
import org.jetbrains.annotations.NotNull;

import com.evolveum.midpoint.util.logging.Trace;
Expand Down Expand Up @@ -144,4 +146,17 @@ public void show(@NotNull AjaxRequestTarget target) {
LOGGER.debug("Couldn't create toast", ex);
}
}

public void show(@NotNull IHeaderResponse response) {
try {
ObjectMapper mapper = new ObjectMapper();
String toast = mapper.writeValueAsString(this);

response.render(OnDomReadyHeaderItem.forScript("$(document).Toasts('create', " + toast + ");"));
} catch (Exception ex) {
response.render(OnDomReadyHeaderItem.forScript(
"console.error('Couldn't create toast, reason: " + ex.getMessage() + "');"));
LOGGER.debug("Couldn't create toast", ex);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -330,7 +330,7 @@ public String getDescribe() {

@Override
public String getObject() {
SubscriptionState subscription = MidPointApplication.get().getSubscriptionState();
SubscriptionState subscription = getSubscriptionState();
if (!subscription.isActive()) {
return " " + createStringResource("PageBase.nonActiveSubscriptionMessage").getString();
} else if (subscription.isDemo()) {
Expand All @@ -345,6 +345,10 @@ public String getObject() {
footerContainer.add(subscriptionMessage);
}

public SubscriptionState getSubscriptionState() {
return MidPointApplication.get().getSubscriptionState();
}

private VisibleEnableBehaviour getFooterVisibleBehaviour() {
return new VisibleEnableBehaviour() {
private static final long serialVersionUID = 1L;
Expand All @@ -357,7 +361,7 @@ public boolean isVisible() {
}

private boolean isFooterVisible() {
return MidPointApplication.get().getSubscriptionState().isInactiveOrDemo();
return getSubscriptionState().isInactiveOrDemo();
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@
<div wicket:id="mainPopup"/>
<div class="wrapper">
<div id="skip-link">
<a href="#main-content" class="btn-sm"><wicket:message key="Accessibility.PageBase.skiplink.title"/></a>
<a href="#main-content" class="btn-sm">
<wicket:message key="Accessibility.PageBase.skiplink.title"/>
</a>
</div>
<nav wicket:id="mainHeader" class="main-header navbar navbar-expand border-bottom-0">
<div class="navbar-nav">
Expand Down Expand Up @@ -83,12 +85,15 @@

<main class="content-wrapper" id="main-content" role="main" style="min-height: 916px; padding: 15px 0">
<section class="content">
<div class="container-fluid">
<div wicket:id="feedbackContainer" class="feedbackContainer">
<div wicket:id="feedback" class="messagePanel"/>
<wicket:enclosure child="contentVisible">
<div wicket:id="contentVisible"/>
<div class="container-fluid">
<div wicket:id="feedbackContainer" class="feedbackContainer">
<div wicket:id="feedback" class="messagePanel"/>
</div>
<wicket:child/>
</div>
<wicket:child/>
</div>
</wicket:enclosure>
</section>
</main>
<footer wicket:id="footerContainer" class="main-footer">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import java.util.*;
import javax.xml.namespace.QName;

import com.evolveum.midpoint.gui.api.component.result.Toast;
import com.evolveum.midpoint.gui.api.util.GuiDisplayTypeUtil;
import com.evolveum.midpoint.gui.impl.page.admin.abstractrole.component.TaskAwareExecutor;
import com.evolveum.midpoint.web.component.menu.top.LocaleTopMenuPanel;
Expand All @@ -23,6 +24,7 @@
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalDialog;
import org.apache.wicket.feedback.FeedbackMessage;
import org.apache.wicket.feedback.FeedbackMessages;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
Expand Down Expand Up @@ -100,6 +102,7 @@ public abstract class PageBase extends PageAdminLTE {
private static final String ID_PAGE_TITLE_CONTAINER = "pageTitleContainer";
private static final String ID_PAGE_TITLE_REAL = "pageTitleReal";
private static final String ID_PAGE_TITLE = "pageTitle";
public static final String ID_CONTENT_VISIBLE = "contentVisible";
public static final String ID_FEEDBACK_CONTAINER = "feedbackContainer";
private static final String ID_FEEDBACK = "feedback";
private static final String ID_CART_ITEMS_COUNT = "itemsCount";
Expand Down Expand Up @@ -132,6 +135,20 @@ public PageBase(PageParameters parameters) {
super(parameters);
}

@Override
public void renderHead(IHeaderResponse response) {
super.renderHead(response);

if (getSubscriptionState().isGenericRepoWithoutSubscription()) {
new Toast()
.warning()
.autohide(false)
.title(getString("PageBase.nonActiveSubscription"))
.body(getString("PageBase.nonActiveSubscriptionAndGenericRepo"))
.show(response);
}
}

@Override
protected void onInitialize() {
super.onInitialize();
Expand Down Expand Up @@ -420,6 +437,11 @@ public String getObject() {
sidebarMenu.add(createUserStatusBehaviour());
add(sidebarMenu);

WebMarkupContainer content = new WebMarkupContainer(ID_CONTENT_VISIBLE);
content.setOutputMarkupId(true);
content.add(new VisibleBehaviour(this::isContentVisible));
add(content);

WebMarkupContainer feedbackContainer = new WebMarkupContainer(ID_FEEDBACK_CONTAINER);
feedbackContainer.setOutputMarkupId(true);
feedbackContainer.setOutputMarkupPlaceholderTag(true);
Expand All @@ -436,6 +458,10 @@ public String getObject() {
add(mainPopup);
}

protected boolean isContentVisible() {
return !getSubscriptionState().isGenericRepoWithoutSubscription();
}

public static AttributeAppender createHeaderColorStyleModel(boolean checkSkinUsage) {
return AttributeAppender.append("style", () -> {
DeploymentInformationType info = MidPointApplication.get().getDeploymentInfo();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -535,7 +535,12 @@ private MainMenuItem createMarkItems() {
}

private SideBarMenuItem createConfigurationMenu(boolean experimentalFeaturesEnabled) {
SideBarMenuItem item = new SideBarMenuItem("PageAdmin.menu.top.configuration", experimentalFeaturesEnabled);
SideBarMenuItem item = new SideBarMenuItem("PageAdmin.menu.top.configuration", experimentalFeaturesEnabled) {
@Override
public boolean isVisible() {
return true;
}
};
item.addMainMenuItem(createArchetypesItems());
item.addMainMenuItem(createMessageTemplatesItems());
item.addMainMenuItem(createObjectsCollectionItems());
Expand Down Expand Up @@ -778,9 +783,15 @@ private boolean isObjectCollectionMenuActive(CompiledObjectCollectionView object
}

private void createSystemConfigurationMenu(SideBarMenuItem item) {
MainMenuItem system = createMainMenuItem("PageAdmin.menu.top.configuration.basic",
MainMenuItem system = new MainMenuItem(
"PageAdmin.menu.top.configuration.basic",
GuiStyleConstants.CLASS_SYSTEM_CONFIGURATION_ICON,
com.evolveum.midpoint.gui.impl.page.admin.systemconfiguration.PageSystemConfiguration.class);
com.evolveum.midpoint.gui.impl.page.admin.systemconfiguration.PageSystemConfiguration.class) {
@Override
public boolean isVisible() {
return true;
}
};
PageBase page = getPageBase();
if (page != null && PageBaseSystemConfiguration.class.isAssignableFrom(page.getClass())) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -168,4 +168,8 @@ private CompositedIconButtonDto createCompositedButton(String icon, Class<? exte
return button;
}

@Override
protected boolean isContentVisible() {
return true;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -170,4 +170,9 @@ protected boolean hasUnsavedChanges(AjaxRequestTarget target) {
}
};
}

@Override
protected boolean isContentVisible() {
return true;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,24 @@ public class BaseMenuItem implements Serializable {
*/
private boolean dynamic;

/**
* determine if item is visible
*/
private final boolean visibility;

public BaseMenuItem(String nameModel, String iconClass, Class<? extends WebPage> pageClass,
PageParameters params, Class<? extends WebPage>... aliases) {
PageParameters params, boolean visibility, Class<? extends WebPage>... aliases) {
this.aliases = aliases;
this.nameModel = nameModel;
this.pageClass = pageClass;
this.params = params;
this.iconClass = iconClass;
this.visibility = visibility;
}

public BaseMenuItem(String nameModel, String iconClass, Class<? extends WebPage> pageClass,
PageParameters params, Class<? extends WebPage>... aliases) {
this(nameModel, iconClass, pageClass, params, true, aliases);
}

public BaseMenuItem(String nameModel, String iconClass, Class<? extends WebPage> pageClass,
Expand All @@ -63,6 +74,7 @@ public BaseMenuItem(String nameModel, String iconClass, Class<? extends WebPage>

this.iconClass = iconClass;
this.active = active;
this.visibility = true;
}

/**
Expand Down Expand Up @@ -144,4 +156,8 @@ public void setDynamic(boolean dynamic) {
public boolean isDynamic() {
return dynamic;
}

public boolean isVisible() {
return visibility;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@

import com.evolveum.midpoint.authentication.api.authorization.PageDescriptor;

import com.evolveum.midpoint.repo.common.subscription.SubscriptionState;
import com.evolveum.midpoint.web.security.MidPointApplication;

import org.apache.wicket.markup.html.WebPage;

import com.evolveum.midpoint.gui.api.page.PageBase;
Expand Down Expand Up @@ -136,4 +139,8 @@ public MenuItem getFirstMenuItem() {
}
return null;
}

public boolean isVisible() {
return !MidPointApplication.get().getSubscriptionState().isGenericRepoWithoutSubscription();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
package com.evolveum.midpoint.web.component.menu;

import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.repo.common.subscription.SubscriptionState;
import com.evolveum.midpoint.web.security.MidPointApplication;

import java.io.Serializable;
import java.util.ArrayList;
Expand Down Expand Up @@ -78,4 +80,8 @@ public <MI extends BaseMenuItem> MI getActiveMenu(PageBase pageBase) {
return null;
}

public boolean isVisible() {
return !MidPointApplication.get().getSubscriptionState().isGenericRepoWithoutSubscription();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
import java.util.List;
import java.util.Map;

import com.evolveum.midpoint.web.component.util.VisibleBehaviour;

import org.apache.commons.io.IOUtils;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.Component;
Expand Down Expand Up @@ -186,6 +188,7 @@ public void bind(Component component) {
return getString(key, null, key);
});
header.add(name);
header.add(new VisibleBehaviour(() -> model.getObject().isVisible()));
return header;
}

Expand All @@ -202,6 +205,7 @@ protected boolean isMenuExpanded() {
};

item.setOutputMarkupId(true);
item.add(new VisibleBehaviour(() -> listItem.getModelObject().isVisible()));
listItem.add(item);
}
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -177,4 +177,9 @@ protected String getErrorMessageKey() {
protected void createBreadcrumb() {
//don't create breadcrumb for error page
}

@Override
protected boolean isContentVisible() {
return true;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,12 @@ public boolean isInactiveOrDemo() {
return !isActive() || isDemo();
}

/** Is used generic repo (other than H2) and we detect */
public boolean isGenericRepoWithoutSubscription() {
return getSystemFeatures().isGenericNonH2DatabaseUsed()
&& isProductionEnvironment() && !isActive();
}

/** Do we think we run in a production environment (regardless of the subscription ID present or not)? */
public boolean isProductionEnvironment() {
return productionEnvironment;
Expand Down

0 comments on commit 7c4059f

Please sign in to comment.