You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2018/03/16 16:50:58 UTC
[1/4] syncope git commit: [SYNCOPE-1281] Console support implemented
Repository: syncope
Updated Branches:
refs/heads/master 3b884e0c1 -> 73f7e0f24
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/fit/core-reference/src/test/java/org/apache/syncope/fit/console/SecurityQuestionsITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/SecurityQuestionsITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/SecurityQuestionsITCase.java
index 4a06ea1..aa9658b 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/SecurityQuestionsITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/SecurityQuestionsITCase.java
@@ -24,7 +24,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
import org.apache.syncope.client.console.commons.Constants;
-import org.apache.syncope.client.console.pages.SecurityQuestions;
+import org.apache.syncope.client.console.pages.Security;
import org.apache.wicket.Component;
import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxLink;
import org.apache.wicket.markup.html.basic.Label;
@@ -37,42 +37,44 @@ public class SecurityQuestionsITCase extends AbstractConsoleITCase {
@BeforeEach
public void login() {
doLogin(ADMIN_UNAME, ADMIN_PWD);
- TESTER.clickLink("body:configurationLI:configurationUL:securityquestionsLI:securityquestions");
- TESTER.assertRenderedPage(SecurityQuestions.class);
+ TESTER.clickLink("body:configurationLI:configurationUL:securityLI:security");
+ TESTER.assertRenderedPage(Security.class);
+ TESTER.clickLink("body:content:tabbedPanel:tabs-container:tabs:3:link");
}
private void createSecurityQuestion(final String name) {
- TESTER.clickLink("body:content:securityQuestionPanel:container:content:add");
+ TESTER.clickLink("body:content:tabbedPanel:panel:container:content:add");
TESTER.assertComponent(
- "body:content:securityQuestionPanel:outerObjectsRepeater:0:outer", Modal.class);
+ "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer", Modal.class);
FormTester formTester = TESTER.newFormTester(
- "body:content:securityQuestionPanel:outerObjectsRepeater:0:outer:form");
+ "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:form");
formTester.setValue("content:securityQuestionDetailsPanel:container:form:content:textField",
name);
TESTER.clickLink(
- "body:content:securityQuestionPanel:outerObjectsRepeater:0:outer:dialog:footer:inputs:0:submit");
+ "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:dialog:footer:inputs:0:submit");
TESTER.assertInfoMessages("Operation executed successfully");
TESTER.cleanupFeedbackMessages();
- TESTER.clickLink("body:configurationLI:configurationUL:securityquestionsLI:securityquestions");
+ TESTER.clickLink("body:configurationLI:configurationUL:securityLI:security");
+ TESTER.clickLink("body:content:tabbedPanel:tabs-container:tabs:3:link");
}
@Test
public void read() {
Label label = (Label) TESTER.getComponentFromLastRenderedPage(
- "body:content:securityQuestionPanel:container:content:searchContainer:resultTable:"
+ "body:content:tabbedPanel:panel:container:content:searchContainer:resultTable:"
+ "tablePanel:groupForm:checkgroup:dataTable:body:rows:1:cells:2:cell");
assertTrue(label.getDefaultModelObjectAsString().startsWith("What's your "));
- TESTER.executeAjaxEvent("body:content:securityQuestionPanel:container:content:searchContainer:resultTable:"
+ TESTER.executeAjaxEvent("body:content:tabbedPanel:panel:container:content:searchContainer:resultTable:"
+ "tablePanel:groupForm:checkgroup:dataTable:body:rows:1", Constants.ON_CLICK);
TESTER.assertComponent(
- "body:content:securityQuestionPanel:outerObjectsRepeater:1:outer:container:content:"
+ "body:content:tabbedPanel:panel:outerObjectsRepeater:1:outer:container:content:"
+ "togglePanelContainer:container:actions:actions:actionRepeater:0:action:action",
IndicatingAjaxLink.class);
}
@@ -85,23 +87,23 @@ public class SecurityQuestionsITCase extends AbstractConsoleITCase {
@Test
public void update() {
createSecurityQuestion("What's your preferred color?");
- Component result = findComponentByProp("content", "body:content:securityQuestionPanel:container:content:"
+ Component result = findComponentByProp("content", "body:content:tabbedPanel:panel:container:content:"
+ "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable",
"What's your preferred color?");
assertNotNull(result);
TESTER.executeAjaxEvent(result.getPageRelativePath(), Constants.ON_CLICK);
- TESTER.clickLink("body:content:securityQuestionPanel:outerObjectsRepeater:1:outer:container:content:"
+ TESTER.clickLink("body:content:tabbedPanel:panel:outerObjectsRepeater:1:outer:container:content:"
+ "togglePanelContainer:container:actions:actions:actionRepeater:0:action:action");
FormTester formTester = TESTER.newFormTester(
- "body:content:securityQuestionPanel:outerObjectsRepeater:0:outer:form");
+ "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:form");
formTester.setValue("content:securityQuestionDetailsPanel:container:form:content:textField",
"What's your preferred car?");
TESTER.clickLink(
- "body:content:securityQuestionPanel:outerObjectsRepeater:0:outer:dialog:footer:inputs:0:submit");
+ "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:dialog:footer:inputs:0:submit");
TESTER.assertInfoMessages("Operation executed successfully");
TESTER.cleanupFeedbackMessages();
@@ -112,25 +114,25 @@ public class SecurityQuestionsITCase extends AbstractConsoleITCase {
String name = "What's your preferred color?";
createSecurityQuestion(name);
- Component result = findComponentByProp("content", "body:content:securityQuestionPanel:container:content:"
+ Component result = findComponentByProp("content", "body:content:tabbedPanel:panel:container:content:"
+ "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable",
name);
assertNotNull(result);
TESTER.executeAjaxEvent(result.getPageRelativePath(), Constants.ON_CLICK);
TESTER.getRequest().addParameter("confirm", "true");
- TESTER.clickLink("body:content:securityQuestionPanel:outerObjectsRepeater:1:outer:container:content:"
+ TESTER.clickLink("body:content:tabbedPanel:panel:outerObjectsRepeater:1:outer:container:content:"
+ "togglePanelContainer:container:actions:actions:actionRepeater:1:action:action");
TESTER.executeAjaxEvent(TESTER.getComponentFromLastRenderedPage(
- "body:content:securityQuestionPanel:outerObjectsRepeater:1:outer:container:content:"
+ "body:content:tabbedPanel:panel:outerObjectsRepeater:1:outer:container:content:"
+ "togglePanelContainer:container:actions:actions:actionRepeater:1:action:action"), "onclick");
TESTER.assertInfoMessages("Operation executed successfully");
TESTER.cleanupFeedbackMessages();
assertNull(findComponentByProp("content",
- "body:content:securityQuestionPanel:container:content:"
+ "body:content:tabbedPanel:panel:container:content:"
+ "searchContainer:resultTable:"
+ "tablePanel:groupForm:checkgroup:dataTable", name));
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ApplicationITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ApplicationITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ApplicationITCase.java
index 5cc79b0..74b21be 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ApplicationITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ApplicationITCase.java
@@ -25,7 +25,6 @@ import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;
-import java.util.Base64;
import java.util.UUID;
import java.util.stream.Collectors;
import javax.ws.rs.core.Response;
@@ -67,20 +66,17 @@ public class ApplicationITCase extends AbstractITCase {
PrivilegeTO privilegeTO = new PrivilegeTO();
privilegeTO.setKey(UUID.randomUUID().toString());
- privilegeTO.setSpecMimeType("application/xml");
- privilegeTO.setSpec(Base64.getEncoder().encodeToString("<one/>".getBytes()));
+ privilegeTO.setSpec("{ \"one\": true }");
application.getPrivileges().add(privilegeTO);
privilegeTO = new PrivilegeTO();
privilegeTO.setKey(UUID.randomUUID().toString());
- privilegeTO.setSpecMimeType("application/xml");
- privilegeTO.setSpec(Base64.getEncoder().encodeToString("<one><two/></one>".getBytes()));
+ privilegeTO.setSpec("{ \"two\": true }");
application.getPrivileges().add(privilegeTO);
privilegeTO = new PrivilegeTO();
privilegeTO.setKey(UUID.randomUUID().toString());
- privilegeTO.setSpecMimeType("application/xml");
- privilegeTO.setSpec(Base64.getEncoder().encodeToString("<one><two><three/></two></one>".getBytes()));
+ privilegeTO.setSpec("{ \"three\": true }");
application.getPrivileges().add(privilegeTO);
Response response = applicationService.create(application);
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/fit/core-reference/src/test/resources/console.properties
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/resources/console.properties b/fit/core-reference/src/test/resources/console.properties
index 43ee365..4d39cf0 100644
--- a/fit/core-reference/src/test/resources/console.properties
+++ b/fit/core-reference/src/test/resources/console.properties
@@ -37,15 +37,15 @@ flowableModelerDirectory=${flowable-modeler.directory}
reconciliationReportKey=c3520ad9-179f-49e7-b315-d684d216dd97
-page.administration=org.apache.syncope.client.console.pages.Administration
page.dashboard=org.apache.syncope.client.console.pages.Dashboard
page.realms=org.apache.syncope.client.console.pages.Realms
page.topology=org.apache.syncope.client.console.topology.Topology
page.reports=org.apache.syncope.client.console.pages.Reports
page.workflow=org.apache.syncope.client.console.pages.Workflow
page.audit=org.apache.syncope.client.console.pages.Audit
+page.implementations=org.apache.syncope.client.console.pages.Implementations
page.logs=org.apache.syncope.client.console.pages.Logs
-page.securityquestions=org.apache.syncope.client.console.pages.SecurityQuestions
+page.security=org.apache.syncope.client.console.pages.Security
page.types=org.apache.syncope.client.console.pages.Types
page.policies=org.apache.syncope.client.console.pages.Policies
page.notifications=org.apache.syncope.client.console.pages.Notifications
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 16c9e8b..d2a711d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -386,7 +386,7 @@ under the License.
<flowable.version>6.2.1</flowable.version>
- <camel.version>2.21.0</camel.version>
+ <camel.version>2.20.2</camel.version>
<slf4j.version>1.7.25</slf4j.version>
<opensaml.version>3.3.0</opensaml.version>
@@ -2209,8 +2209,8 @@ under the License.
<link>http://fasterxml.github.io/jackson-dataformat-xml/javadoc/2.9/</link>
<link>http://fasterxml.github.io/jackson-dataformat-yaml/javadoc/2.9.pr1/</link>
<link>http://fasterxml.github.io/jackson-datatype-joda/javadoc/2.9/</link>
- <link>http://www.javadoc.io/doc/org.apache.camel/camel-core/2.21.0/</link>
- <link>http://www.javadoc.io/doc/org.apache.camel/camel-spring/2.21.0/</link>
+ <link>http://www.javadoc.io/doc/org.apache.camel/camel-core/2.20.2/</link>
+ <link>http://www.javadoc.io/doc/org.apache.camel/camel-spring/2.20.2/</link>
<link>https://ci.apache.org/projects/wicket/apidocs/8.x/</link>
<link>https://commons.apache.org/proper/commons-lang/javadocs/api-release/</link>
<link>https://commons.apache.org/proper/commons-io/javadocs/api-2.6/</link>
[3/4] syncope git commit: [SYNCOPE-1281] Console support implemented
Posted by il...@apache.org.
[SYNCOPE-1281] Console support implemented
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/72c5885d
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/72c5885d
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/72c5885d
Branch: refs/heads/master
Commit: 72c5885d989528188c0d7f7c27185f4ea5939fff
Parents: 3b884e0
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Fri Mar 16 17:34:34 2018 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Fri Mar 16 17:34:34 2018 +0100
----------------------------------------------------------------------
.../client/console/commons/Constants.java | 4 +
.../client/console/pages/Administration.java | 83 ------
.../syncope/client/console/pages/BasePage.java | 19 +-
.../syncope/client/console/pages/Security.java | 110 ++++++++
.../client/console/pages/SecurityQuestions.java | 45 ----
.../panels/ApplicationDirectoryPanel.java | 266 +++++++++++++++++++
.../console/panels/ApplicationModalPanel.java | 91 +++++++
.../console/panels/DynRealmDirectoryPanel.java | 28 +-
.../console/panels/DynRealmModalPanel.java | 1 -
.../console/panels/PrivilegeDirectoryPanel.java | 184 +++++++++++++
.../console/panels/PrivilegeWizardBuilder.java | 101 +++++++
.../console/panels/RoleDirectoryPanel.java | 2 +
.../console/panels/SecurityQuestionsPanel.java | 1 +
.../panels/search/AbstractSearchPanel.java | 12 +-
.../console/panels/search/SearchClause.java | 1 +
.../panels/search/SearchClausePanel.java | 23 +-
.../console/panels/search/SearchUtils.java | 20 ++
.../console/panels/search/UserSearchPanel.java | 16 ++
.../policies/PolicyRuleDirectoryPanel.java | 2 +-
.../console/rest/ApplicationRestClient.java | 49 ++++
.../console/widgets/CompletenessWidget.java | 11 +-
.../client/console/widgets/NumberWidget.java | 4 +-
.../console/wizards/role/RoleWizardBuilder.java | 17 ++
.../src/main/resources/console.properties | 3 +-
.../SyncopeConsoleApplication.properties | 3 +-
.../SyncopeConsoleApplication_it.properties | 3 +-
.../SyncopeConsoleApplication_ja.properties | 3 +-
.../SyncopeConsoleApplication_pt_BR.properties | 3 +-
.../SyncopeConsoleApplication_ru.properties | 3 +-
.../client/console/pages/Administration.html | 36 ---
.../console/pages/Administration.properties | 18 --
.../console/pages/Administration_it.properties | 18 --
.../console/pages/Administration_ja.properties | 18 --
.../pages/Administration_pt_BR.properties | 18 --
.../console/pages/Administration_ru.properties | 20 --
.../syncope/client/console/pages/BasePage.html | 3 +-
.../syncope/client/console/pages/Security.html | 36 +++
.../client/console/pages/Security.properties | 21 ++
.../client/console/pages/SecurityQuestions.html | 36 ---
.../console/pages/SecurityQuestions.properties | 18 --
.../pages/SecurityQuestions_it.properties | 18 --
.../pages/SecurityQuestions_ja.properties | 18 --
.../pages/SecurityQuestions_pt_BR.properties | 18 --
.../pages/SecurityQuestions_ru.properties | 20 --
.../client/console/pages/Security_it.properties | 21 ++
.../client/console/pages/Security_ja.properties | 21 ++
.../console/pages/Security_pt_BR.properties | 21 ++
.../client/console/pages/Security_ru.properties | 22 ++
.../panels/ApplicationDirectoryPanel.properties | 21 ++
.../ApplicationDirectoryPanel_it.properties | 21 ++
.../ApplicationDirectoryPanel_ja.properties | 21 ++
.../ApplicationDirectoryPanel_pt_BR.properties | 21 ++
.../ApplicationDirectoryPanel_ru.properties | 22 ++
.../console/panels/ApplicationModalPanel.html | 26 ++
.../panels/PrivilegeDirectoryPanel.properties | 18 ++
.../PrivilegeDirectoryPanel_it.properties | 18 ++
.../PrivilegeDirectoryPanel_ja.properties | 18 ++
.../PrivilegeDirectoryPanel_pt_BR.properties | 18 ++
.../PrivilegeDirectoryPanel_ru.properties | 18 ++
.../panels/PrivilegeWizardBuilder$Profile.html | 26 ++
.../panels/PrivilegeWizardBuilder$Spec.html | 25 ++
.../panels/SecurityQuestionsPanel.properties | 1 +
.../panels/SecurityQuestionsPanel_it.properties | 1 +
.../panels/SecurityQuestionsPanel_ja.properties | 1 +
.../SecurityQuestionsPanel_pt_BR.properties | 1 +
.../panels/SecurityQuestionsPanel_ru.properties | 3 +-
.../wizards/role/RoleWizardBuilder$Details.html | 15 +-
.../role/RoleWizardBuilder$DynRealms.html | 13 +-
.../role/RoleWizardBuilder$Entitlements.html | 13 +-
.../role/RoleWizardBuilder$Privileges.html | 25 ++
.../wizards/role/RoleWizardBuilder$Realms.html | 13 +-
.../syncope/common/lib/to/PrivilegeTO.java | 10 -
.../core/persistence/api/entity/Privilege.java | 8 +-
.../persistence/jpa/entity/JPAPrivilege.java | 23 +-
.../persistence/jpa/inner/ApplicationTest.java | 9 +-
.../test/resources/domains/MasterContent.xml | 6 +-
.../java/data/ApplicationDataBinderImpl.java | 7 +-
.../src/main/resources/console.properties | 4 +-
.../syncope/fit/console/AjaxBrowseITCase.java | 10 +-
.../apache/syncope/fit/console/RolesITCase.java | 11 +-
.../fit/console/SecurityQuestionsITCase.java | 40 +--
.../syncope/fit/core/ApplicationITCase.java | 10 +-
.../src/test/resources/console.properties | 4 +-
pom.xml | 6 +-
84 files changed, 1455 insertions(+), 561 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/java/org/apache/syncope/client/console/commons/Constants.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/commons/Constants.java b/client/console/src/main/java/org/apache/syncope/client/console/commons/Constants.java
index c71fdbc..e0f70c4 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/commons/Constants.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/commons/Constants.java
@@ -109,6 +109,10 @@ public final class Constants {
public static final String PREF_ROLE_PAGINATOR_ROWS = "role.paginator.rows";
+ public static final String PREF_APPLICATION_PAGINATOR_ROWS = "application.paginator.rows";
+
+ public static final String PREF_PRIVILEGE_PAGINATOR_ROWS = "privilege.paginator.rows";
+
public static final String PREF_DYNREALM_PAGINATOR_ROWS = "dynRealm.paginator.rows";
public static final String PREF_ACCESS_TOKEN_PAGINATOR_ROWS = "accessToken.paginator.rows";
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/java/org/apache/syncope/client/console/pages/Administration.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/Administration.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/Administration.java
deleted file mode 100644
index 6f4423f..0000000
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/Administration.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 org.apache.syncope.client.console.pages;
-
-import de.agilecoders.wicket.core.markup.html.bootstrap.tabs.AjaxBootstrapTabbedPanel;
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.syncope.client.console.BookmarkablePageLinkBuilder;
-import org.apache.syncope.client.console.panels.DynRealmDirectoryPanel;
-import org.apache.syncope.client.console.panels.RoleDirectoryPanel;
-import org.apache.syncope.client.console.wizards.role.RoleWizardBuilder;
-import org.apache.syncope.common.lib.to.RoleTO;
-import org.apache.wicket.extensions.markup.html.tabs.AbstractTab;
-import org.apache.wicket.extensions.markup.html.tabs.ITab;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
-
-public class Administration extends BasePage {
-
- private static final long serialVersionUID = -1100228004207271271L;
-
- public Administration(final PageParameters parameters) {
- super(parameters);
-
- body.add(BookmarkablePageLinkBuilder.build("dashboard", "dashboardBr", Dashboard.class));
- WebMarkupContainer content = new WebMarkupContainer("content");
- content.setOutputMarkupId(true);
- content.setMarkupId("administration");
- content.add(new AjaxBootstrapTabbedPanel<>("tabbedPanel", buildTabList()));
- body.add(content);
- }
-
- private List<ITab> buildTabList() {
- final List<ITab> tabs = new ArrayList<>();
-
- tabs.add(new AbstractTab(new ResourceModel("roles")) {
-
- private static final long serialVersionUID = -6815067322125799251L;
-
- @Override
- public Panel getPanel(final String panelId) {
- return new RoleDirectoryPanel.Builder(getPageReference()) {
-
- private static final long serialVersionUID = -5960765294082359003L;
-
- }.addNewItemPanelBuilder(new RoleWizardBuilder(new RoleTO(), getPageReference()), true).build(panelId);
- }
- });
-
- tabs.add(new AbstractTab(new ResourceModel("dynRealms")) {
-
- private static final long serialVersionUID = -6815067322125799251L;
-
- @Override
- public Panel getPanel(final String panelId) {
- return new DynRealmDirectoryPanel.Builder(getPageReference()) {
-
- private static final long serialVersionUID = -5960765294082359003L;
-
- }.build(panelId);
- }
- });
- return tabs;
- }
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
index ebb14f2..9aa8fa1 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
@@ -207,26 +207,19 @@ public class BasePage extends WebPage implements IAjaxIndicatorAware {
MetaDataRoleAuthorizationStrategy.authorize(link, WebPage.RENDER, StandardEntitlement.LOG_LIST);
liContainer.add(link);
- liContainer = new WebMarkupContainer(getLIContainerId("securityquestions"));
- confULContainer.add(liContainer);
- bld = new StringBuilder();
- bld.append(StandardEntitlement.SECURITY_QUESTION_CREATE).append(",").
- append(StandardEntitlement.SECURITY_QUESTION_DELETE).append(",").
- append(StandardEntitlement.SECURITY_QUESTION_UPDATE);
- link = BookmarkablePageLinkBuilder.build("securityquestions", SecurityQuestions.class);
- MetaDataRoleAuthorizationStrategy.authorize(link, WebPage.RENDER, bld.toString());
- liContainer.add(link);
-
liContainer = new WebMarkupContainer(getLIContainerId("types"));
confULContainer.add(liContainer);
link = BookmarkablePageLinkBuilder.build("types", Types.class);
MetaDataRoleAuthorizationStrategy.authorize(link, WebPage.RENDER, StandardEntitlement.SCHEMA_LIST);
liContainer.add(link);
- liContainer = new WebMarkupContainer(getLIContainerId("administration"));
+ liContainer = new WebMarkupContainer(getLIContainerId("security"));
confULContainer.add(liContainer);
- link = BookmarkablePageLinkBuilder.build("administration", Administration.class);
- MetaDataRoleAuthorizationStrategy.authorize(link, WebPage.RENDER, StandardEntitlement.ROLE_LIST);
+ link = BookmarkablePageLinkBuilder.build("security", Security.class);
+ bld = new StringBuilder();
+ bld.append(StandardEntitlement.ROLE_LIST).append(",").
+ append(StandardEntitlement.APPLICATION_LIST);
+ MetaDataRoleAuthorizationStrategy.authorize(link, WebPage.RENDER, bld.toString());
liContainer.add(link);
liContainer = new WebMarkupContainer(getLIContainerId("policies"));
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/java/org/apache/syncope/client/console/pages/Security.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/Security.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/Security.java
new file mode 100644
index 0000000..56efb31
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/Security.java
@@ -0,0 +1,110 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.syncope.client.console.pages;
+
+import de.agilecoders.wicket.core.markup.html.bootstrap.tabs.AjaxBootstrapTabbedPanel;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.syncope.client.console.BookmarkablePageLinkBuilder;
+import org.apache.syncope.client.console.panels.ApplicationDirectoryPanel;
+import org.apache.syncope.client.console.panels.DynRealmDirectoryPanel;
+import org.apache.syncope.client.console.panels.RoleDirectoryPanel;
+import org.apache.syncope.client.console.panels.SecurityQuestionsPanel;
+import org.apache.syncope.client.console.wizards.role.RoleWizardBuilder;
+import org.apache.syncope.common.lib.to.RoleTO;
+import org.apache.wicket.extensions.markup.html.tabs.AbstractTab;
+import org.apache.wicket.extensions.markup.html.tabs.ITab;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.ResourceModel;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+
+public class Security extends BasePage {
+
+ private static final long serialVersionUID = -1100228004207271271L;
+
+ public Security(final PageParameters parameters) {
+ super(parameters);
+
+ body.add(BookmarkablePageLinkBuilder.build("dashboard", "dashboardBr", Dashboard.class));
+ WebMarkupContainer content = new WebMarkupContainer("content");
+ content.setOutputMarkupId(true);
+ content.setMarkupId("security");
+ content.add(new AjaxBootstrapTabbedPanel<>("tabbedPanel", buildTabList()));
+ body.add(content);
+ }
+
+ private List<ITab> buildTabList() {
+ final List<ITab> tabs = new ArrayList<>();
+
+ tabs.add(new AbstractTab(new ResourceModel("roles")) {
+
+ private static final long serialVersionUID = -6815067322125799251L;
+
+ @Override
+ public Panel getPanel(final String panelId) {
+ return new RoleDirectoryPanel.Builder(getPageReference()) {
+
+ private static final long serialVersionUID = -5960765294082359003L;
+
+ }.addNewItemPanelBuilder(new RoleWizardBuilder(new RoleTO(), getPageReference()), true).build(panelId);
+ }
+ });
+
+ tabs.add(new AbstractTab(new ResourceModel("dynRealms")) {
+
+ private static final long serialVersionUID = -6815067322125799251L;
+
+ @Override
+ public Panel getPanel(final String panelId) {
+ return new DynRealmDirectoryPanel.Builder(getPageReference()) {
+
+ private static final long serialVersionUID = -5960765294082359003L;
+
+ }.build(panelId);
+ }
+ });
+
+ tabs.add(new AbstractTab(new ResourceModel("applications")) {
+
+ private static final long serialVersionUID = -6815067322125799251L;
+
+ @Override
+ public Panel getPanel(final String panelId) {
+ return new ApplicationDirectoryPanel.Builder(getPageReference()) {
+
+ private static final long serialVersionUID = -5960765294082359003L;
+
+ }.build(panelId);
+ }
+ });
+
+ tabs.add(new AbstractTab(new ResourceModel("securityQuestions")) {
+
+ private static final long serialVersionUID = -6815067322125799251L;
+
+ @Override
+ public Panel getPanel(final String panelId) {
+ return new SecurityQuestionsPanel(panelId, getPageReference());
+ }
+ });
+
+ return tabs;
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/java/org/apache/syncope/client/console/pages/SecurityQuestions.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/SecurityQuestions.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/SecurityQuestions.java
deleted file mode 100644
index dd34c1b..0000000
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/SecurityQuestions.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 org.apache.syncope.client.console.pages;
-
-import org.apache.syncope.client.console.BookmarkablePageLinkBuilder;
-import org.apache.syncope.client.console.panels.SecurityQuestionsPanel;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
-
-public class SecurityQuestions extends BasePage {
-
- private static final long serialVersionUID = 931085006718655535L;
-
- public SecurityQuestions(final PageParameters parameters) {
- super(parameters);
-
- body.add(BookmarkablePageLinkBuilder.build("dashboard", "dashboardBr", Dashboard.class));
-
- WebMarkupContainer content = new WebMarkupContainer("content");
- content.setOutputMarkupId(true);
- body.add(content);
-
- SecurityQuestionsPanel securityQuestionsPanel =
- new SecurityQuestionsPanel("securityQuestionPanel", getPageReference());
- securityQuestionsPanel.setOutputMarkupId(true);
-
- content.add(securityQuestionsPanel);
- }
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/java/org/apache/syncope/client/console/panels/ApplicationDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ApplicationDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ApplicationDirectoryPanel.java
new file mode 100644
index 0000000..ba9e033
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ApplicationDirectoryPanel.java
@@ -0,0 +1,266 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.syncope.client.console.panels;
+
+import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.stream.Collectors;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
+import org.apache.syncope.client.console.commons.Constants;
+import org.apache.syncope.client.console.commons.DirectoryDataProvider;
+import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
+import org.apache.syncope.client.console.pages.BasePage;
+import org.apache.syncope.client.console.panels.ApplicationDirectoryPanel.ApplicationDataProvider;
+import org.apache.syncope.client.console.rest.ApplicationRestClient;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
+import org.apache.syncope.client.console.wizards.WizardMgtPanel;
+import org.apache.syncope.common.lib.SyncopeClientException;
+import org.apache.syncope.common.lib.to.ApplicationTO;
+import org.apache.syncope.common.lib.to.EntityTO;
+import org.apache.syncope.common.lib.to.PrivilegeTO;
+import org.apache.syncope.common.lib.types.StandardEntitlement;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
+import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
+import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.repeater.Item;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.ResourceModel;
+import org.apache.wicket.model.StringResourceModel;
+
+public class ApplicationDirectoryPanel extends
+ DirectoryPanel<ApplicationTO, ApplicationTO, ApplicationDataProvider, ApplicationRestClient> {
+
+ private static final long serialVersionUID = -5491515010207202168L;
+
+ protected final BaseModal<PrivilegeTO> privilegeModal = new BaseModal<PrivilegeTO>("outer") {
+
+ private static final long serialVersionUID = 389935548143327858L;
+
+ @Override
+ protected void onConfigure() {
+ super.onConfigure();
+ setFooterVisible(false);
+ }
+
+ };
+
+ protected ApplicationDirectoryPanel(final String id, final Builder builder) {
+ super(id, builder);
+ MetaDataRoleAuthorizationStrategy.authorize(addAjaxLink, RENDER, StandardEntitlement.APPLICATION_CREATE);
+ setReadOnly(!SyncopeConsoleSession.get().owns(StandardEntitlement.APPLICATION_UPDATE));
+
+ disableCheckBoxes();
+ setShowResultPage(true);
+
+ modal.size(Modal.Size.Medium);
+ modal.addSubmitButton();
+ setFooterVisibility(true);
+ modal.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
+
+ private static final long serialVersionUID = 8804221891699487139L;
+
+ @Override
+ public void onClose(final AjaxRequestTarget target) {
+ updateResultTable(target);
+ modal.show(false);
+ }
+ });
+
+ privilegeModal.size(Modal.Size.Large);
+ setWindowClosedReloadCallback(privilegeModal);
+ addOuterObject(privilegeModal);
+
+ AjaxLink<Void> newApplLink = new AjaxLink<Void>("add") {
+
+ private static final long serialVersionUID = -7978723352517770644L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target) {
+ modal.header(new StringResourceModel("any.new"));
+ modal.setContent(new ApplicationModalPanel(new ApplicationTO(), true, modal, pageRef));
+ modal.show(true);
+ target.add(modal);
+ }
+ };
+ ((WebMarkupContainer) get("container:content")).addOrReplace(newApplLink);
+ MetaDataRoleAuthorizationStrategy.authorize(newApplLink, RENDER, StandardEntitlement.APPLICATION_CREATE);
+
+ initResultTable();
+ }
+
+ @Override
+ protected ApplicationDataProvider dataProvider() {
+ return new ApplicationDataProvider(rows);
+ }
+
+ @Override
+ protected String paginatorRowsKey() {
+ return Constants.PREF_APPLICATION_PAGINATOR_ROWS;
+ }
+
+ @Override
+ protected List<IColumn<ApplicationTO, String>> getColumns() {
+ final List<IColumn<ApplicationTO, String>> columns = new ArrayList<>();
+
+ columns.add(new PropertyColumn<>(new ResourceModel("key"), "key", "key"));
+ columns.add(new PropertyColumn<>(new ResourceModel("description"), "description", "description"));
+ columns.add(new AbstractColumn<ApplicationTO, String>(new ResourceModel("privileges")) {
+
+ private static final long serialVersionUID = 2054811145491901166L;
+
+ @Override
+ public void populateItem(
+ final Item<ICellPopulator<ApplicationTO>> item,
+ final String componentId,
+ final IModel<ApplicationTO> rowModel) {
+
+ item.add(new Label(componentId, "[" + rowModel.getObject().getPrivileges().stream().
+ map(EntityTO::getKey).collect(Collectors.joining(", ")) + "]"));
+ }
+ });
+
+ return columns;
+ }
+
+ @Override
+ public ActionsPanel<ApplicationTO> getActions(final IModel<ApplicationTO> model) {
+ final ActionsPanel<ApplicationTO> panel = super.getActions(model);
+
+ panel.add(new ActionLink<ApplicationTO>() {
+
+ private static final long serialVersionUID = -7978723352517770644L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final ApplicationTO ignore) {
+ modal.header(new StringResourceModel("any.edit", model));
+ modal.setContent(new ApplicationModalPanel(model.getObject(), false, modal, pageRef));
+ modal.show(true);
+ target.add(modal);
+ }
+ }, ActionLink.ActionType.EDIT, StandardEntitlement.APPLICATION_UPDATE);
+
+ panel.add(new ActionLink<ApplicationTO>() {
+
+ private static final long serialVersionUID = -7978723352517770644L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final ApplicationTO ignore) {
+ target.add(privilegeModal.setContent(new PrivilegeDirectoryPanel(
+ privilegeModal, model.getObject(), pageRef)));
+
+ privilegeModal.header(new StringResourceModel(
+ "application.privileges", ApplicationDirectoryPanel.this, Model.of(model.getObject())));
+
+ MetaDataRoleAuthorizationStrategy.authorize(
+ privilegeModal.getForm(), ENABLE, StandardEntitlement.APPLICATION_UPDATE);
+
+ privilegeModal.show(true);
+ }
+ }, ActionLink.ActionType.COMPOSE, StandardEntitlement.APPLICATION_UPDATE);
+
+ panel.add(new ActionLink<ApplicationTO>() {
+
+ private static final long serialVersionUID = 3766262567901552032L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final ApplicationTO ignore) {
+ try {
+ restClient.delete(model.getObject().getKey());
+ SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
+ target.add(container);
+ } catch (SyncopeClientException e) {
+ LOG.error("While deleting application {}", model.getObject().getKey(), e);
+ SyncopeConsoleSession.get().error(StringUtils.isBlank(e.getMessage())
+ ? e.getClass().getName() : e.getMessage());
+ }
+ ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
+ }
+ }, ActionLink.ActionType.DELETE, StandardEntitlement.APPLICATION_DELETE, true);
+
+ return panel;
+ }
+
+ @Override
+ protected Collection<ActionLink.ActionType> getBulkActions() {
+ return Collections.<ActionLink.ActionType>emptyList();
+ }
+
+ public abstract static class Builder
+ extends DirectoryPanel.Builder<ApplicationTO, ApplicationTO, ApplicationRestClient> {
+
+ private static final long serialVersionUID = 5530948153889495221L;
+
+ public Builder(final PageReference pageRef) {
+ super(new ApplicationRestClient(), pageRef);
+ }
+
+ @Override
+ protected WizardMgtPanel<ApplicationTO> newInstance(final String id, final boolean wizardInModal) {
+ return new ApplicationDirectoryPanel(id, this);
+ }
+ }
+
+ protected class ApplicationDataProvider extends DirectoryDataProvider<ApplicationTO> {
+
+ private static final long serialVersionUID = 3124431855954382273L;
+
+ private final SortableDataProviderComparator<ApplicationTO> comparator;
+
+ private final ApplicationRestClient restClient = new ApplicationRestClient();
+
+ public ApplicationDataProvider(final int paginatorRows) {
+ super(paginatorRows);
+ this.comparator = new SortableDataProviderComparator<>(this);
+ }
+
+ @Override
+ public Iterator<ApplicationTO> iterator(final long first, final long count) {
+ List<ApplicationTO> result = restClient.list();
+ Collections.sort(result, comparator);
+ return result.subList((int) first, (int) first + (int) count).iterator();
+ }
+
+ @Override
+ public long size() {
+ return restClient.list().size();
+ }
+
+ @Override
+ public IModel<ApplicationTO> model(final ApplicationTO object) {
+ return new CompoundPropertyModel<>(object);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/java/org/apache/syncope/client/console/panels/ApplicationModalPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ApplicationModalPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ApplicationModalPanel.java
new file mode 100644
index 0000000..6f9c1f2
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ApplicationModalPanel.java
@@ -0,0 +1,91 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.syncope.client.console.panels;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
+import org.apache.syncope.client.console.commons.Constants;
+import org.apache.syncope.client.console.pages.BasePage;
+import org.apache.syncope.client.console.rest.ApplicationRestClient;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel;
+import org.apache.syncope.common.lib.to.ApplicationTO;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.model.PropertyModel;
+
+public class ApplicationModalPanel extends AbstractModalPanel<ApplicationTO> {
+
+ private static final long serialVersionUID = 4575264480736377795L;
+
+ private final ApplicationRestClient restClient = new ApplicationRestClient();
+
+ private final ApplicationTO application;
+
+ private final boolean create;
+
+ public ApplicationModalPanel(
+ final ApplicationTO application,
+ final boolean create,
+ final BaseModal<ApplicationTO> modal,
+ final PageReference pageRef) {
+
+ super(modal, pageRef);
+ this.application = application;
+ this.create = create;
+
+ modal.setFormModel(application);
+
+ AjaxTextFieldPanel key = new AjaxTextFieldPanel(
+ "key", "key", new PropertyModel<>(application, "key"), false);
+ key.setReadOnly(!create);
+ key.setRequired(true);
+ add(key);
+
+ AjaxTextFieldPanel description = new AjaxTextFieldPanel(
+ "description", "description", new PropertyModel<>(application, "description"), false);
+ description.setRequired(false);
+ add(description);
+ }
+
+ @Override
+ public ApplicationTO getItem() {
+ return application;
+ }
+
+ @Override
+ public void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
+ try {
+ if (create) {
+ restClient.create(application);
+ } else {
+ restClient.update(application);
+ }
+ SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
+ this.modal.close(target);
+ } catch (Exception e) {
+ LOG.error("While creating/updating application", e);
+ SyncopeConsoleSession.get().error(
+ StringUtils.isBlank(e.getMessage()) ? e.getClass().getName() : e.getMessage());
+ }
+ ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/java/org/apache/syncope/client/console/panels/DynRealmDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/DynRealmDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/DynRealmDirectoryPanel.java
index d1c15e6..ebbacd4 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/DynRealmDirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/DynRealmDirectoryPanel.java
@@ -24,16 +24,19 @@ import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
+import org.apache.commons.lang3.StringUtils;
import org.apache.syncope.client.console.SyncopeConsoleSession;
import org.apache.syncope.client.console.commons.Constants;
import org.apache.syncope.client.console.commons.DirectoryDataProvider;
import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
+import org.apache.syncope.client.console.pages.BasePage;
import org.apache.syncope.client.console.panels.DynRealmDirectoryPanel.DynRealmDataProvider;
import org.apache.syncope.client.console.rest.DynRealmRestClient;
import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
import org.apache.syncope.client.console.wizards.DynRealmWrapper;
import org.apache.syncope.client.console.wizards.WizardMgtPanel;
+import org.apache.syncope.common.lib.SyncopeClientException;
import org.apache.syncope.common.lib.to.DynRealmTO;
import org.apache.syncope.common.lib.types.StandardEntitlement;
import org.apache.wicket.PageReference;
@@ -76,7 +79,7 @@ public class DynRealmDirectoryPanel extends
}
});
- AjaxLink<Void> newDynReamlLink = new AjaxLink<Void>("add") {
+ AjaxLink<Void> newDynRealmlLink = new AjaxLink<Void>("add") {
private static final long serialVersionUID = -7978723352517770644L;
@@ -88,8 +91,8 @@ public class DynRealmDirectoryPanel extends
target.add(modal);
}
};
- ((WebMarkupContainer) get("container:content")).addOrReplace(newDynReamlLink);
- MetaDataRoleAuthorizationStrategy.authorize(newDynReamlLink, RENDER, StandardEntitlement.DYNREALM_CREATE);
+ ((WebMarkupContainer) get("container:content")).addOrReplace(newDynRealmlLink);
+ MetaDataRoleAuthorizationStrategy.authorize(newDynRealmlLink, RENDER, StandardEntitlement.DYNREALM_CREATE);
initResultTable();
}
@@ -130,6 +133,25 @@ public class DynRealmDirectoryPanel extends
}
}, ActionLink.ActionType.EDIT, StandardEntitlement.DYNREALM_UPDATE);
+ panel.add(new ActionLink<DynRealmTO>() {
+
+ private static final long serialVersionUID = 3766262567901552032L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final DynRealmTO ignore) {
+ try {
+ restClient.delete(model.getObject().getKey());
+ SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
+ target.add(container);
+ } catch (SyncopeClientException e) {
+ LOG.error("While deleting dynamic realm {}", model.getObject().getKey(), e);
+ SyncopeConsoleSession.get().error(StringUtils.isBlank(e.getMessage())
+ ? e.getClass().getName() : e.getMessage());
+ }
+ ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
+ }
+ }, ActionLink.ActionType.DELETE, StandardEntitlement.DYNREALM_DELETE, true);
+
return panel;
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/java/org/apache/syncope/client/console/panels/DynRealmModalPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/DynRealmModalPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/DynRealmModalPanel.java
index f1a0b69..b373274 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/DynRealmModalPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/DynRealmModalPanel.java
@@ -147,7 +147,6 @@ public class DynRealmModalPanel extends AbstractModalPanel<DynRealmWrapper> {
StringUtils.isBlank(e.getMessage()) ? e.getClass().getName() : e.getMessage());
}
((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
-
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/java/org/apache/syncope/client/console/panels/PrivilegeDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/PrivilegeDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/PrivilegeDirectoryPanel.java
new file mode 100644
index 0000000..2444812
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/PrivilegeDirectoryPanel.java
@@ -0,0 +1,184 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.syncope.client.console.panels;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
+import org.apache.syncope.client.console.commons.Constants;
+import org.apache.syncope.client.console.commons.DirectoryDataProvider;
+import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
+import org.apache.syncope.client.console.pages.BasePage;
+import org.apache.syncope.client.console.rest.ApplicationRestClient;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink.ActionType;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
+import org.apache.syncope.client.console.wizards.AjaxWizard;
+import org.apache.syncope.common.lib.SyncopeClientException;
+import org.apache.syncope.common.lib.to.ApplicationTO;
+import org.apache.syncope.common.lib.to.PrivilegeTO;
+import org.apache.syncope.common.lib.types.StandardEntitlement;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
+import org.apache.wicket.event.Broadcast;
+import org.apache.wicket.event.IEvent;
+import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.ResourceModel;
+
+public class PrivilegeDirectoryPanel extends DirectoryPanel<
+ PrivilegeTO, PrivilegeTO, DirectoryDataProvider<PrivilegeTO>, ApplicationRestClient>
+ implements ModalPanel {
+
+ private static final long serialVersionUID = 6524374026036584897L;
+
+ private final ApplicationTO application;
+
+ private final BaseModal<PrivilegeTO> baseModal;
+
+ protected PrivilegeDirectoryPanel(
+ final BaseModal<PrivilegeTO> baseModal, final ApplicationTO application, final PageReference pageRef) {
+
+ super(BaseModal.CONTENT_ID, pageRef, false);
+ this.baseModal = baseModal;
+ this.application = application;
+
+ disableCheckBoxes();
+ enableExitButton();
+
+ this.addNewItemPanelBuilder(new PrivilegeWizardBuilder(application, new PrivilegeTO(), pageRef), true);
+
+ MetaDataRoleAuthorizationStrategy.authorize(addAjaxLink, RENDER, StandardEntitlement.APPLICATION_UPDATE);
+ initResultTable();
+ }
+
+ @Override
+ protected List<IColumn<PrivilegeTO, String>> getColumns() {
+ final List<IColumn<PrivilegeTO, String>> columns = new ArrayList<>();
+
+ columns.add(new PropertyColumn<>(new ResourceModel("key"), "key", "key"));
+ columns.add(new PropertyColumn<>(new ResourceModel("description"), "description", "description"));
+
+ return columns;
+ }
+
+ @Override
+ protected ActionsPanel<PrivilegeTO> getActions(final IModel<PrivilegeTO> model) {
+ ActionsPanel<PrivilegeTO> panel = super.getActions(model);
+
+ panel.add(new ActionLink<PrivilegeTO>() {
+
+ private static final long serialVersionUID = -3722207913631435501L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final PrivilegeTO ignore) {
+ PrivilegeDirectoryPanel.this.getTogglePanel().close(target);
+ send(PrivilegeDirectoryPanel.this, Broadcast.EXACT,
+ new AjaxWizard.EditItemActionEvent<>(model.getObject(), target));
+ }
+ }, ActionLink.ActionType.EDIT, StandardEntitlement.APPLICATION_UPDATE);
+
+ panel.add(new ActionLink<PrivilegeTO>() {
+
+ private static final long serialVersionUID = -3722207913631435501L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final PrivilegeTO ignore) {
+ try {
+ application.getPrivileges().remove(model.getObject());
+ restClient.update(application);
+ SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
+ customActionOnFinishCallback(target);
+ } catch (SyncopeClientException e) {
+ LOG.error("While deleting {}", model.getObject().getKey(), e);
+ SyncopeConsoleSession.get().error(StringUtils.isBlank(e.getMessage())
+ ? e.getClass().getName() : e.getMessage());
+ }
+ ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
+ }
+ }, ActionLink.ActionType.DELETE, StandardEntitlement.APPLICATION_UPDATE, true);
+
+ return panel;
+ }
+
+ @Override
+ protected Collection<ActionType> getBulkActions() {
+ return Collections.<ActionType>emptyList();
+ }
+
+ @Override
+ protected PrivilegeDataProvider dataProvider() {
+ return new PrivilegeDataProvider(rows);
+ }
+
+ @Override
+ protected String paginatorRowsKey() {
+ return Constants.PREF_PRIVILEGE_PAGINATOR_ROWS;
+ }
+
+ protected class PrivilegeDataProvider extends DirectoryDataProvider<PrivilegeTO> {
+
+ private static final long serialVersionUID = 4725679400450513556L;
+
+ private final SortableDataProviderComparator<PrivilegeTO> comparator;
+
+ public PrivilegeDataProvider(final int paginatorRows) {
+ super(paginatorRows);
+
+ setSort("description", SortOrder.ASCENDING);
+ comparator = new SortableDataProviderComparator<>(this);
+ }
+
+ @Override
+ public Iterator<PrivilegeTO> iterator(final long first, final long count) {
+ List<PrivilegeTO> list = application.getPrivileges();
+ Collections.sort(list, comparator);
+ return list.subList((int) first, (int) first + (int) count).iterator();
+ }
+
+ @Override
+ public long size() {
+ return application.getPrivileges().size();
+ }
+
+ @Override
+ public IModel<PrivilegeTO> model(final PrivilegeTO object) {
+ return new CompoundPropertyModel<>(object);
+ }
+ }
+
+ @Override
+ public void onEvent(final IEvent<?> event) {
+ super.onEvent(event);
+ if (event.getPayload() instanceof ExitEvent && modal != null) {
+ final AjaxRequestTarget target = ExitEvent.class.cast(event.getPayload()).getTarget();
+ baseModal.show(false);
+ baseModal.close(target);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/java/org/apache/syncope/client/console/panels/PrivilegeWizardBuilder.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/PrivilegeWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/PrivilegeWizardBuilder.java
new file mode 100644
index 0000000..e1c4f5d
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/PrivilegeWizardBuilder.java
@@ -0,0 +1,101 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.syncope.client.console.panels;
+
+import java.io.Serializable;
+import org.apache.syncope.client.console.rest.ApplicationRestClient;
+import org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel;
+import org.apache.syncope.client.console.wicket.markup.html.form.JsonEditorPanel;
+import org.apache.syncope.client.console.wizards.AjaxWizardBuilder;
+import org.apache.syncope.common.lib.to.ApplicationTO;
+import org.apache.syncope.common.lib.to.PrivilegeTO;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.extensions.wizard.WizardModel;
+import org.apache.wicket.extensions.wizard.WizardStep;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.PropertyModel;
+import org.apache.wicket.model.StringResourceModel;
+
+public class PrivilegeWizardBuilder extends AjaxWizardBuilder<PrivilegeTO> {
+
+ private static final long serialVersionUID = -1817419622749405208L;
+
+ private final ApplicationRestClient restClient = new ApplicationRestClient();
+
+ private final ApplicationTO application;
+
+ public PrivilegeWizardBuilder(
+ final ApplicationTO application, final PrivilegeTO privilege, final PageReference pageRef) {
+
+ super(privilege, pageRef);
+ this.application = application;
+ }
+
+ @Override
+ protected WizardModel buildModelSteps(final PrivilegeTO modelObject, final WizardModel wizardModel) {
+ wizardModel.add(new Profile(modelObject));
+ wizardModel.add(new Spec(modelObject));
+ return wizardModel;
+ }
+
+ @Override
+ protected Serializable onApplyInternal(final PrivilegeTO modelObject) {
+ application.getPrivileges().removeIf(privilege -> privilege.getKey().equals(modelObject.getKey()));
+ application.getPrivileges().add(modelObject);
+
+ restClient.update(application);
+
+ return modelObject;
+ }
+
+ public class Profile extends WizardStep {
+
+ private static final long serialVersionUID = 11881843064077955L;
+
+ public Profile(final PrivilegeTO privilege) {
+ setTitleModel(privilege.getKey() == null
+ ? new StringResourceModel("privilege.new")
+ : new StringResourceModel("privilege.edit", Model.of(privilege)));
+
+ AjaxTextFieldPanel key = new AjaxTextFieldPanel(
+ "key", "key", new PropertyModel<>(privilege, "key"), false);
+ key.setReadOnly(privilege.getKey() != null);
+ key.setRequired(true);
+ add(key);
+
+ AjaxTextFieldPanel description = new AjaxTextFieldPanel(
+ "description", "description", new PropertyModel<>(privilege, "description"), false);
+ description.setRequired(false);
+ add(description);
+ }
+ }
+
+ public class Spec extends WizardStep {
+
+ private static final long serialVersionUID = -3237113253888332643L;
+
+ public Spec(final PrivilegeTO privilege) {
+ setTitleModel(privilege.getKey() == null
+ ? new StringResourceModel("privilege.new")
+ : new StringResourceModel("privilege.edit", Model.of(privilege)));
+
+ add(new JsonEditorPanel(new PropertyModel<>(privilege, "spec")));
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/java/org/apache/syncope/client/console/panels/RoleDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/RoleDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/RoleDirectoryPanel.java
index 4768d16..a410833 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/RoleDirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/RoleDirectoryPanel.java
@@ -117,6 +117,8 @@ public class RoleDirectoryPanel extends DirectoryPanel<RoleTO, RoleWrapper, Role
new ResourceModel("realms"), null, "realms"));
columns.add(new PropertyColumn<>(
new ResourceModel("dynRealms"), null, "dynRealms"));
+ columns.add(new PropertyColumn<>(
+ new ResourceModel("privileges"), null, "privileges"));
return columns;
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java
index 3a12a82..7660153 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java
@@ -105,6 +105,7 @@ public class SecurityQuestionsPanel extends DirectoryPanel<
final Builder<SecurityQuestionTO, SecurityQuestionTO, SecurityQuestionRestClient> builder) {
super(id, builder);
+ setOutputMarkupId(true);
}
@Override
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/java/org/apache/syncope/client/console/panels/search/AbstractSearchPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/search/AbstractSearchPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/search/AbstractSearchPanel.java
index 7cdda85..3d44dec 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/search/AbstractSearchPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/search/AbstractSearchPanel.java
@@ -19,9 +19,9 @@
package org.apache.syncope.client.console.panels.search;
import java.io.Serializable;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.function.Function;
import java.util.stream.Collectors;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.syncope.client.console.rest.AnyTypeRestClient;
@@ -68,6 +68,8 @@ public abstract class AbstractSearchPanel extends Panel {
protected IModel<List<String>> roleNames;
+ protected IModel<List<String>> privilegeNames;
+
protected IModel<List<SearchClause>> model;
protected WebMarkupContainer searchFormContainer;
@@ -147,7 +149,7 @@ public abstract class AbstractSearchPanel extends Panel {
final SearchClausePanel searchClausePanel = new SearchClausePanel("panel", "panel",
Model.of(new SearchClause()),
required,
- types, anames, dnames, groupInfo, roleNames, resourceNames);
+ types, anames, dnames, groupInfo, roleNames, privilegeNames, resourceNames);
if (enableSearch) {
searchClausePanel.enableSearch(builder.resultContainer);
@@ -186,11 +188,7 @@ public abstract class AbstractSearchPanel extends Panel {
final List<PlainSchemaTO> schemas = schemaRestClient.<PlainSchemaTO>getSchemas(
SchemaType.PLAIN, null, anyTypeRestClient.read(type).getClasses().toArray(new String[] {}));
- final Map<String, PlainSchemaTO> res = new HashMap<>();
- for (PlainSchemaTO schema : schemas) {
- res.put(schema.getKey(), schema);
- }
- return res;
+ return schemas.stream().collect(Collectors.toMap(schema -> schema.getKey(), Function.identity()));
}
};
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchClause.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchClause.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchClause.java
index 415abba..8d20abc 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchClause.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchClause.java
@@ -41,6 +41,7 @@ public final class SearchClause implements Serializable {
GROUP_MEMBERSHIP,
GROUP_MEMBER,
ROLE_MEMBERSHIP,
+ PRIVILEGE,
RESOURCE,
RELATIONSHIP;
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchClausePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchClausePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchClausePanel.java
index 745688e..0dc3196 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchClausePanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchClausePanel.java
@@ -86,6 +86,8 @@ public class SearchClausePanel extends FieldPanel<SearchClause> {
private final IModel<List<String>> roleNames;
+ private final IModel<List<String>> privilegeNames;
+
private final IModel<List<String>> resourceNames;
private IModel<SearchClause> clause;
@@ -114,6 +116,7 @@ public class SearchClausePanel extends FieldPanel<SearchClause> {
final IModel<List<String>> dnames,
final Pair<IModel<Map<String, String>>, Integer> groupInfo,
final IModel<List<String>> roleNames,
+ final IModel<List<String>> privilegeNames,
final IModel<List<String>> resourceNames) {
super(id, name, clause);
@@ -126,6 +129,7 @@ public class SearchClausePanel extends FieldPanel<SearchClause> {
this.dnames = dnames;
this.groupInfo = groupInfo;
this.roleNames = roleNames;
+ this.privilegeNames = privilegeNames;
this.resourceNames = resourceNames;
searchButton = new AjaxSubmitLink("search") {
@@ -170,6 +174,7 @@ public class SearchClausePanel extends FieldPanel<SearchClause> {
return Arrays.asList(SearchClause.Comparator.values());
case ROLE_MEMBERSHIP:
+ case PRIVILEGE:
case GROUP_MEMBERSHIP:
case GROUP_MEMBER:
case RESOURCE:
@@ -219,6 +224,11 @@ public class SearchClausePanel extends FieldPanel<SearchClause> {
Collections.sort(roles);
return roles;
+ case PRIVILEGE:
+ final List<String> privileges = new ArrayList<>(privilegeNames.getObject());
+ Collections.sort(privileges);
+ return privileges;
+
case RESOURCE:
final List<String> resources = new ArrayList<>(resourceNames.getObject());
Collections.sort(resources);
@@ -596,6 +606,15 @@ public class SearchClausePanel extends FieldPanel<SearchClause> {
property.setChoices(properties.getObject());
break;
+ case PRIVILEGE:
+ value.setEnabled(false);
+ value.setModelObject(StringUtils.EMPTY);
+
+ // reload properties list
+ properties.detach();
+ property.setChoices(properties.getObject());
+ break;
+
case GROUP_MEMBERSHIP:
value.setEnabled(false);
value.setModelObject(StringUtils.EMPTY);
@@ -718,6 +737,7 @@ public class SearchClausePanel extends FieldPanel<SearchClause> {
}
break;
case ROLE_MEMBERSHIP:
+ case PRIVILEGE:
case RESOURCE:
switch (object) {
case EQUALS:
@@ -824,7 +844,8 @@ public class SearchClausePanel extends FieldPanel<SearchClause> {
@Override
public FieldPanel<SearchClause> clone() {
final SearchClausePanel panel = new SearchClausePanel(
- getId(), name, null, required, types, anames, dnames, groupInfo, roleNames, resourceNames);
+ getId(), name, null, required, types, anames, dnames, groupInfo,
+ roleNames, privilegeNames, resourceNames);
panel.setReadOnly(this.isReadOnly());
panel.setRequired(this.isRequired());
if (searchButton.isEnabled()) {
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchUtils.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchUtils.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchUtils.java
index eaecc2f..9bef61c 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchUtils.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchUtils.java
@@ -123,6 +123,9 @@ public final class SearchUtils implements Serializable {
if (SpecialAttr.ROLES.toString().equals(property)) {
clause.setType(SearchClause.Type.ROLE_MEMBERSHIP);
clause.setProperty(value);
+ } else if (SpecialAttr.PRIVILEGES.toString().equals(property)) {
+ clause.setType(SearchClause.Type.PRIVILEGE);
+ clause.setProperty(value);
} else if (SpecialAttr.RELATIONSHIPS.toString().equals(property)) {
clause.setType(SearchClause.Type.RELATIONSHIP);
clause.setProperty(value);
@@ -345,6 +348,23 @@ public final class SearchUtils implements Serializable {
}
break;
+ case PRIVILEGE:
+ if (StringUtils.isNotBlank(clause.getProperty())) {
+ switch (clause.getComparator()) {
+ case EQUALS:
+ condition = ((UserFiqlSearchConditionBuilder) builder).
+ withPrivileges(clause.getProperty());
+ break;
+ case NOT_EQUALS:
+ condition = ((UserFiqlSearchConditionBuilder) builder).
+ withoutPrivileges(clause.getProperty());
+ break;
+ default:
+ break;
+ }
+ }
+ break;
+
case RELATIONSHIP:
if (StringUtils.isNotBlank(clause.getProperty())) {
if (builder instanceof UserFiqlSearchConditionBuilder) {
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/java/org/apache/syncope/client/console/panels/search/UserSearchPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/search/UserSearchPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/search/UserSearchPanel.java
index efc9de8..7dd81b3 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/search/UserSearchPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/search/UserSearchPanel.java
@@ -21,6 +21,7 @@ package org.apache.syncope.client.console.panels.search;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
+import org.apache.syncope.client.console.rest.ApplicationRestClient;
import org.apache.syncope.client.console.rest.RoleRestClient;
import org.apache.syncope.common.lib.to.EntityTO;
import org.apache.syncope.common.lib.types.AnyTypeKind;
@@ -33,6 +34,8 @@ public final class UserSearchPanel extends AnyObjectSearchPanel {
private final RoleRestClient roleRestClient = new RoleRestClient();
+ private final ApplicationRestClient applicationRestClient = new ApplicationRestClient();
+
public static class Builder extends AnyObjectSearchPanel.Builder {
private static final long serialVersionUID = 6308997285778809578L;
@@ -64,6 +67,18 @@ public final class UserSearchPanel extends AnyObjectSearchPanel {
return roleRestClient.list().stream().map(EntityTO::getKey).collect(Collectors.toList());
}
};
+
+ this.privilegeNames = new LoadableDetachableModel<List<String>>() {
+
+ private static final long serialVersionUID = 5275935387613157437L;
+
+ @Override
+ protected List<String> load() {
+ return applicationRestClient.list().stream().
+ flatMap(application -> application.getPrivileges().stream()).
+ map(EntityTO::getKey).collect(Collectors.toList());
+ }
+ };
}
@Override
@@ -71,6 +86,7 @@ public final class UserSearchPanel extends AnyObjectSearchPanel {
List<SearchClause.Type> result = new ArrayList<>();
result.add(SearchClause.Type.ATTRIBUTE);
result.add(SearchClause.Type.ROLE_MEMBERSHIP);
+ result.add(SearchClause.Type.PRIVILEGE);
result.add(SearchClause.Type.GROUP_MEMBERSHIP);
result.add(SearchClause.Type.RESOURCE);
result.add(SearchClause.Type.RELATIONSHIP);
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleDirectoryPanel.java
index 600ebd8..2b89ee4 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleDirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleDirectoryPanel.java
@@ -200,7 +200,7 @@ public class PolicyRuleDirectoryPanel<T extends PolicyTO> extends DirectoryPanel
customActionOnFinishCallback(target);
}
}
- }, ActionLink.ActionType.RELOAD, StandardEntitlement.TASK_LIST).hideLabel();
+ }, ActionLink.ActionType.RELOAD, StandardEntitlement.POLICY_LIST).hideLabel();
return panel;
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/java/org/apache/syncope/client/console/rest/ApplicationRestClient.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/ApplicationRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/ApplicationRestClient.java
new file mode 100644
index 0000000..0c765f8
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/ApplicationRestClient.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.syncope.client.console.rest;
+
+import java.util.List;
+import org.apache.syncope.common.lib.to.ApplicationTO;
+import org.apache.syncope.common.rest.api.service.ApplicationService;
+
+public class ApplicationRestClient extends BaseRestClient {
+
+ private static final long serialVersionUID = -381814125643246243L;
+
+ public void delete(final String key) {
+ getService(ApplicationService.class).delete(key);
+ }
+
+ public ApplicationTO read(final String key) {
+ return getService(ApplicationService.class).read(key);
+ }
+
+ public void update(final ApplicationTO applicationTO) {
+ getService(ApplicationService.class).update(applicationTO);
+ }
+
+ public void create(final ApplicationTO applicationTO) {
+ getService(ApplicationService.class).create(applicationTO);
+ }
+
+ public List<ApplicationTO> list() {
+ return getService(ApplicationService.class).list();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/java/org/apache/syncope/client/console/widgets/CompletenessWidget.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/widgets/CompletenessWidget.java b/client/console/src/main/java/org/apache/syncope/client/console/widgets/CompletenessWidget.java
index d45e34f..aee979f 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/widgets/CompletenessWidget.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/widgets/CompletenessWidget.java
@@ -26,8 +26,7 @@ import org.apache.commons.lang3.tuple.Pair;
import org.apache.syncope.client.console.BookmarkablePageLinkBuilder;
import org.apache.syncope.client.console.pages.Notifications;
import org.apache.syncope.client.console.pages.Policies;
-import org.apache.syncope.client.console.pages.Administration;
-import org.apache.syncope.client.console.pages.SecurityQuestions;
+import org.apache.syncope.client.console.pages.Security;
import org.apache.syncope.client.console.pages.Types;
import org.apache.syncope.client.console.topology.Topology;
import org.apache.syncope.common.lib.info.NumbersInfo;
@@ -56,9 +55,9 @@ public class CompletenessWidget extends BaseWidget {
private final BookmarkablePageLink<Types> types;
- private final BookmarkablePageLink<SecurityQuestions> securityquestions;
+ private final BookmarkablePageLink<Security> securityquestions;
- private final BookmarkablePageLink<Administration> roles;
+ private final BookmarkablePageLink<Security> roles;
public CompletenessWidget(final String id, final Map<String, Boolean> confCompleteness) {
super(id);
@@ -108,12 +107,12 @@ public class CompletenessWidget extends BaseWidget {
!confCompleteness.get(NumbersInfo.ConfItem.VIR_SCHEMA.name())
|| !confCompleteness.get(NumbersInfo.ConfItem.ANY_TYPE.name()));
- securityquestions = BookmarkablePageLinkBuilder.build("securityquestions", SecurityQuestions.class);
+ securityquestions = BookmarkablePageLinkBuilder.build("securityquestions", Security.class);
securityquestions.setOutputMarkupPlaceholderTag(true);
actions.add(securityquestions);
securityquestions.setVisible(!confCompleteness.get(NumbersInfo.ConfItem.SECURITY_QUESTION.name()));
- roles = BookmarkablePageLinkBuilder.build("roles", Administration.class);
+ roles = BookmarkablePageLinkBuilder.build("roles", Security.class);
roles.setOutputMarkupPlaceholderTag(true);
MetaDataRoleAuthorizationStrategy.authorize(roles, WebPage.ENABLE, StandardEntitlement.ROLE_LIST);
actions.add(roles);
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/java/org/apache/syncope/client/console/widgets/NumberWidget.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/widgets/NumberWidget.java b/client/console/src/main/java/org/apache/syncope/client/console/widgets/NumberWidget.java
index c7e71a7..36cf21b 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/widgets/NumberWidget.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/widgets/NumberWidget.java
@@ -27,7 +27,7 @@ import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.syncope.client.console.pages.Realms;
-import org.apache.syncope.client.console.pages.Administration;
+import org.apache.syncope.client.console.pages.Security;
import org.apache.syncope.client.console.topology.Topology;
import org.apache.syncope.common.lib.types.StandardEntitlement;
import org.apache.wicket.request.component.IRequestablePage;
@@ -78,7 +78,7 @@ public class NumberWidget extends BaseWidget {
responsePage = Realms.class;
isAuthorized = SyncopeConsoleSession.get().owns(label + "_SEARCH");
} else {
- responsePage = Administration.class;
+ responsePage = Security.class;
isAuthorized = SyncopeConsoleSession.get().owns(StandardEntitlement.ROLE_LIST);
}
break;
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/java/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder.java
index 8ea6aa2..1f3ecd3 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder.java
@@ -25,6 +25,7 @@ import java.util.List;
import java.util.stream.Collectors;
import org.apache.commons.lang3.StringUtils;
import org.apache.syncope.client.console.panels.search.UserSearchPanel;
+import org.apache.syncope.client.console.rest.ApplicationRestClient;
import org.apache.syncope.client.console.rest.DynRealmRestClient;
import org.apache.syncope.client.console.rest.RealmRestClient;
import org.apache.syncope.client.console.rest.RoleRestClient;
@@ -94,6 +95,7 @@ public class RoleWizardBuilder extends AjaxWizardBuilder<RoleWrapper> {
wizardModel.add(new Entitlements(modelObject.getInnerObject()));
wizardModel.add(new Realms(modelObject.getInnerObject()));
wizardModel.add(new DynRealms(modelObject.getInnerObject()));
+ wizardModel.add(new Privileges(modelObject.getInnerObject()));
return wizardModel;
}
@@ -179,4 +181,19 @@ public class RoleWizardBuilder extends AjaxWizardBuilder<RoleWrapper> {
}
}
+ public static class Privileges extends WizardStep {
+
+ private static final long serialVersionUID = 6896014330702958579L;
+
+ public Privileges(final RoleTO modelObject) {
+ setTitleModel(new ResourceModel("privileges"));
+ add(new AjaxPalettePanel.Builder<>().build("privileges",
+ new PropertyModel<>(modelObject, "privileges"),
+ new ListModel<>(new ApplicationRestClient().list().stream().
+ flatMap(application -> application.getPrivileges().stream()).
+ map(EntityTO::getKey).collect(Collectors.toList()))).
+ hideLabel().setOutputMarkupId(true));
+ }
+ }
+
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/console.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/console.properties b/client/console/src/main/resources/console.properties
index 9c46f7a..3139c1c 100644
--- a/client/console/src/main/resources/console.properties
+++ b/client/console/src/main/resources/console.properties
@@ -37,7 +37,6 @@ flowableModelerDirectory=${flowable-modeler.directory}
reconciliationReportKey=c3520ad9-179f-49e7-b315-d684d216dd97
-page.administration=org.apache.syncope.client.console.pages.Administration
page.dashboard=org.apache.syncope.client.console.pages.Dashboard
page.realms=org.apache.syncope.client.console.pages.Realms
page.topology=org.apache.syncope.client.console.topology.Topology
@@ -46,7 +45,7 @@ page.workflow=org.apache.syncope.client.console.pages.Workflow
page.audit=org.apache.syncope.client.console.pages.Audit
page.implementations=org.apache.syncope.client.console.pages.Implementations
page.logs=org.apache.syncope.client.console.pages.Logs
-page.securityquestions=org.apache.syncope.client.console.pages.SecurityQuestions
+page.security=org.apache.syncope.client.console.pages.Security
page.types=org.apache.syncope.client.console.pages.Types
page.policies=org.apache.syncope.client.console.pages.Policies
page.notifications=org.apache.syncope.client.console.pages.Notifications
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication.properties b/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication.properties
index f668185..2a36516 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication.properties
@@ -53,7 +53,6 @@ realms=Realms
topology=Topology
roles=Roles
policies=Policies
-securityQuestions=Security Questions
workflow=Workflow
logs=Logs
layouts=Layouts
@@ -70,7 +69,7 @@ audit=Audit
connectors.confirm.reload=This request is potentially dangerous for running operations, continue?
intAttrNameInfo.help=Besides auto-completed attributes, you can also refer to groups, any objects or memberships (if applicable); for example:
confirmGlobalLogout=Do you really want to perform global logout?
-administration=Administration
implementations=Implementations
timeout=Operation is taking to long: it will be executed in background. Please check later for the result (errors won't be triggered).
+security=Security
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_it.properties
index fa983f7..f1b3985 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_it.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_it.properties
@@ -53,7 +53,6 @@ realms=Realm
topology=Topologia
roles=Ruoli
policies=Politiche
-securityQuestions=Domande di sicurezza
workflow=Workflow
logs=Log
layouts=Layout
@@ -70,7 +69,7 @@ audit=Audit
connectors.confirm.reload=Questa richiesta \u00e8 potenzialmente dannosa per le operazioni in corso, proseguire?
intAttrNameInfo.help=Oltre agli attributi auto-completati, \u00e8 possibile fare riferimento anche a gruppi, any object e membership (se applicabile); ad esempio:
confirmGlobalLogout=Vuoi davvero procedere al logout globale?
-administration=Amministrazione
implementations=Implementazioni
timeout=L'operazione sta durando troppo: sar\u00e0 eseguita in background. Verifica il risultato pi\u00f9 tardi (gli errori non saranno notificati).
+security=Sicurezza
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_ja.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_ja.properties b/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_ja.properties
index 9c66b44..c512754 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_ja.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_ja.properties
@@ -52,7 +52,6 @@ realms=\u30ec\u30eb\u30e0
topology=\u30c8\u30dd\u30ed\u30b8\u30fc
roles=\u30ed\u30fc\u30eb
policies=\u30dd\u30ea\u30b7\u30fc
-securityQuestions=\u79d8\u5bc6\u306e\u8cea\u554f
workflow=\u30ef\u30fc\u30af\u30d5\u30ed\u30fc
logs=\u30ed\u30b0
layouts=\u30ec\u30a4\u30a2\u30a6\u30c8
@@ -69,6 +68,6 @@ audit=\u76e3\u67fb
connectors.confirm.reload=\u3053\u306e\u8981\u6c42\u306f\u3001\u5b9f\u884c\u4e2d\u306e\u64cd\u4f5c\u306b\u5bfe\u3057\u3066\u5371\u967a\u306a\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u7d9a\u884c\u3057\u307e\u3059\u304b?
intAttrNameInfo.help=\u30aa\u30fc\u30c8\u30b3\u30f3\u30d7\u30ea\u30fc\u30c8\u306e\u5c5e\u6027\u4ee5\u5916\u306b\u3001\u30b0\u30eb\u30fc\u30d7\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3001\u30e1\u30f3\u30d0\u30fc\u30b7\u30c3\u30d7\u3082\u53c2\u7167\u53ef\u80fd\u3067\u3059 (\u8a72\u5f53\u3059\u308b\u5834\u5408)\u3002\u4f8b\:
confirmGlobalLogout=\u30b0\u30ed\u30fc\u30d0\u30eb\u30ed\u30b0\u30a2\u30a6\u30c8\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b?
-administration=\u7ba1\u7406
implementations=\u5c0e\u5165
timeout=\u64cd\u4f5c\u306b\u9577\u6642\u9593\u304b\u304b\u3063\u3066\u3044\u307e\u3059\: \u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u3067\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002 \u7d50\u679c\u3092\u5f8c\u3067\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044 (\u30a8\u30e9\u30fc\u306f\u5f15\u304d\u8d77\u3053\u3057\u307e\u305b\u3093)\u3002
+security=Security
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_pt_BR.properties
index 8676cdb..9516f2b 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_pt_BR.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_pt_BR.properties
@@ -53,7 +53,6 @@ realms=Realm
topology=Topologia
roles=\t\nFun\u00e7\u00e3o\n\t
policies=Pol\u00edticas
-securityQuestions=Perguntas de seguran\u00e7a
workflow=Fluxo de trabalho
logs=Log
layouts=Layout
@@ -70,7 +69,7 @@ audit=Audit
connectors.confirm.reload=Esta requis\u00e7\u00e3o \u00e9 potencialmente perigosa para opera\u00e7\u00f5es em execu\u00e7\u00e3o, prosseguir?
intAttrNameInfo.help=Besides auto-completed attributes, you can also refer to groups, any objects or memberships (if applicable); for example:
confirmGlobalLogout=Do you really want to perform global logout?
-administration=Administra\u00e7\u00e3o
implementations=Implementa\u00e7\u00f5es
timeout=Operation is taking to long: it will be executed in background. Please check later for the result (errors won't be triggered).
+security=Security
[4/4] syncope git commit: [SYNCOPE-1281] Doc added
Posted by il...@apache.org.
[SYNCOPE-1281] Doc added
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/73f7e0f2
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/73f7e0f2
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/73f7e0f2
Branch: refs/heads/master
Commit: 73f7e0f24a045b8024d6c3ea3e16eed8bde24610
Parents: 72c5885
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Fri Mar 16 17:42:33 2018 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Fri Mar 16 17:42:33 2018 +0100
----------------------------------------------------------------------
src/main/asciidoc/reference-guide/concepts/privileges.adoc | 6 ++++++
1 file changed, 6 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/73f7e0f2/src/main/asciidoc/reference-guide/concepts/privileges.adoc
----------------------------------------------------------------------
diff --git a/src/main/asciidoc/reference-guide/concepts/privileges.adoc b/src/main/asciidoc/reference-guide/concepts/privileges.adoc
index 77fbfa5..f813ca1 100644
--- a/src/main/asciidoc/reference-guide/concepts/privileges.adoc
+++ b/src/main/asciidoc/reference-guide/concepts/privileges.adoc
@@ -19,3 +19,9 @@
=== Privileges
Privileges model the rights that Users own on external applications.
+
+Privileges are granted via <<roles, roles>> to Users.
+
+[TIP]
+The typical use case for privileges is to use Syncope as registry for available applications and privileges
+that users can own on those; once done this, external tools can query Syncope about the privileges owned by given users.
[2/4] syncope git commit: [SYNCOPE-1281] Console support implemented
Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_ru.properties
index e77a0d4..0e0ecbf 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_ru.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_ru.properties
@@ -52,7 +52,6 @@ realms=\u041e\u0431\u043b\u0430\u0441\u0442\u0438
topology=\u0422\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u044f
roles=\u0420\u043e\u043b\u0438
policies=\u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0438
-securityQuestions=\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b
workflow=\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u0438\u044f
logs=\u041b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435
layouts=\u0420\u0430\u0437\u043c\u0435\u0442\u043a\u0430
@@ -69,7 +68,7 @@ audit=\u0410\u0443\u0434\u0438\u0442
connectors.confirm.reload=\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043e\u043f\u0430\u0441\u043d\u043e \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439. \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c?
intAttrNameInfo.help=\u041f\u043e\u043c\u0438\u043c\u043e \u0430\u0432\u0442\u043e\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432, \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0433\u0440\u0443\u043f\u043f\u044b, \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0438 \u0447\u043b\u0435\u043d\u0441\u0442\u0432\u043e (\u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438), \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:
confirmGlobalLogout=Do you really want to perform global logout?
-administration=Administration
implementations=\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438
timeout=Operation is taking to long: it will be executed in background. Please check later for the result (errors won't be triggered).
+security=Security
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/pages/Administration.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Administration.html b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Administration.html
deleted file mode 100644
index 0c79945..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Administration.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you 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.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
- <wicket:extend>
- <section class="content-header">
- <h1> </h1>
- <ol class="breadcrumb">
- <li><a wicket:id="dashboardBr"><i class="fa fa-dashboard"></i> <wicket:message key="dashboard"/></a></li>
- <li class="active"><wicket:message key="configuration"/></li>
- <li class="active"><wicket:message key="administration"/></li>
- </ol>
- </section>
-
- <section class="content" wicket:id="content">
- <div class="box">
- <div class="box-body" wicket:id="tabbedPanel"/>
- </div>
- </section>
- </wicket:extend>
-</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/pages/Administration.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Administration.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Administration.properties
deleted file mode 100644
index 8788d48..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Administration.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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.
-add=Create new Role
-dynRealms=Dynamic Realms
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/pages/Administration_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Administration_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Administration_it.properties
deleted file mode 100644
index becfb71..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Administration_it.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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.
-add=Crea un nuovo Ruolo
-dynRealms=Realm dinamici
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/pages/Administration_ja.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Administration_ja.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Administration_ja.properties
deleted file mode 100644
index f9ee467..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Administration_ja.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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.
-add=\u65b0\u3057\u3044\u30ed\u30fc\u30eb\u3092\u8ffd\u52a0
-dynRealms=\u52d5\u7684\u30ec\u30eb\u30e0
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/pages/Administration_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Administration_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Administration_pt_BR.properties
deleted file mode 100644
index e6d08f9..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Administration_pt_BR.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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.
-add=Cria um novo fun\u00e7\u00e3o
-dynRealms=Realm din\u00e2micos
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/pages/Administration_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Administration_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Administration_ru.properties
deleted file mode 100644
index e933b31..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Administration_ru.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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.
-#
-# add=\u00d0\u00a1\u00d0\u00be\u00d0\u00b7\u00d0\u00b4\u00d0\u00b0\u00d1\u0082\u00d1\u008c \u00d1\u0080\u00d0\u00be\u00d0\u00bb\u00d1\u008c
-add=\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0440\u043e\u043b\u044c
-dynRealms=Dynamic Realms
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html b/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html
index 76e4c43..c23ace8 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html
@@ -108,14 +108,13 @@ under the License.
<li wicket:id="configurationLI" class="treeview">
<a href="#"><i class="fa fa-edit"></i><span><wicket:message key="configuration"/></span> <span class="pull-right-container"><i class="fa fa-angle-left pull-right"></i></span></a>
<ul wicket:id="configurationUL" class="treeview-menu">
- <li wicket:id="administrationLI"><a href="#" wicket:id="administration"><i class="fa fa-lock"></i><wicket:message key="administration"/></a></li>
<li wicket:id="auditLI"><a href="#" wicket:id="audit"><i class="fa fa-check-square-o"></i><wicket:message key="audit"/></a></li>
<li wicket:id="implementationsLI"><a href="#" wicket:id="implementations"><i class="fa fa-file-code-o"></i><wicket:message key="implementations"/></a></li>
<li wicket:id="logsLI"><a href="#" wicket:id="logs"><i class="fa fa-file-text-o"></i><wicket:message key="logs"/></a></li>
<li wicket:id="notificationsLI"><a href="#" wicket:id="notifications"><i class="fa fa-envelope-o"></i><wicket:message key="notifications"/></a></li>
<li wicket:id="parametersLI"><a href="#" wicket:id="parameters"><i class="fa fa-cog"></i><wicket:message key="parameters"/></a></li>
<li wicket:id="policiesLI"><a href="#" wicket:id="policies"><i class="fa fa-list"></i><wicket:message key="policies"/></a></li>
- <li wicket:id="securityquestionsLI"><a href="#" wicket:id="securityquestions"><i class="fa fa-question"></i><wicket:message key="securityQuestions"/></a></li>
+ <li wicket:id="securityLI"><a href="#" wicket:id="security"><i class="fa fa-lock"></i><wicket:message key="security"/></a></li>
<li wicket:id="typesLI"><a href="#" wicket:id="types"><i class="fa fa-wrench"></i><wicket:message key="types"/></a></li>
<li wicket:id="workflowLI"><a href="#" wicket:id="workflow"><i class="fa fa-briefcase"></i><wicket:message key="workflow"/></a></li>
</ul>
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/pages/Security.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Security.html b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Security.html
new file mode 100644
index 0000000..3ca4002
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Security.html
@@ -0,0 +1,36 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you 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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+ <wicket:extend>
+ <section class="content-header">
+ <h1> </h1>
+ <ol class="breadcrumb">
+ <li><a wicket:id="dashboardBr"><i class="fa fa-dashboard"></i> <wicket:message key="dashboard"/></a></li>
+ <li class="active"><wicket:message key="configuration"/></li>
+ <li class="active"><wicket:message key="security"/></li>
+ </ol>
+ </section>
+
+ <section class="content" wicket:id="content">
+ <div class="box">
+ <div class="box-body" wicket:id="tabbedPanel"/>
+ </div>
+ </section>
+ </wicket:extend>
+</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/pages/Security.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Security.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Security.properties
new file mode 100644
index 0000000..3bba56c
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Security.properties
@@ -0,0 +1,21 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+add=Create new Role
+dynRealms=Dynamic Realms
+privileges=Privileges
+applications=Applications
+securityQuestions=Security Questions
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/pages/SecurityQuestions.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/SecurityQuestions.html b/client/console/src/main/resources/org/apache/syncope/client/console/pages/SecurityQuestions.html
deleted file mode 100644
index 14e360d..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/SecurityQuestions.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you 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.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
- <wicket:extend>
- <section class="content-header">
- <h1> </h1>
- <ol class="breadcrumb">
- <li><a wicket:id="dashboardBr"><i class="fa fa-dashboard"></i> <wicket:message key="dashboard"/></a></li>
- <li class="active"><wicket:message key="configuration"/></li>
- <li class="active"><wicket:message key="securityQuestions"/></li>
- </ol>
- </section>
-
- <section class="content" wicket:id="content">
- <div class="box">
- <div class="box-body" wicket:id="securityQuestionPanel"/>
- </div>
- </section>
- </wicket:extend>
-</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/pages/SecurityQuestions.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/SecurityQuestions.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/SecurityQuestions.properties
deleted file mode 100644
index 8e55776..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/SecurityQuestions.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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.
-createSecurityQuestion=Create new Secutiry Questions
-content=Content
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/pages/SecurityQuestions_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/SecurityQuestions_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/SecurityQuestions_it.properties
deleted file mode 100644
index 57f0f99..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/SecurityQuestions_it.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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.
-createSecurityQuestion=Crea una nuova domanda di sicurezza
-content=Contenuto
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/pages/SecurityQuestions_ja.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/SecurityQuestions_ja.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/SecurityQuestions_ja.properties
deleted file mode 100644
index fcb0d38..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/SecurityQuestions_ja.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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.
-createSecurityQuestion=\u65b0\u3057\u3044\u79d8\u5bc6\u306e\u8cea\u554f\u3092\u4f5c\u6210
-content=\u5185\u5bb9
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/pages/SecurityQuestions_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/SecurityQuestions_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/SecurityQuestions_pt_BR.properties
deleted file mode 100644
index ddf033a..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/SecurityQuestions_pt_BR.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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.
-createSecurityQuestion=Cria um novo Security Question
-content=Conte\u00fado
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/pages/SecurityQuestions_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/SecurityQuestions_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/SecurityQuestions_ru.properties
deleted file mode 100644
index 2c020fc..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/SecurityQuestions_ru.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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.
-# createSecurityQuestion=Создать вопрос
-createSecurityQuestion=\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441
-# content=Содержимое
-content=\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/pages/Security_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Security_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Security_it.properties
new file mode 100644
index 0000000..a8e66ca
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Security_it.properties
@@ -0,0 +1,21 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+add=Crea un nuovo Ruolo
+dynRealms=Realm dinamici
+privileges=Privilegi
+applications=Applicazioni
+securityQuestions=Domande di sicurezza
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/pages/Security_ja.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Security_ja.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Security_ja.properties
new file mode 100644
index 0000000..bbf3747
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Security_ja.properties
@@ -0,0 +1,21 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+add=\u65b0\u3057\u3044\u30ed\u30fc\u30eb\u3092\u8ffd\u52a0
+dynRealms=\u52d5\u7684\u30ec\u30eb\u30e0
+privileges=Privileges
+applications=Applications
+securityQuestions=\u79d8\u5bc6\u306e\u8cea\u554f
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/pages/Security_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Security_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Security_pt_BR.properties
new file mode 100644
index 0000000..f6e211a
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Security_pt_BR.properties
@@ -0,0 +1,21 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+add=Cria um novo fun\u00e7\u00e3o
+dynRealms=Realm din\u00e2micos
+privileges=Privileges
+applications=Applications
+securityQuestions=Perguntas de seguran\u00e7a
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/pages/Security_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Security_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Security_ru.properties
new file mode 100644
index 0000000..6a5c308
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Security_ru.properties
@@ -0,0 +1,22 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+#
+add=\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0440\u043e\u043b\u044c
+dynRealms=Dynamic Realms
+privileges=Privileges
+applications=Applications
+securityQuestions=\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/panels/ApplicationDirectoryPanel.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ApplicationDirectoryPanel.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ApplicationDirectoryPanel.properties
new file mode 100644
index 0000000..5913502
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ApplicationDirectoryPanel.properties
@@ -0,0 +1,21 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+any.edit=Edit ${key}
+any.new=New Application
+description=Description
+compose.title=privileges
+application.privileges=Privileges for ${key}
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/panels/ApplicationDirectoryPanel_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ApplicationDirectoryPanel_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ApplicationDirectoryPanel_it.properties
new file mode 100644
index 0000000..e0d1544
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ApplicationDirectoryPanel_it.properties
@@ -0,0 +1,21 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+any.edit=Modifica ${key}
+any.new=Nuova Applicazione
+description=Descrizione
+compose.title=privilegi
+application.privileges=Privilegi di ${key}
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/panels/ApplicationDirectoryPanel_ja.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ApplicationDirectoryPanel_ja.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ApplicationDirectoryPanel_ja.properties
new file mode 100644
index 0000000..5d4a923
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ApplicationDirectoryPanel_ja.properties
@@ -0,0 +1,21 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+any.edit=${key} \u3092\u7de8\u96c6
+any.new=New Application
+description=Description
+compose.title=privileges
+application.privileges=Privileges for ${key}
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/panels/ApplicationDirectoryPanel_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ApplicationDirectoryPanel_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ApplicationDirectoryPanel_pt_BR.properties
new file mode 100644
index 0000000..a4d60d5
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ApplicationDirectoryPanel_pt_BR.properties
@@ -0,0 +1,21 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+any.edit=Alterar ${key}
+any.new=New Application
+description=Description
+compose.title=privileges
+application.privileges=Privileges for ${key}
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/panels/ApplicationDirectoryPanel_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ApplicationDirectoryPanel_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ApplicationDirectoryPanel_ru.properties
new file mode 100644
index 0000000..7417e49
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ApplicationDirectoryPanel_ru.properties
@@ -0,0 +1,22 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+#
+any.edit=\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c ${key}
+any.new=New Application
+description=Description
+compose.title=privileges
+application.privileges=Privileges for ${key}
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/panels/ApplicationModalPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ApplicationModalPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ApplicationModalPanel.html
new file mode 100644
index 0000000..713cb85
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ApplicationModalPanel.html
@@ -0,0 +1,26 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you 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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+ <wicket:extend>
+ <div class="form-group">
+ <span wicket:id="key"/>
+ <span wicket:id="description"/>
+ </div>
+ </wicket:extend>
+</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/panels/PrivilegeDirectoryPanel.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/PrivilegeDirectoryPanel.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/PrivilegeDirectoryPanel.properties
new file mode 100644
index 0000000..6b9e86c
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/PrivilegeDirectoryPanel.properties
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+privilege.new=New Privilege
+privilege.edit=Edit ${key}
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/panels/PrivilegeDirectoryPanel_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/PrivilegeDirectoryPanel_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/PrivilegeDirectoryPanel_it.properties
new file mode 100644
index 0000000..fbcc06a
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/PrivilegeDirectoryPanel_it.properties
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+privilege.new=Nuovo Privilege
+privilege.edit=Modifica ${key}
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/panels/PrivilegeDirectoryPanel_ja.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/PrivilegeDirectoryPanel_ja.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/PrivilegeDirectoryPanel_ja.properties
new file mode 100644
index 0000000..6b9e86c
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/PrivilegeDirectoryPanel_ja.properties
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+privilege.new=New Privilege
+privilege.edit=Edit ${key}
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/panels/PrivilegeDirectoryPanel_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/PrivilegeDirectoryPanel_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/PrivilegeDirectoryPanel_pt_BR.properties
new file mode 100644
index 0000000..6b9e86c
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/PrivilegeDirectoryPanel_pt_BR.properties
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+privilege.new=New Privilege
+privilege.edit=Edit ${key}
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/panels/PrivilegeDirectoryPanel_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/PrivilegeDirectoryPanel_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/PrivilegeDirectoryPanel_ru.properties
new file mode 100644
index 0000000..6b9e86c
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/PrivilegeDirectoryPanel_ru.properties
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+privilege.new=New Privilege
+privilege.edit=Edit ${key}
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/panels/PrivilegeWizardBuilder$Profile.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/PrivilegeWizardBuilder$Profile.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/PrivilegeWizardBuilder$Profile.html
new file mode 100644
index 0000000..10945cc
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/PrivilegeWizardBuilder$Profile.html
@@ -0,0 +1,26 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you 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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+ <wicket:panel>
+ <div class="form-group">
+ <span wicket:id="key"/>
+ <span wicket:id="description"/>
+ </div>
+ </wicket:panel>
+</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/panels/PrivilegeWizardBuilder$Spec.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/PrivilegeWizardBuilder$Spec.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/PrivilegeWizardBuilder$Spec.html
new file mode 100644
index 0000000..ee1b97d
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/PrivilegeWizardBuilder$Spec.html
@@ -0,0 +1,25 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you 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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+ <wicket:panel>
+ <div class="form-group">
+ <span wicket:id="content"/>
+ </div>
+ </wicket:panel>
+</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.properties
index 7323e05..9eba18d 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.properties
@@ -16,3 +16,4 @@
# under the License.
any.edit=Edit Security Question ${key}
any.new=New Security Question
+content=Content
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/panels/SecurityQuestionsPanel_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/SecurityQuestionsPanel_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/SecurityQuestionsPanel_it.properties
index 6d55323..0ef0c4d 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/SecurityQuestionsPanel_it.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/SecurityQuestionsPanel_it.properties
@@ -16,3 +16,4 @@
# under the License.
any.edit=Modifica Domanda Segreta ${key}
any.new=Nuova Domanda Segreta
+content=Contenuto
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/panels/SecurityQuestionsPanel_ja.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/SecurityQuestionsPanel_ja.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/SecurityQuestionsPanel_ja.properties
index ad51d3c..d883e06 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/SecurityQuestionsPanel_ja.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/SecurityQuestionsPanel_ja.properties
@@ -16,3 +16,4 @@
# under the License.
any.edit=\u79d8\u5bc6\u306e\u8cea\u554f ${key} \u3092\u7de8\u96c6
any.new=\u65b0\u3057\u3044\u79d8\u5bc6\u306e\u8cea\u554f
+content=\u5185\u5bb9
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/panels/SecurityQuestionsPanel_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/SecurityQuestionsPanel_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/SecurityQuestionsPanel_pt_BR.properties
index 930c3c2..1cb2b42 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/SecurityQuestionsPanel_pt_BR.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/SecurityQuestionsPanel_pt_BR.properties
@@ -16,3 +16,4 @@
# under the License.
any.edit=Alterar Pergunta de Seguran\u00e7a ${key}
any.new=Novo Pergunta de Seguran\u00e7a
+content=Conte\u00fado
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/panels/SecurityQuestionsPanel_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/SecurityQuestionsPanel_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/SecurityQuestionsPanel_ru.properties
index 16793b4..aefb0e0 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/SecurityQuestionsPanel_ru.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/SecurityQuestionsPanel_ru.properties
@@ -15,7 +15,6 @@
# specific language governing permissions and limitations
# under the License.
#
-# any.edit=Изменить вопрос ${key}
any.edit=\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441 ${key}
-# any.new=Создать вопрос
any.new=\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441
+content=\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder$Details.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder$Details.html b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder$Details.html
index 80ebc0c..b3ca11a 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder$Details.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder$Details.html
@@ -17,13 +17,10 @@ specific language governing permissions and limitations
under the License.
-->
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
- <head><title></title></head>
- <body>
- <wicket:panel>
- <div class="form-group">
- <span wicket:id="key">[NAME]</span>
- </div>
- <div wicket:id="dynMembershipCond" />
- </wicket:panel>
- </body>
+ <wicket:panel>
+ <div class="form-group">
+ <span wicket:id="key">[NAME]</span>
+ </div>
+ <div wicket:id="dynMembershipCond"/>
+ </wicket:panel>
</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder$DynRealms.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder$DynRealms.html b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder$DynRealms.html
index c55493c..d043a5a 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder$DynRealms.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder$DynRealms.html
@@ -17,12 +17,9 @@ specific language governing permissions and limitations
under the License.
-->
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
- <head><title></title></head>
- <body>
- <wicket:panel>
- <div class="form-group">
- <span wicket:id="dynRealms">[DYNAMIC REALMS]</span>
- </div>
- </wicket:panel>
- </body>
+ <wicket:panel>
+ <div class="form-group">
+ <span wicket:id="dynRealms">[DYNAMIC REALMS]</span>
+ </div>
+ </wicket:panel>
</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder$Entitlements.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder$Entitlements.html b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder$Entitlements.html
index f14d054..ffbd5aa 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder$Entitlements.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder$Entitlements.html
@@ -17,12 +17,9 @@ specific language governing permissions and limitations
under the License.
-->
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
- <head><title></title></head>
- <body>
- <wicket:panel>
- <div class="form-group">
- <span wicket:id="entitlements">[ENTITLEMENTS]</span>
- </div>
- </wicket:panel>
- </body>
+ <wicket:panel>
+ <div class="form-group">
+ <span wicket:id="entitlements">[ENTITLEMENTS]</span>
+ </div>
+ </wicket:panel>
</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder$Privileges.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder$Privileges.html b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder$Privileges.html
new file mode 100644
index 0000000..e65e30a
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder$Privileges.html
@@ -0,0 +1,25 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you 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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+ <wicket:panel>
+ <div class="form-group">
+ <span wicket:id="privileges">[PRIVILEGES]</span>
+ </div>
+ </wicket:panel>
+</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/client/console/src/main/resources/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder$Realms.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder$Realms.html b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder$Realms.html
index 7c3d20e..b4031e2 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder$Realms.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder$Realms.html
@@ -17,12 +17,9 @@ specific language governing permissions and limitations
under the License.
-->
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
- <head><title></title></head>
- <body>
- <wicket:panel>
- <div class="form-group">
- <span wicket:id="realms">[REALMS]</span>
- </div>
- </wicket:panel>
- </body>
+ <wicket:panel>
+ <div class="form-group">
+ <span wicket:id="realms">[REALMS]</span>
+ </div>
+ </wicket:panel>
</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/common/lib/src/main/java/org/apache/syncope/common/lib/to/PrivilegeTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/PrivilegeTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/PrivilegeTO.java
index 5c9ed89..47cc07a 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/PrivilegeTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/PrivilegeTO.java
@@ -34,8 +34,6 @@ public class PrivilegeTO extends AbstractBaseBean implements EntityTO {
private String application;
- private String specMimeType;
-
private String spec;
@Override
@@ -64,14 +62,6 @@ public class PrivilegeTO extends AbstractBaseBean implements EntityTO {
this.application = application;
}
- public String getSpecMimeType() {
- return specMimeType;
- }
-
- public void setSpecMimeType(final String specMimeType) {
- this.specMimeType = specMimeType;
- }
-
public String getSpec() {
return spec;
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Privilege.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Privilege.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Privilege.java
index 44744e6..4a39252 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Privilege.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Privilege.java
@@ -28,11 +28,7 @@ public interface Privilege extends ProvidedKeyEntity {
void setDescription(String description);
- String getSpecMimeType();
+ String getSpec();
- void setSpecMimeType(String specMimeType);
-
- byte[] getSpec();
-
- void setSpec(byte[] spec);
+ void setSpec(String spec);
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAPrivilege.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAPrivilege.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAPrivilege.java
index a01bb5f..0e1a3b5 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAPrivilege.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAPrivilege.java
@@ -22,8 +22,6 @@ import javax.persistence.Entity;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
-import javax.validation.constraints.NotNull;
-import org.apache.commons.lang3.ArrayUtils;
import org.apache.syncope.core.persistence.api.entity.Application;
import org.apache.syncope.core.persistence.api.entity.Privilege;
@@ -40,11 +38,8 @@ public class JPAPrivilege extends AbstractProvidedKeyEntity implements Privilege
private String description;
- @NotNull
- private String specMimeType;
-
@Lob
- private byte[] spec;
+ private String spec;
@Override
public Application getApplication() {
@@ -68,23 +63,13 @@ public class JPAPrivilege extends AbstractProvidedKeyEntity implements Privilege
}
@Override
- public String getSpecMimeType() {
- return specMimeType;
- }
-
- @Override
- public void setSpecMimeType(final String specMimeType) {
- this.specMimeType = specMimeType;
- }
-
- @Override
- public byte[] getSpec() {
+ public String getSpec() {
return spec;
}
@Override
- public void setSpec(final byte[] spec) {
- this.spec = ArrayUtils.clone(spec);
+ public void setSpec(final String spec) {
+ this.spec = spec;
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ApplicationTest.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ApplicationTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ApplicationTest.java
index ab5da92..057b2e7 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ApplicationTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ApplicationTest.java
@@ -67,22 +67,19 @@ public class ApplicationTest extends AbstractTest {
String privilege1Key = UUID.randomUUID().toString();
Privilege privilege = entityFactory.newEntity(Privilege.class);
privilege.setKey(privilege1Key);
- privilege.setSpecMimeType("application/xml");
- privilege.setSpec("<one/>".getBytes());
+ privilege.setSpec("{ \"one\": true }");
application.add(privilege);
String privilege2Key = UUID.randomUUID().toString();
privilege = entityFactory.newEntity(Privilege.class);
privilege.setKey(privilege2Key);
- privilege.setSpecMimeType("application/xml");
- privilege.setSpec("<one><two/></one>".getBytes());
+ privilege.setSpec("{ \"two\": true }");
application.add(privilege);
String privilege3Key = UUID.randomUUID().toString();
privilege = entityFactory.newEntity(Privilege.class);
privilege.setKey(privilege3Key);
- privilege.setSpecMimeType("application/xml");
- privilege.setSpec("<one><two><three/></two></one>".getBytes());
+ privilege.setSpec("{ \"three\": true }");
application.add(privilege);
application = applicationDAO.save(application);
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/core/persistence-jpa/src/test/resources/domains/MasterContent.xml
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/resources/domains/MasterContent.xml b/core/persistence-jpa/src/test/resources/domains/MasterContent.xml
index f68e9aa..855894f 100644
--- a/core/persistence-jpa/src/test/resources/domains/MasterContent.xml
+++ b/core/persistence-jpa/src/test/resources/domains/MasterContent.xml
@@ -237,12 +237,10 @@ under the License.
<Application id="mightyApp" description="A cool application"/>
<Privilege id="postMighty" description="Ability to POST"
- spec="7B20226D6574686F64223A2022504F5354222C202275726C223A20222F612F622F6322207D"
- specmimetype="application/json"
+ spec="{ "method": "POST", "url": "/a/b/c" }"
application_id="mightyApp"/>
<Privilege id="getMighty" description="Ability to GET"
- spec="7B20226D6574686F64223A2022474554222C202275726C223A20222F612F622F6322207D"
- specmimetype="application/json"
+ spec="{ "method": "GET", "url": "/a/b/c" }"
application_id="mightyApp"/>
<SyncopeRole id="User reviewer"/>
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ApplicationDataBinderImpl.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ApplicationDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ApplicationDataBinderImpl.java
index 635ba57..0fcb38c 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ApplicationDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ApplicationDataBinderImpl.java
@@ -18,7 +18,6 @@
*/
package org.apache.syncope.core.provisioning.java.data;
-import java.util.Base64;
import java.util.Iterator;
import java.util.stream.Collectors;
import org.apache.syncope.common.lib.SyncopeClientException;
@@ -78,8 +77,7 @@ public class ApplicationDataBinderImpl implements ApplicationDataBinder {
}
privilege.setDescription(privilegeTO.getDescription());
- privilege.setSpecMimeType(privilegeTO.getSpecMimeType());
- privilege.setSpec(Base64.getDecoder().decode(privilegeTO.getSpec()));
+ privilege.setSpec(privilegeTO.getSpec());
}
});
@@ -103,8 +101,7 @@ public class ApplicationDataBinderImpl implements ApplicationDataBinder {
privilegeTO.setKey(privilege.getKey());
privilegeTO.setDescription(privilege.getDescription());
privilegeTO.setApplication(privilege.getApplication().getKey());
- privilegeTO.setSpecMimeType(privilege.getSpecMimeType());
- privilegeTO.setSpec(Base64.getEncoder().encodeToString(privilege.getSpec()));
+ privilegeTO.setSpec(privilege.getSpec());
return privilegeTO;
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/fit/console-reference/src/main/resources/console.properties
----------------------------------------------------------------------
diff --git a/fit/console-reference/src/main/resources/console.properties b/fit/console-reference/src/main/resources/console.properties
index bce070a..18c424f 100644
--- a/fit/console-reference/src/main/resources/console.properties
+++ b/fit/console-reference/src/main/resources/console.properties
@@ -37,15 +37,15 @@ flowableModelerDirectory=${flowable-modeler.directory}
reconciliationReportKey=c3520ad9-179f-49e7-b315-d684d216dd97
-page.administration=org.apache.syncope.client.console.pages.Administration
page.dashboard=org.apache.syncope.client.console.pages.Dashboard
page.realms=org.apache.syncope.client.console.pages.Realms
page.topology=org.apache.syncope.client.console.topology.Topology
page.reports=org.apache.syncope.client.console.pages.Reports
page.workflow=org.apache.syncope.client.console.pages.Workflow
page.audit=org.apache.syncope.client.console.pages.Audit
+page.implementations=org.apache.syncope.client.console.pages.Implementations
page.logs=org.apache.syncope.client.console.pages.Logs
-page.securityquestions=org.apache.syncope.client.console.pages.SecurityQuestions
+page.security=org.apache.syncope.client.console.pages.Security
page.types=org.apache.syncope.client.console.pages.Types
page.policies=org.apache.syncope.client.console.pages.Policies
page.notifications=org.apache.syncope.client.console.pages.Notifications
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AjaxBrowseITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AjaxBrowseITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AjaxBrowseITCase.java
index 31d05aa..bcc2c6d 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AjaxBrowseITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AjaxBrowseITCase.java
@@ -25,8 +25,7 @@ import org.apache.syncope.client.console.pages.Notifications;
import org.apache.syncope.client.console.pages.Policies;
import org.apache.syncope.client.console.pages.Realms;
import org.apache.syncope.client.console.pages.Reports;
-import org.apache.syncope.client.console.pages.Administration;
-import org.apache.syncope.client.console.pages.SecurityQuestions;
+import org.apache.syncope.client.console.pages.Security;
import org.apache.syncope.client.console.pages.Types;
import org.apache.syncope.client.console.pages.Workflow;
import org.apache.syncope.client.console.topology.Topology;
@@ -78,14 +77,11 @@ public class AjaxBrowseITCase extends AbstractConsoleITCase {
TESTER.clickLink("body:configurationLI:configurationUL:logsLI:logs");
TESTER.assertRenderedPage(Logs.class);
- TESTER.clickLink("body:configurationLI:configurationUL:securityquestionsLI:securityquestions");
- TESTER.assertRenderedPage(SecurityQuestions.class);
-
TESTER.clickLink("body:configurationLI:configurationUL:typesLI:types");
TESTER.assertRenderedPage(Types.class);
- TESTER.clickLink("body:configurationLI:configurationUL:administrationLI:administration");
- TESTER.assertRenderedPage(Administration.class);
+ TESTER.clickLink("body:configurationLI:configurationUL:securityLI:security");
+ TESTER.assertRenderedPage(Security.class);
TESTER.clickLink("body:configurationLI:configurationUL:policiesLI:policies");
TESTER.assertRenderedPage(Policies.class);
http://git-wip-us.apache.org/repos/asf/syncope/blob/72c5885d/fit/core-reference/src/test/java/org/apache/syncope/fit/console/RolesITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/RolesITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/RolesITCase.java
index 1f0ec42..25eb447 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/RolesITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/RolesITCase.java
@@ -23,7 +23,7 @@ import static org.junit.jupiter.api.Assertions.assertNull;
import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
import org.apache.syncope.client.console.commons.Constants;
-import org.apache.syncope.client.console.pages.Administration;
+import org.apache.syncope.client.console.pages.Security;
import org.apache.wicket.Component;
import org.apache.wicket.util.tester.FormTester;
import org.junit.jupiter.api.BeforeEach;
@@ -34,8 +34,8 @@ public class RolesITCase extends AbstractConsoleITCase {
@BeforeEach
public void login() {
doLogin(ADMIN_UNAME, ADMIN_PWD);
- TESTER.clickLink("body:configurationLI:configurationUL:administrationLI:administration");
- TESTER.assertRenderedPage(Administration.class);
+ TESTER.clickLink("body:configurationLI:configurationUL:securityLI:security");
+ TESTER.assertRenderedPage(Security.class);
}
private void createRole(final String name) {
@@ -57,12 +57,15 @@ public class RolesITCase extends AbstractConsoleITCase {
formTester.submit("content:form:buttons:next");
formTester = TESTER.newFormTester("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:form");
+ formTester.submit("content:form:buttons:next");
+
+ formTester = TESTER.newFormTester("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:form");
formTester.submit("content:form:buttons:finish");
TESTER.assertInfoMessages("Operation executed successfully");
TESTER.cleanupFeedbackMessages();
- TESTER.clickLink("body:configurationLI:configurationUL:administrationLI:administration");
+ TESTER.clickLink("body:configurationLI:configurationUL:securityLI:security");
}
@Test