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 2016/09/29 14:00:38 UTC
[6/6] syncope git commit: [SYNCOPE-952] Realm management now working
for enduser
[SYNCOPE-952] Realm management now working for enduser
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/55b9e83d
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/55b9e83d
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/55b9e83d
Branch: refs/heads/master
Commit: 55b9e83d76d6f8c576a235aeb6f1e3d634656bcf
Parents: bf1b627
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Thu Sep 29 15:59:37 2016 +0200
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Thu Sep 29 16:00:14 2016 +0200
----------------------------------------------------------------------
.../enduser/SyncopeEnduserApplication.java | 27 +++++--
.../enduser/resources/AnyTypeClassResource.java | 77 ++++++++++++++++++
.../enduser/resources/AnyTypeResource.java | 77 ++++++++++++++++++
.../resources/ExternalResourceResource.java | 78 +++++++++++++++++++
.../client/enduser/resources/GroupResource.java | 79 +++++++++++++++++++
.../client/enduser/resources/RealmResource.java | 76 ++++++++++++++++++
.../resources/SyncopeAnyClassTypeResource.java | 81 -------------------
.../resources/SyncopeAnyTypeResource.java | 81 -------------------
.../enduser/resources/SyncopeGroupResource.java | 82 --------------------
.../resources/SyncopeResourceResource.java | 82 --------------------
.../app/js/controllers/UserController.js | 31 ++++----
.../resources/app/js/services/anyService.js | 6 +-
.../resources/app/js/services/groupService.js | 2 +-
.../resources/app/js/services/realmService.js | 10 +--
.../app/js/services/resourceService.js | 2 +-
.../app/js/services/securityQuestionService.js | 2 +-
.../app/js/services/userSelfService.js | 1 -
.../resources/app/views/user-groups.html | 3 +-
.../apache/syncope/core/logic/RealmLogic.java | 14 ++--
.../provisioning/api/data/RealmDataBinder.java | 2 +-
.../java/data/RealmDataBinderImpl.java | 21 ++---
.../pushpull/RealmPullResultHandlerImpl.java | 16 ++--
.../pushpull/RealmPushResultHandlerImpl.java | 8 +-
23 files changed, 466 insertions(+), 392 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/55b9e83d/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserApplication.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserApplication.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserApplication.java
index 71de4db..f47ec8b 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserApplication.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserApplication.java
@@ -31,10 +31,11 @@ import org.apache.syncope.client.enduser.resources.LoginResource;
import org.apache.syncope.client.enduser.resources.LogoutResource;
import org.apache.syncope.client.enduser.resources.SchemaResource;
import org.apache.syncope.client.enduser.resources.SecurityQuestionResource;
-import org.apache.syncope.client.enduser.resources.SyncopeAnyClassTypeResource;
-import org.apache.syncope.client.enduser.resources.SyncopeAnyTypeResource;
-import org.apache.syncope.client.enduser.resources.SyncopeGroupResource;
-import org.apache.syncope.client.enduser.resources.SyncopeResourceResource;
+import org.apache.syncope.client.enduser.resources.AnyTypeClassResource;
+import org.apache.syncope.client.enduser.resources.AnyTypeResource;
+import org.apache.syncope.client.enduser.resources.GroupResource;
+import org.apache.syncope.client.enduser.resources.ExternalResourceResource;
+import org.apache.syncope.client.enduser.resources.RealmResource;
import org.apache.syncope.client.enduser.resources.UserSelfChangePassword;
import org.apache.syncope.client.enduser.resources.UserSelfConfirmPasswordReset;
import org.apache.syncope.client.enduser.resources.UserSelfCreateResource;
@@ -245,7 +246,7 @@ public class SyncopeEnduserApplication extends WebApplication implements Seriali
@Override
public IResource getResource() {
- return new SyncopeResourceResource();
+ return new ExternalResourceResource();
}
});
@@ -290,13 +291,23 @@ public class SyncopeEnduserApplication extends WebApplication implements Seriali
}
});
+ mountResource("/api/realms", new ResourceReference("realms") {
+
+ private static final long serialVersionUID = -128426276529456602L;
+
+ @Override
+ public IResource getResource() {
+ return new RealmResource();
+ }
+ });
+
mountResource("/api/groups", new ResourceReference("groups") {
private static final long serialVersionUID = -128426276529456602L;
@Override
public IResource getResource() {
- return new SyncopeGroupResource();
+ return new GroupResource();
}
});
@@ -306,7 +317,7 @@ public class SyncopeEnduserApplication extends WebApplication implements Seriali
@Override
public IResource getResource() {
- return new SyncopeAnyClassTypeResource();
+ return new AnyTypeClassResource();
}
});
@@ -316,7 +327,7 @@ public class SyncopeEnduserApplication extends WebApplication implements Seriali
@Override
public IResource getResource() {
- return new SyncopeAnyTypeResource();
+ return new AnyTypeResource();
}
});
http://git-wip-us.apache.org/repos/asf/syncope/blob/55b9e83d/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/AnyTypeClassResource.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/AnyTypeClassResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/AnyTypeClassResource.java
new file mode 100644
index 0000000..6d230c1
--- /dev/null
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/AnyTypeClassResource.java
@@ -0,0 +1,77 @@
+/*
+ * 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.enduser.resources;
+
+import java.io.IOException;
+import java.util.List;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.core.Response;
+import org.apache.syncope.client.enduser.SyncopeEnduserSession;
+import org.apache.syncope.common.lib.to.AnyTypeClassTO;
+import org.apache.syncope.common.rest.api.service.AnyTypeClassService;
+import org.apache.wicket.request.resource.AbstractResource;
+
+public class AnyTypeClassResource extends AbstractBaseResource {
+
+ private static final long serialVersionUID = 7475706378304995200L;
+
+ private final AnyTypeClassService anyTypeClassService;
+
+ public AnyTypeClassResource() {
+ anyTypeClassService = SyncopeEnduserSession.get().getService(AnyTypeClassService.class);
+ }
+
+ @Override
+ protected ResourceResponse newResourceResponse(final Attributes attributes) {
+
+ LOG.debug("Get all available auxiliary classes");
+
+ ResourceResponse response = new ResourceResponse();
+
+ try {
+
+ HttpServletRequest request = (HttpServletRequest) attributes.getRequest().getContainerRequest();
+ if (!xsrfCheck(request)) {
+ LOG.error("XSRF TOKEN does not match");
+ response.setError(Response.Status.BAD_REQUEST.getStatusCode(), "XSRF TOKEN does not match");
+ return response;
+ }
+
+ final List<AnyTypeClassTO> anyTypeClassTOs = anyTypeClassService.list();
+
+ response.setWriteCallback(new AbstractResource.WriteCallback() {
+
+ @Override
+ public void writeData(final Attributes attributes) throws IOException {
+ attributes.getResponse().write(MAPPER.writeValueAsString(anyTypeClassTOs));
+ }
+ });
+ response.setStatusCode(Response.Status.OK.getStatusCode());
+ } catch (Exception e) {
+ LOG.error("Error retrieving available auxiliary classes", e);
+ response.setError(Response.Status.BAD_REQUEST.getStatusCode(), new StringBuilder()
+ .append("ErrorMessage{{ ")
+ .append(e.getMessage())
+ .append(" }}")
+ .toString());
+ }
+ return response;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/55b9e83d/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/AnyTypeResource.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/AnyTypeResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/AnyTypeResource.java
new file mode 100644
index 0000000..5d58f37
--- /dev/null
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/AnyTypeResource.java
@@ -0,0 +1,77 @@
+/*
+ * 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.enduser.resources;
+
+import java.io.IOException;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.core.Response;
+import org.apache.syncope.client.enduser.SyncopeEnduserSession;
+import org.apache.syncope.common.lib.to.AnyTypeTO;
+import org.apache.syncope.common.rest.api.service.AnyTypeService;
+import org.apache.wicket.request.resource.AbstractResource;
+
+public class AnyTypeResource extends AbstractBaseResource {
+
+ private static final long serialVersionUID = 7475706378304995200L;
+
+ private final AnyTypeService anyTypeService;
+
+ public AnyTypeResource() {
+ anyTypeService = SyncopeEnduserSession.get().getService(AnyTypeService.class);
+ }
+
+ @Override
+ protected ResourceResponse newResourceResponse(final Attributes attributes) {
+
+ LOG.debug("Get all available auxiliary classes");
+
+ ResourceResponse response = new ResourceResponse();
+
+ try {
+
+ HttpServletRequest request = (HttpServletRequest) attributes.getRequest().getContainerRequest();
+ if (!xsrfCheck(request)) {
+ LOG.error("XSRF TOKEN does not match");
+ response.setError(Response.Status.BAD_REQUEST.getStatusCode(), "XSRF TOKEN does not match");
+ return response;
+ }
+
+ String kind = attributes.getParameters().get(0).toString();
+ final AnyTypeTO anyTypeTO = anyTypeService.read(kind);
+
+ response.setWriteCallback(new AbstractResource.WriteCallback() {
+
+ @Override
+ public void writeData(final Attributes attributes) throws IOException {
+ attributes.getResponse().write(MAPPER.writeValueAsString(anyTypeTO));
+ }
+ });
+ response.setStatusCode(Response.Status.OK.getStatusCode());
+ } catch (Exception e) {
+ LOG.error("Error retrieving available any type details", e);
+ response.setError(Response.Status.BAD_REQUEST.getStatusCode(), new StringBuilder()
+ .append("ErrorMessage{{ ")
+ .append(e.getMessage())
+ .append(" }}")
+ .toString());
+ }
+ return response;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/55b9e83d/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/ExternalResourceResource.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/ExternalResourceResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/ExternalResourceResource.java
new file mode 100644
index 0000000..e779a94
--- /dev/null
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/ExternalResourceResource.java
@@ -0,0 +1,78 @@
+/*
+ * 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.enduser.resources;
+
+import java.io.IOException;
+import java.util.List;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.core.Response;
+import org.apache.syncope.client.enduser.SyncopeEnduserSession;
+import org.apache.syncope.common.lib.to.ResourceTO;
+import org.apache.syncope.common.rest.api.service.ResourceService;
+import org.apache.wicket.request.resource.AbstractResource;
+import org.apache.wicket.request.resource.IResource;
+
+public class ExternalResourceResource extends AbstractBaseResource {
+
+ private static final long serialVersionUID = 7475706378304995200L;
+
+ private final ResourceService resourceService;
+
+ public ExternalResourceResource() {
+ resourceService = SyncopeEnduserSession.get().getService(ResourceService.class);
+ }
+
+ @Override
+ protected AbstractResource.ResourceResponse newResourceResponse(final IResource.Attributes attributes) {
+
+ LOG.debug("Search all available resources");
+
+ AbstractResource.ResourceResponse response = new AbstractResource.ResourceResponse();
+
+ try {
+
+ HttpServletRequest request = (HttpServletRequest) attributes.getRequest().getContainerRequest();
+ if (!xsrfCheck(request)) {
+ LOG.error("XSRF TOKEN does not match");
+ response.setError(Response.Status.BAD_REQUEST.getStatusCode(), "XSRF TOKEN does not match");
+ return response;
+ }
+
+ final List<ResourceTO> resourceTOs = resourceService.list();
+
+ response.setWriteCallback(new AbstractResource.WriteCallback() {
+
+ @Override
+ public void writeData(final IResource.Attributes attributes) throws IOException {
+ attributes.getResponse().write(MAPPER.writeValueAsString(resourceTOs));
+ }
+ });
+ response.setStatusCode(Response.Status.OK.getStatusCode());
+ } catch (Exception e) {
+ LOG.error("Error retrieving available resources", e);
+ response.setError(Response.Status.BAD_REQUEST.getStatusCode(), new StringBuilder()
+ .append("ErrorMessage{{ ")
+ .append(e.getMessage())
+ .append(" }}")
+ .toString());
+ }
+ return response;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/55b9e83d/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/GroupResource.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/GroupResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/GroupResource.java
new file mode 100644
index 0000000..365d7df
--- /dev/null
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/GroupResource.java
@@ -0,0 +1,79 @@
+/*
+ * 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.enduser.resources;
+
+import java.io.IOException;
+import java.util.List;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.core.Response;
+import org.apache.syncope.client.enduser.SyncopeEnduserSession;
+import org.apache.syncope.common.lib.SyncopeConstants;
+import org.apache.syncope.common.lib.to.GroupTO;
+import org.apache.syncope.common.rest.api.beans.AnyQuery;
+import org.apache.syncope.common.rest.api.service.GroupService;
+import org.apache.wicket.request.resource.AbstractResource;
+
+public class GroupResource extends AbstractBaseResource {
+
+ private static final long serialVersionUID = 7475706378304995200L;
+
+ private final GroupService groupService;
+
+ public GroupResource() {
+ groupService = SyncopeEnduserSession.get().getService(GroupService.class);
+ }
+
+ @Override
+ protected ResourceResponse newResourceResponse(final Attributes attributes) {
+ LOG.debug("Search all available groups");
+
+ ResourceResponse response = new ResourceResponse();
+ try {
+
+ HttpServletRequest request = (HttpServletRequest) attributes.getRequest().getContainerRequest();
+ if (!xsrfCheck(request)) {
+ LOG.error("XSRF TOKEN does not match");
+ response.setError(Response.Status.BAD_REQUEST.getStatusCode(), "XSRF TOKEN does not match");
+ return response;
+ }
+
+ String realm = java.net.URLDecoder.decode(attributes.getParameters().get("realm").
+ toString(SyncopeConstants.ROOT_REALM), "UTF-8");
+ final List<GroupTO> groupTOs = groupService.search(new AnyQuery.Builder().realm(realm).build()).getResult();
+
+ response.setWriteCallback(new AbstractResource.WriteCallback() {
+
+ @Override
+ public void writeData(final Attributes attributes) throws IOException {
+ attributes.getResponse().write(MAPPER.writeValueAsString(groupTOs));
+ }
+ });
+ response.setStatusCode(Response.Status.OK.getStatusCode());
+ } catch (Exception e) {
+ LOG.error("Error retrieving available groups", e);
+ response.setError(Response.Status.BAD_REQUEST.getStatusCode(), new StringBuilder()
+ .append("ErrorMessage{{ ")
+ .append(e.getMessage())
+ .append(" }}")
+ .toString());
+ }
+ return response;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/55b9e83d/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/RealmResource.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/RealmResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/RealmResource.java
new file mode 100644
index 0000000..6d5049b
--- /dev/null
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/RealmResource.java
@@ -0,0 +1,76 @@
+/*
+ * 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.enduser.resources;
+
+import java.io.IOException;
+import java.util.List;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.core.Response;
+import org.apache.syncope.client.enduser.SyncopeEnduserSession;
+import org.apache.syncope.common.lib.to.RealmTO;
+import org.apache.syncope.common.rest.api.service.RealmService;
+import org.apache.wicket.request.resource.AbstractResource;
+
+public class RealmResource extends AbstractBaseResource {
+
+ private static final long serialVersionUID = 7475706378304995200L;
+
+ private final RealmService realmService;
+
+ public RealmResource() {
+ realmService = SyncopeEnduserSession.get().getService(RealmService.class);
+ }
+
+ @Override
+ protected ResourceResponse newResourceResponse(final Attributes attributes) {
+ LOG.debug("Search all available realms");
+
+ ResourceResponse response = new ResourceResponse();
+
+ try {
+ HttpServletRequest request = (HttpServletRequest) attributes.getRequest().getContainerRequest();
+ if (!xsrfCheck(request)) {
+ LOG.error("XSRF TOKEN does not match");
+ response.setError(Response.Status.BAD_REQUEST.getStatusCode(), "XSRF TOKEN does not match");
+ return response;
+ }
+
+ final List<RealmTO> realmTOs = realmService.list();
+
+ response.setWriteCallback(new AbstractResource.WriteCallback() {
+
+ @Override
+ public void writeData(final Attributes attributes) throws IOException {
+ attributes.getResponse().write(MAPPER.writeValueAsString(realmTOs));
+ }
+ });
+ response.setStatusCode(Response.Status.OK.getStatusCode());
+ } catch (Exception e) {
+ LOG.error("Error retrieving available realms", e);
+ response.setError(Response.Status.BAD_REQUEST.getStatusCode(), new StringBuilder()
+ .append("ErrorMessage{{ ")
+ .append(e.getMessage())
+ .append(" }}")
+ .toString());
+ }
+
+ return response;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/55b9e83d/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SyncopeAnyClassTypeResource.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SyncopeAnyClassTypeResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SyncopeAnyClassTypeResource.java
deleted file mode 100644
index bdb6f98..0000000
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SyncopeAnyClassTypeResource.java
+++ /dev/null
@@ -1,81 +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.enduser.resources;
-
-import java.io.IOException;
-import java.util.List;
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.core.Response;
-import org.apache.syncope.client.enduser.SyncopeEnduserSession;
-import org.apache.syncope.common.lib.to.AnyTypeClassTO;
-import org.apache.syncope.common.rest.api.service.AnyTypeClassService;
-import org.apache.wicket.request.resource.AbstractResource;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class SyncopeAnyClassTypeResource extends AbstractBaseResource {
-
- private static final long serialVersionUID = 7475706378304995200L;
-
- private static final Logger LOG = LoggerFactory.getLogger(SyncopeAnyClassTypeResource.class);
-
- private final AnyTypeClassService anyTypeClassService;
-
- public SyncopeAnyClassTypeResource() {
- anyTypeClassService = SyncopeEnduserSession.get().getService(AnyTypeClassService.class);
- }
-
- @Override
- protected ResourceResponse newResourceResponse(final Attributes attributes) {
-
- LOG.debug("Get all available auxiliary classes");
-
- ResourceResponse response = new ResourceResponse();
-
- try {
-
- HttpServletRequest request = (HttpServletRequest) attributes.getRequest().getContainerRequest();
- if (!xsrfCheck(request)) {
- LOG.error("XSRF TOKEN does not match");
- response.setError(Response.Status.BAD_REQUEST.getStatusCode(), "XSRF TOKEN does not match");
- return response;
- }
-
- final List<AnyTypeClassTO> anyTypeClassTOs = anyTypeClassService.list();
-
- response.setWriteCallback(new AbstractResource.WriteCallback() {
-
- @Override
- public void writeData(final Attributes attributes) throws IOException {
- attributes.getResponse().write(MAPPER.writeValueAsString(anyTypeClassTOs));
- }
- });
- response.setStatusCode(Response.Status.OK.getStatusCode());
- } catch (Exception e) {
- LOG.error("Error retrieving available auxiliary classes", e);
- response.setError(Response.Status.BAD_REQUEST.getStatusCode(), new StringBuilder()
- .append("ErrorMessage{{ ")
- .append(e.getMessage())
- .append(" }}")
- .toString());
- }
- return response;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/55b9e83d/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SyncopeAnyTypeResource.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SyncopeAnyTypeResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SyncopeAnyTypeResource.java
deleted file mode 100644
index 9c9b1ad..0000000
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SyncopeAnyTypeResource.java
+++ /dev/null
@@ -1,81 +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.enduser.resources;
-
-import java.io.IOException;
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.core.Response;
-import org.apache.syncope.client.enduser.SyncopeEnduserSession;
-import org.apache.syncope.common.lib.to.AnyTypeTO;
-import org.apache.syncope.common.rest.api.service.AnyTypeService;
-import org.apache.wicket.request.resource.AbstractResource;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class SyncopeAnyTypeResource extends AbstractBaseResource {
-
- private static final long serialVersionUID = 7475706378304995200L;
-
- private static final Logger LOG = LoggerFactory.getLogger(SyncopeAnyTypeResource.class);
-
- private final AnyTypeService anyTypeService;
-
- public SyncopeAnyTypeResource() {
- anyTypeService = SyncopeEnduserSession.get().getService(AnyTypeService.class);
- }
-
- @Override
- protected ResourceResponse newResourceResponse(final Attributes attributes) {
-
- LOG.debug("Get all available auxiliary classes");
-
- ResourceResponse response = new ResourceResponse();
-
- try {
-
- HttpServletRequest request = (HttpServletRequest) attributes.getRequest().getContainerRequest();
- if (!xsrfCheck(request)) {
- LOG.error("XSRF TOKEN does not match");
- response.setError(Response.Status.BAD_REQUEST.getStatusCode(), "XSRF TOKEN does not match");
- return response;
- }
-
- String kind = attributes.getParameters().get(0).toString();
- final AnyTypeTO anyTypeTO = anyTypeService.read(kind);
-
- response.setWriteCallback(new AbstractResource.WriteCallback() {
-
- @Override
- public void writeData(final Attributes attributes) throws IOException {
- attributes.getResponse().write(MAPPER.writeValueAsString(anyTypeTO));
- }
- });
- response.setStatusCode(Response.Status.OK.getStatusCode());
- } catch (Exception e) {
- LOG.error("Error retrieving available any type details", e);
- response.setError(Response.Status.BAD_REQUEST.getStatusCode(), new StringBuilder()
- .append("ErrorMessage{{ ")
- .append(e.getMessage())
- .append(" }}")
- .toString());
- }
- return response;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/55b9e83d/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SyncopeGroupResource.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SyncopeGroupResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SyncopeGroupResource.java
deleted file mode 100644
index 7757532..0000000
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SyncopeGroupResource.java
+++ /dev/null
@@ -1,82 +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.enduser.resources;
-
-import java.io.IOException;
-import java.util.List;
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.core.Response;
-import org.apache.syncope.client.enduser.SyncopeEnduserSession;
-import org.apache.syncope.common.lib.SyncopeConstants;
-import org.apache.syncope.common.lib.to.GroupTO;
-import org.apache.syncope.common.rest.api.beans.AnyQuery;
-import org.apache.syncope.common.rest.api.service.GroupService;
-import org.apache.wicket.request.resource.AbstractResource;
-
-public class SyncopeGroupResource extends AbstractBaseResource {
-
- private static final long serialVersionUID = 7475706378304995200L;
-
- private final GroupService groupService;
-
- public SyncopeGroupResource() {
- groupService = SyncopeEnduserSession.get().getService(GroupService.class);
- }
-
- @Override
- protected ResourceResponse newResourceResponse(final Attributes attributes) {
-
- LOG.debug("Search all available groups");
-
- ResourceResponse response = new ResourceResponse();
-
- try {
-
- HttpServletRequest request = (HttpServletRequest) attributes.getRequest().getContainerRequest();
- if (!xsrfCheck(request)) {
- LOG.error("XSRF TOKEN does not match");
- response.setError(Response.Status.BAD_REQUEST.getStatusCode(), "XSRF TOKEN does not match");
- return response;
- }
-
- String realm = java.net.URLDecoder.decode(attributes.getParameters().get("realm").toString(
- SyncopeConstants.ROOT_REALM), "UTF-8");
- final List<GroupTO> groupTOs = groupService.search(new AnyQuery.Builder().realm(realm).build()).
- getResult();
-
- response.setWriteCallback(new AbstractResource.WriteCallback() {
-
- @Override
- public void writeData(final Attributes attributes) throws IOException {
- attributes.getResponse().write(MAPPER.writeValueAsString(groupTOs));
- }
- });
- response.setStatusCode(Response.Status.OK.getStatusCode());
- } catch (Exception e) {
- LOG.error("Error retrieving available grupss", e);
- response.setError(Response.Status.BAD_REQUEST.getStatusCode(), new StringBuilder()
- .append("ErrorMessage{{ ")
- .append(e.getMessage())
- .append(" }}")
- .toString());
- }
- return response;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/55b9e83d/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SyncopeResourceResource.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SyncopeResourceResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SyncopeResourceResource.java
deleted file mode 100644
index 8a6d0a9..0000000
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SyncopeResourceResource.java
+++ /dev/null
@@ -1,82 +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.enduser.resources;
-
-import java.io.IOException;
-import java.util.List;
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.core.Response;
-import org.apache.syncope.client.enduser.SyncopeEnduserSession;
-import org.apache.syncope.common.lib.to.ResourceTO;
-import org.apache.syncope.common.rest.api.service.ResourceService;
-import org.apache.wicket.request.resource.AbstractResource;
-import org.apache.wicket.request.resource.IResource;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class SyncopeResourceResource extends AbstractBaseResource {
-
- private static final long serialVersionUID = 7475706378304995200L;
-
- private static final Logger LOG = LoggerFactory.getLogger(SyncopeResourceResource.class);
-
- private final ResourceService resourceService;
-
- public SyncopeResourceResource() {
- resourceService = SyncopeEnduserSession.get().getService(ResourceService.class);
- }
-
- @Override
- protected AbstractResource.ResourceResponse newResourceResponse(final IResource.Attributes attributes) {
-
- LOG.debug("Search all available resources");
-
- AbstractResource.ResourceResponse response = new AbstractResource.ResourceResponse();
-
- try {
-
- HttpServletRequest request = (HttpServletRequest) attributes.getRequest().getContainerRequest();
- if (!xsrfCheck(request)) {
- LOG.error("XSRF TOKEN does not match");
- response.setError(Response.Status.BAD_REQUEST.getStatusCode(), "XSRF TOKEN does not match");
- return response;
- }
-
- final List<ResourceTO> resourceTOs = resourceService.list();
-
- response.setWriteCallback(new AbstractResource.WriteCallback() {
-
- @Override
- public void writeData(final IResource.Attributes attributes) throws IOException {
- attributes.getResponse().write(MAPPER.writeValueAsString(resourceTOs));
- }
- });
- response.setStatusCode(Response.Status.OK.getStatusCode());
- } catch (Exception e) {
- LOG.error("Error retrieving available resources", e);
- response.setError(Response.Status.BAD_REQUEST.getStatusCode(), new StringBuilder()
- .append("ErrorMessage{{ ")
- .append(e.getMessage())
- .append(" }}")
- .toString());
- }
- return response;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/55b9e83d/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js b/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js
index e93e3a2..1d33e3d 100644
--- a/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js
+++ b/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js
@@ -21,9 +21,9 @@
'use strict';
-angular.module("self").controller("UserController", ['$scope', '$rootScope', '$location', '$compile', "$state", 'AuthService',
- 'UserSelfService', 'SchemaService', 'RealmService', 'ResourceService', 'SecurityQuestionService', 'GroupService',
- 'AnyService', 'UserUtil', 'GenericUtil', "ValidationExecutor",
+angular.module("self").controller("UserController", ['$scope', '$rootScope', '$location', '$compile', "$state",
+ 'AuthService', 'UserSelfService', 'SchemaService', 'RealmService', 'ResourceService', 'SecurityQuestionService',
+ 'GroupService', 'AnyService', 'UserUtil', 'GenericUtil', "ValidationExecutor",
function ($scope, $rootScope, $location, $compile, $state, AuthService, UserSelfService, SchemaService, RealmService,
ResourceService, SecurityQuestionService, GroupService, AnyService, UserUtil, GenericUtil, ValidationExecutor) {
@@ -106,7 +106,8 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l
};
// add other values
for (var j = 1; j < $scope.user.plainAttrs[plainSchemaKey].values.length; j++) {
- $scope.dynamicForm.attributeTable[schemas.plainSchemas[i].key].fields.push(schemas.plainSchemas[i].key + "_" + j);
+ $scope.dynamicForm.attributeTable[schemas.plainSchemas[i].key].fields.
+ push(schemas.plainSchemas[i].key + "_" + j);
}
}
}
@@ -141,7 +142,8 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l
};
// add other values
for (var j = 1; j < $scope.user.virAttrs[virSchemaKey].values.length; j++) {
- $scope.dynamicForm.virtualAttributeTable[schemas.virSchemas[i].key].fields.push(schemas.virSchemas[i].key + "_" + j);
+ $scope.dynamicForm.virtualAttributeTable[schemas.virSchemas[i].key].fields.
+ push(schemas.virSchemas[i].key + "_" + j);
}
}
}
@@ -166,11 +168,12 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l
};
var initRealms = function () {
- $scope.availableRealms = RealmService.getAvailableRealmsStub();
- };
-
- var initUserRealm = function () {
- $scope.user.realm = RealmService.getUserRealm();
+ RealmService.getAvailableRealms().then(function (response) {
+ for (var i in response) {
+ $scope.availableRealms.push(response[i].fullPath);
+ }
+ $scope.availableRealms.sort();
+ });
};
var initResources = function () {
@@ -193,6 +196,10 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l
});
};
+ $scope.refreshGroups = function () {
+ initGroups();
+ }
+
var initAuxClasses = function () {
//fetching default user classes, that should remain in any case
AnyService.getAnyType("USER").then(function (response) {
@@ -330,7 +337,7 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l
$scope.user = {
username: '',
password: '',
- realm: '',
+ realm: '/',
securityQuestion: undefined,
securityAnswer: '',
plainAttrs: {},
@@ -339,8 +346,6 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l
resources: [],
auxClasses: []
};
- // retrieve user realm or all available realms
- initUserRealm();
// initialize auxiliary schemas in case of pre-existing classes
for (var index in $scope.dynamicForm.selectedAuxClasses) {
initUserSchemas($scope.dynamicForm.selectedAuxClasses[index]);
http://git-wip-us.apache.org/repos/asf/syncope/blob/55b9e83d/client/enduser/src/main/resources/META-INF/resources/app/js/services/anyService.js
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/resources/META-INF/resources/app/js/services/anyService.js b/client/enduser/src/main/resources/META-INF/resources/app/js/services/anyService.js
index a424013..59f8ec3 100644
--- a/client/enduser/src/main/resources/META-INF/resources/app/js/services/anyService.js
+++ b/client/enduser/src/main/resources/META-INF/resources/app/js/services/anyService.js
@@ -30,7 +30,8 @@ angular.module('self')
.then(function (response) {
return response.data;
}, function (response) {
- console.debug("Something went wrong during auxiliaryClasses retrieval, exit with status: ", response);
+ console.error("Something went wrong during auxiliaryClasses retrieval, exit with status: ",
+ response);
return $q.reject(response.data || response.statusText);
});
};
@@ -40,7 +41,8 @@ angular.module('self')
.then(function (response) {
return response.data;
}, function (response) {
- console.error("Something went wrong during anyType user API retrieval, exit with status: ", response);
+ console.error("Something went wrong during anyType user API retrieval, exit with status: ",
+ response);
return $q.reject(response.data || response.statusText);
});
};
http://git-wip-us.apache.org/repos/asf/syncope/blob/55b9e83d/client/enduser/src/main/resources/META-INF/resources/app/js/services/groupService.js
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/resources/META-INF/resources/app/js/services/groupService.js b/client/enduser/src/main/resources/META-INF/resources/app/js/services/groupService.js
index 7b1f8d0..1de1ef1 100644
--- a/client/enduser/src/main/resources/META-INF/resources/app/js/services/groupService.js
+++ b/client/enduser/src/main/resources/META-INF/resources/app/js/services/groupService.js
@@ -26,7 +26,7 @@ angular.module('self')
var groupService = {};
groupService.getGroups = function (realm) {
- return $http.get("/syncope-enduser/api/groups?realm="+encodeURI(realm))
+ return $http.get("/syncope-enduser/api/groups?realm=" + encodeURI(realm))
.then(function (response) {
return response.data;
}, function (response) {
http://git-wip-us.apache.org/repos/asf/syncope/blob/55b9e83d/client/enduser/src/main/resources/META-INF/resources/app/js/services/realmService.js
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/resources/META-INF/resources/app/js/services/realmService.js b/client/enduser/src/main/resources/META-INF/resources/app/js/services/realmService.js
index 3c030ac..a129df7 100644
--- a/client/enduser/src/main/resources/META-INF/resources/app/js/services/realmService.js
+++ b/client/enduser/src/main/resources/META-INF/resources/app/js/services/realmService.js
@@ -25,14 +25,9 @@ angular.module('self')
var realmService = {};
- realmService.getAvailableRealmsStub = function () {
- return ["/"];
- };
-
realmService.getAvailableRealms = function () {
- return $http.get("/syncope-enduser/api/realms")
+ return $http.get("/syncope-enduser/api/realms")
.then(function (response) {
- console.debug("realms response: ", response);
return response.data;
}, function (response) {
console.error("Something went wrong during realms retrieval, exit with status: ", response);
@@ -40,8 +35,5 @@ angular.module('self')
});
};
- realmService.getUserRealm = function () {
- return "/";
- };
return realmService;
}]);
http://git-wip-us.apache.org/repos/asf/syncope/blob/55b9e83d/client/enduser/src/main/resources/META-INF/resources/app/js/services/resourceService.js
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/resources/META-INF/resources/app/js/services/resourceService.js b/client/enduser/src/main/resources/META-INF/resources/app/js/services/resourceService.js
index 9ad2cc4..e5d2d2a 100644
--- a/client/enduser/src/main/resources/META-INF/resources/app/js/services/resourceService.js
+++ b/client/enduser/src/main/resources/META-INF/resources/app/js/services/resourceService.js
@@ -31,7 +31,7 @@ angular.module('self')
.then(function (response) {
return response.data;
}, function (response) {
- console.debug("Something went wrong during resources retrieval, exit with status: ", response);
+ console.error("Something went wrong during resources retrieval, exit with status: ", response);
return $q.reject(response.data || response.statusText);
});
};
http://git-wip-us.apache.org/repos/asf/syncope/blob/55b9e83d/client/enduser/src/main/resources/META-INF/resources/app/js/services/securityQuestionService.js
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/resources/META-INF/resources/app/js/services/securityQuestionService.js b/client/enduser/src/main/resources/META-INF/resources/app/js/services/securityQuestionService.js
index 417468c..45fa80b 100644
--- a/client/enduser/src/main/resources/META-INF/resources/app/js/services/securityQuestionService.js
+++ b/client/enduser/src/main/resources/META-INF/resources/app/js/services/securityQuestionService.js
@@ -35,7 +35,7 @@ angular.module('self')
};
securityQuestionService.getSecurityQuestionByUser = function (username) {
- return $http.get("/syncope-enduser/api/securityQuestions/byUser/"+username)
+ return $http.get("/syncope-enduser/api/securityQuestions/byUser/" + username)
.then(function (response) {
return response.data;
}, function (response) {
http://git-wip-us.apache.org/repos/asf/syncope/blob/55b9e83d/client/enduser/src/main/resources/META-INF/resources/app/js/services/userSelfService.js
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/resources/META-INF/resources/app/js/services/userSelfService.js b/client/enduser/src/main/resources/META-INF/resources/app/js/services/userSelfService.js
index 09a8ac8..9f9f444 100644
--- a/client/enduser/src/main/resources/META-INF/resources/app/js/services/userSelfService.js
+++ b/client/enduser/src/main/resources/META-INF/resources/app/js/services/userSelfService.js
@@ -40,7 +40,6 @@ angular.module('login')
headers: {'captcha': captcha}
})
.then(function (response) {
- console.debug("response save: ", response);
var username = response;
return username;
}, function (response) {
http://git-wip-us.apache.org/repos/asf/syncope/blob/55b9e83d/client/enduser/src/main/resources/META-INF/resources/app/views/user-groups.html
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/resources/META-INF/resources/app/views/user-groups.html b/client/enduser/src/main/resources/META-INF/resources/app/views/user-groups.html
index 7f28dd5..632da03 100644
--- a/client/enduser/src/main/resources/META-INF/resources/app/views/user-groups.html
+++ b/client/enduser/src/main/resources/META-INF/resources/app/views/user-groups.html
@@ -19,8 +19,7 @@ under the License.
<div id="attribute" class="form-group row upper-select">
<label>{{"REALM"|translate}}</label>
<select class="form-control"
- ng-disabled="true"
- ng-model="user.realm"
+ ng-model="user.realm" ng-change="refreshGroups()"
ng-required="true">
<option ng-repeat="realm in availableRealms" value="{{realm}}">{{realm}}</option>
</select>
http://git-wip-us.apache.org/repos/asf/syncope/blob/55b9e83d/core/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java
index 6cc22fd..e82e495 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java
@@ -48,6 +48,7 @@ import org.apache.syncope.core.provisioning.api.data.RealmDataBinder;
import org.apache.syncope.core.provisioning.api.propagation.PropagationManager;
import org.apache.syncope.core.provisioning.api.propagation.PropagationReporter;
import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskExecutor;
+import org.apache.syncope.core.spring.security.AuthContextUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Component;
@@ -70,7 +71,7 @@ public class RealmLogic extends AbstractTransactionalLogic<RealmTO> {
@Autowired
private PropagationTaskExecutor taskExecutor;
- @PreAuthorize("hasRole('" + StandardEntitlement.REALM_LIST + "')")
+ @PreAuthorize("isAuthenticated()")
public List<RealmTO> list(final String fullPath) {
Realm realm = realmDAO.findByFullPath(fullPath);
if (realm == null) {
@@ -79,11 +80,12 @@ public class RealmLogic extends AbstractTransactionalLogic<RealmTO> {
throw new NotFoundException(fullPath);
}
+ final boolean admin = AuthContextUtils.getAuthorizations().keySet().contains(StandardEntitlement.REALM_LIST);
return CollectionUtils.collect(realmDAO.findDescendants(realm), new Transformer<Realm, RealmTO>() {
@Override
public RealmTO transform(final Realm input) {
- return binder.getRealmTO(input);
+ return binder.getRealmTO(input, admin);
}
}, new ArrayList<RealmTO>());
}
@@ -105,7 +107,7 @@ public class RealmLogic extends AbstractTransactionalLogic<RealmTO> {
PropagationReporter propagationReporter = taskExecutor.execute(tasks, false);
ProvisioningResult<RealmTO> result = new ProvisioningResult<>();
- result.setEntity(binder.getRealmTO(realm));
+ result.setEntity(binder.getRealmTO(realm, true));
result.getPropagationStatuses().addAll(propagationReporter.getStatuses());
return result;
@@ -127,7 +129,7 @@ public class RealmLogic extends AbstractTransactionalLogic<RealmTO> {
PropagationReporter propagationReporter = taskExecutor.execute(tasks, false);
ProvisioningResult<RealmTO> result = new ProvisioningResult<>();
- result.setEntity(binder.getRealmTO(realm));
+ result.setEntity(binder.getRealmTO(realm, true));
result.getPropagationStatuses().addAll(propagationReporter.getStatuses());
return result;
@@ -170,7 +172,7 @@ public class RealmLogic extends AbstractTransactionalLogic<RealmTO> {
PropagationReporter propagationReporter = taskExecutor.execute(tasks, false);
ProvisioningResult<RealmTO> result = new ProvisioningResult<>();
- result.setEntity(binder.getRealmTO(realm));
+ result.setEntity(binder.getRealmTO(realm, true));
result.getPropagationStatuses().addAll(propagationReporter.getStatuses());
realmDAO.delete(realm);
@@ -196,7 +198,7 @@ public class RealmLogic extends AbstractTransactionalLogic<RealmTO> {
if (fullPath != null) {
try {
- return binder.getRealmTO(realmDAO.findByFullPath(fullPath));
+ return binder.getRealmTO(realmDAO.findByFullPath(fullPath), true);
} catch (Throwable e) {
LOG.debug("Unresolved reference", e);
throw new UnresolvedReferenceException(e);
http://git-wip-us.apache.org/repos/asf/syncope/blob/55b9e83d/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/RealmDataBinder.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/RealmDataBinder.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/RealmDataBinder.java
index 380cb30..44e00fc 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/RealmDataBinder.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/RealmDataBinder.java
@@ -28,6 +28,6 @@ public interface RealmDataBinder {
PropagationByResource update(Realm realm, RealmTO realmTO);
- RealmTO getRealmTO(Realm realm);
+ RealmTO getRealmTO(Realm realm, boolean admin);
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/55b9e83d/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/RealmDataBinderImpl.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/RealmDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/RealmDataBinderImpl.java
index 015612e..32678cc 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/RealmDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/RealmDataBinderImpl.java
@@ -210,23 +210,26 @@ public class RealmDataBinderImpl implements RealmDataBinder {
}
@Override
- public RealmTO getRealmTO(final Realm realm) {
+ public RealmTO getRealmTO(final Realm realm, final boolean admin) {
RealmTO realmTO = new RealmTO();
realmTO.setKey(realm.getKey());
realmTO.setName(realm.getName());
realmTO.setParent(realm.getParent() == null ? null : realm.getParent().getKey());
realmTO.setFullPath(realm.getFullPath());
- realmTO.setAccountPolicy(realm.getAccountPolicy() == null ? null : realm.getAccountPolicy().getKey());
- realmTO.setPasswordPolicy(realm.getPasswordPolicy() == null ? null : realm.getPasswordPolicy().getKey());
- realmTO.getActionsClassNames().addAll(realm.getActionsClassNames());
- for (AnyTemplate template : realm.getTemplates()) {
- realmTO.getTemplates().put(template.getAnyType().getKey(), template.get());
- }
+ if (admin) {
+ realmTO.setAccountPolicy(realm.getAccountPolicy() == null ? null : realm.getAccountPolicy().getKey());
+ realmTO.setPasswordPolicy(realm.getPasswordPolicy() == null ? null : realm.getPasswordPolicy().getKey());
+ realmTO.getActionsClassNames().addAll(realm.getActionsClassNames());
+
+ for (AnyTemplate template : realm.getTemplates()) {
+ realmTO.getTemplates().put(template.getAnyType().getKey(), template.get());
+ }
- for (ExternalResource resource : realm.getResources()) {
- realmTO.getResources().add(resource.getKey());
+ for (ExternalResource resource : realm.getResources()) {
+ realmTO.getResources().add(resource.getKey());
+ }
}
return realmTO;
http://git-wip-us.apache.org/repos/asf/syncope/blob/55b9e83d/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/RealmPullResultHandlerImpl.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/RealmPullResultHandlerImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/RealmPullResultHandlerImpl.java
index d2d9dc5..db285a8 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/RealmPullResultHandlerImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/RealmPullResultHandlerImpl.java
@@ -221,9 +221,9 @@ public class RealmPullResultHandlerImpl
propByRes.add(ResourceOperation.CREATE, resource);
}
List<PropagationTask> tasks = propagationManager.createTasks(realm, propByRes, null);
- PropagationReporter propagationReporter = taskExecutor.execute(tasks, false);
+ taskExecutor.execute(tasks, false);
- RealmTO actual = binder.getRealmTO(realm);
+ RealmTO actual = binder.getRealmTO(realm, true);
result.setKey(actual.getKey());
result.setName(profile.getTask().getDestinatioRealm().getFullPath() + "/" + actual.getName());
@@ -265,7 +265,7 @@ public class RealmPullResultHandlerImpl
LOG.debug("About to update {}", realm);
- RealmTO before = binder.getRealmTO(realm);
+ RealmTO before = binder.getRealmTO(realm, true);
ProvisioningReport result = new ProvisioningReport();
result.setOperation(ResourceOperation.UPDATE);
@@ -327,7 +327,7 @@ public class RealmPullResultHandlerImpl
result.setStatus(ProvisioningReport.Status.SUCCESS);
result.setKey(realm.getKey());
- RealmTO before = binder.getRealmTO(realm);
+ RealmTO before = binder.getRealmTO(realm, true);
Object output;
Result resultStatus;
@@ -351,9 +351,9 @@ public class RealmPullResultHandlerImpl
if (unlink) {
realm.getResources().remove(profile.getTask().getResource());
- output = binder.getRealmTO(realmDAO.save(realm));
+ output = binder.getRealmTO(realmDAO.save(realm), true);
} else {
- output = binder.getRealmTO(realm);
+ output = binder.getRealmTO(realm, true);
}
for (PullActions action : profile.getActions()) {
@@ -403,7 +403,7 @@ public class RealmPullResultHandlerImpl
result.setStatus(ProvisioningReport.Status.SUCCESS);
result.setKey(realm.getKey());
- RealmTO before = binder.getRealmTO(realm);
+ RealmTO before = binder.getRealmTO(realm, true);
Object output;
Result resultStatus;
@@ -476,7 +476,7 @@ public class RealmPullResultHandlerImpl
ProvisioningReport result = new ProvisioningReport();
try {
- RealmTO before = binder.getRealmTO(realm);
+ RealmTO before = binder.getRealmTO(realm, true);
result.setKey(realm.getKey());
result.setName(realm.getFullPath());
http://git-wip-us.apache.org/repos/asf/syncope/blob/55b9e83d/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/RealmPushResultHandlerImpl.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/RealmPushResultHandlerImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/RealmPushResultHandlerImpl.java
index 2425ac4..f0b4438 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/RealmPushResultHandlerImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/RealmPushResultHandlerImpl.java
@@ -107,7 +107,7 @@ public class RealmPushResultHandlerImpl
}
private void link(final Realm realm, final Boolean unlink) {
- RealmTO realmTO = binder.getRealmTO(realm);
+ RealmTO realmTO = binder.getRealmTO(realm, true);
if (unlink) {
realmTO.getResources().remove(profile.getTask().getResource().getKey());
} else {
@@ -118,14 +118,14 @@ public class RealmPushResultHandlerImpl
}
private void unassign(final Realm realm) {
- RealmTO realmTO = binder.getRealmTO(realm);
+ RealmTO realmTO = binder.getRealmTO(realm, true);
realmTO.getResources().remove(profile.getTask().getResource().getKey());
deprovision(update(realmTO));
}
private void assign(final Realm realm) {
- RealmTO realmTO = binder.getRealmTO(realm);
+ RealmTO realmTO = binder.getRealmTO(realm, true);
realmTO.getResources().add(profile.getTask().getResource().getKey());
provision(update(realmTO));
@@ -222,7 +222,7 @@ public class RealmPushResultHandlerImpl
if (!profile.getTask().isPerformUpdate()) {
LOG.debug("PushTask not configured for update");
} else {
- update(binder.getRealmTO(realm));
+ update(binder.getRealmTO(realm, true));
}
break;