diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.java index 4d4d2eb907d..af46d2f88d0 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.java @@ -62,6 +62,7 @@ import com.evolveum.midpoint.task.api.Task; import com.evolveum.midpoint.task.api.TaskCategory; import com.evolveum.midpoint.task.api.TaskManager; +import com.evolveum.midpoint.util.CheckedProducer; import com.evolveum.midpoint.util.Holder; import com.evolveum.midpoint.util.Producer; import com.evolveum.midpoint.util.QNameUtil; @@ -2305,6 +2306,26 @@ public T runPrivileged(Producer producer) { return securityContextManager.runPrivileged(producer); } + public T runAsChecked(CheckedProducer producer, PrismObject user) throws CommonException { + return securityContextManager.runAsChecked(producer, user); + } + + @NotNull public PrismObject getAdministratorPrivileged(OperationResult parentResult) throws CommonException { + OperationResult result = parentResult.createSubresult(OPERATION_LOAD_USER); + try { + return securityContextManager.runPrivilegedChecked(() -> { + Task task = createAnonymousTask(OPERATION_LOAD_USER); + return getModelService() + .getObject(UserType.class, SystemObjectsType.USER_ADMINISTRATOR.value(), null, task, result); + }); + } catch (Throwable t) { + result.recordFatalError("Couldn't get administrator user: " + t.getMessage(), t); + throw t; + } finally { + result.computeStatusIfUnknown(); + } + } + public void setBreadcrumbs(List breadcrumbs) { getBreadcrumbs().clear(); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/boot/MidPointSpringApplication.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/boot/MidPointSpringApplication.java index fb9afa779c6..e352d0932d2 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/boot/MidPointSpringApplication.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/boot/MidPointSpringApplication.java @@ -185,7 +185,7 @@ private static SpringApplicationBuilder configureApplication(SpringApplicationBu System.setProperty(MIDPOINT_HOME_PROPERTY, mpHome); } - System.setProperty("spring.config.location", MidPointSpringApplication.class.getResource("/") + ",${midpoint.home}/"); + System.setProperty("spring.config.additional-location", "${midpoint.home}/"); application.bannerMode(Banner.Mode.LOG); @@ -267,6 +267,8 @@ public class ServerCustomization implements WebServerFactoryCustomizer * This could not be done with midPoint servlets or servlet filters. The entire * midPoint application is under /midpoint/, so the application won't even receive * requests to root URL. We need to use dirty Tomcat-specific tricks for this. - * - * @author semancik * + * @author semancik */ public class TomcatRootValve extends ValveBase { private static final Trace LOGGER = TraceManager.getTrace(TomcatRootValve.class); - + + private String servletPath; + + public TomcatRootValve(String serlvetPath) { + super(); + + this.servletPath = serlvetPath == null ? "" : serlvetPath; + } + @Override public void invoke(Request request, Response response) throws IOException, ServletException { - + Context context = request.getContext(); if (context instanceof RootRootContext) { String uri = request.getDecodedRequestURI(); if (uri.endsWith("favicon.ico")) { LOGGER.trace("Redirecting favicon request to real application (URI={})", request.getDecodedRequestURI()); - response.sendRedirect("/midpoint/favicon.ico"); + response.sendRedirect(servletPath + "/favicon.ico"); return; } else { LOGGER.trace("Redirecting request to real application root (URI={})", request.getDecodedRequestURI()); - response.sendRedirect("/midpoint/"); + response.sendRedirect(servletPath + "/"); return; } } - + getNext().invoke(request, response); } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerWrapper.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerWrapper.java index 1728c3b5648..7893095ec02 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerWrapper.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerWrapper.java @@ -230,6 +230,11 @@ static String getDisplayNameFromItem(Item item) { QName name = item.getElementName(); if (name != null) { displayName = name.getLocalPart(); + + PrismValue val = item.getParent(); + if (val != null && val.getTypeName() != null) { + displayName = val.getTypeName().getLocalPart() + "." + displayName; + } } else { displayName = item.getDefinition().getTypeName().getLocalPart(); } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/PageResource.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/PageResource.html index cfad081ed7d..643f46e9097 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/PageResource.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/PageResource.html @@ -24,7 +24,7 @@ -
+
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ShadowDetailsTabPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ShadowDetailsTabPanel.html new file mode 100644 index 00000000000..ac9191d8ebe --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ShadowDetailsTabPanel.html @@ -0,0 +1,26 @@ + + + + + +
+
+
+
+
+ + \ No newline at end of file diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ShadowDetailsTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ShadowDetailsTabPanel.java new file mode 100644 index 00000000000..9d4f406e176 --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ShadowDetailsTabPanel.java @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2010-2018 Evolveum + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.evolveum.midpoint.web.page.admin.resources; + +import com.evolveum.midpoint.gui.api.model.LoadableModel; +import com.evolveum.midpoint.gui.api.page.PageBase; +import com.evolveum.midpoint.prism.path.ItemPath; +import com.evolveum.midpoint.web.component.form.Form; +import com.evolveum.midpoint.web.component.objectdetails.AbstractObjectTabPanel; +import com.evolveum.midpoint.web.component.prism.ObjectWrapper; +import com.evolveum.midpoint.web.component.prism.PrismPanel; +import com.evolveum.midpoint.web.model.ContainerWrapperListFromObjectWrapperModel; +import com.evolveum.midpoint.xml.ns._public.common.common_3.CredentialsType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * Created by Viliam Repan (lazyman). + */ +public class ShadowDetailsTabPanel extends AbstractObjectTabPanel { + + private static final long serialVersionUID = 1L; + + private static final String ID_ACCOUNT = "account"; + + public ShadowDetailsTabPanel(String id, Form> mainForm, + LoadableModel> objectWrapperModel, PageBase pageBase) { + super(id, mainForm, objectWrapperModel, pageBase); + } + + @Override + protected void onInitialize() { + super.onInitialize(); + + PrismPanel panel = new PrismPanel<>(ID_ACCOUNT, + new ContainerWrapperListFromObjectWrapperModel(getObjectWrapperModel(), getVisibleContainers()), + null, getMainForm(), null, getPageBase()); + add(panel); + } + + private List getVisibleContainers() { + // todo maybe everything should be visible, but for now this should be fine + return Arrays.asList( + new ItemPath(ShadowType.F_ATTRIBUTES), + new ItemPath(ShadowType.F_CREDENTIALS, CredentialsType.F_PASSWORD), + new ItemPath(ShadowType.F_ACTIVATION) + ); + } +} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ShadowSummaryPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ShadowSummaryPanel.html new file mode 100644 index 00000000000..90f6c975190 --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ShadowSummaryPanel.html @@ -0,0 +1,24 @@ + + + + + + + + + + diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ShadowSummaryPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ShadowSummaryPanel.java new file mode 100644 index 00000000000..2454ca1ebce --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ShadowSummaryPanel.java @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2010-2018 Evolveum + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.evolveum.midpoint.web.page.admin.resources; + +import com.evolveum.midpoint.gui.api.GuiStyleConstants; +import com.evolveum.midpoint.gui.api.util.ModelServiceLocator; +import com.evolveum.midpoint.prism.PrismObject; +import com.evolveum.midpoint.web.component.ObjectSummaryPanel; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType; +import org.apache.wicket.model.IModel; + +/** + * Created by Viliam Repan (lazyman). + */ +public class ShadowSummaryPanel extends ObjectSummaryPanel { + + private static final long serialVersionUID = 1L; + + public ShadowSummaryPanel(String id, IModel> model, ModelServiceLocator locator) { + super(id, ShadowType.class, model, locator); + + initLayoutCommon(locator); + } + + @Override + protected void onBeforeRender() { + super.onBeforeRender(); + + + // todo implement custom layout + } + + @Override + protected String getIconCssClass() { + return GuiStyleConstants.CLASS_OBJECT_RESOURCE_ICON; //todo fix + } + + @Override + protected String getIconBoxAdditionalCssClass() { + return "summary-panel-resource"; //todo fix + } + + @Override + protected String getBoxAdditionalCssClass() { + return "summary-panel-resource"; //todo fix + } +} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/accept.png b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/accept.png deleted file mode 100644 index 89c8129a490..00000000000 Binary files a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/accept.png and /dev/null differ diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/arrow_refresh.png b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/arrow_refresh.png deleted file mode 100644 index 0de26566d41..00000000000 Binary files a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/arrow_refresh.png and /dev/null differ diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/arrow_refresh_gray.png b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/arrow_refresh_gray.png deleted file mode 100644 index 060ba7383b6..00000000000 Binary files a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/arrow_refresh_gray.png and /dev/null differ diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/content/PageAccount.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/content/PageAccount.html index 64ce94aca68..9bf7efe61d5 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/content/PageAccount.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/content/PageAccount.html @@ -18,15 +18,14 @@ -
-
-
+
+
-
-
-
-
-
+
+ + + +