You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by ta...@apache.org on 2015/03/14 17:58:02 UTC
svn commit: r1666716 - in /portals/jetspeed-2/portal/trunk:
applications/jetspeed/src/main/webapp/WEB-INF/min-pages/Administrative/security/
applications/jetspeed/src/main/webapp/WEB-INF/pages/Administrative/
components/jetspeed-portal/src/main/java/or...
Author: taylor
Date: Sat Mar 14 16:58:01 2015
New Revision: 1666716
URL: http://svn.apache.org/r1666716
Log:
JS2-1293: adding profiler support to User Manager Rest APIs. Making Fast(Ajax) User Manager default
Modified:
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/min-pages/Administrative/security/user-mgt.psml
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/pages/Administrative/user-mgt.psml
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/beans/UserDataTableBean.java
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/beans/UserDetailBean.java
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/rest/UserManagerService.java
portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/om/folder/Folder.java
Modified: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/min-pages/Administrative/security/user-mgt.psml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/min-pages/Administrative/security/user-mgt.psml?rev=1666716&r1=1666715&r2=1666716&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/min-pages/Administrative/security/user-mgt.psml (original)
+++ portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/min-pages/Administrative/security/user-mgt.psml Sat Mar 14 16:58:01 2015
@@ -30,7 +30,7 @@ limitations under the License.
<metadata name="title" xml:lang="ko">ì¬ì©ì ê´ë¦¬</metadata>
<fragment id="um-2" type="layout" name="jetspeed-layouts::VelocityOneColumn">
- <fragment id="um-3" type="portlet" name="j2-admin::JetspeedPrincipalManagementUserPortlet">
+ <fragment id="um-3" type="portlet" name="j2-admin::JetspeedAjaxUserManager">
<property layout="TwoColumns" name="row" value="0" />
<property layout="TwoColumns" name="column" value="0" />
</fragment>
Modified: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/pages/Administrative/user-mgt.psml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/pages/Administrative/user-mgt.psml?rev=1666716&r1=1666715&r2=1666716&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/pages/Administrative/user-mgt.psml (original)
+++ portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/pages/Administrative/user-mgt.psml Sat Mar 14 16:58:01 2015
@@ -30,7 +30,7 @@ limitations under the License.
<metadata name="title" xml:lang="ko">ì¬ì©ì ê´ë¦¬</metadata>
<fragment id="um-2" type="layout" name="jetspeed-layouts::VelocityOneColumn">
- <fragment id="um-3" type="portlet" name="j2-admin::JetspeedPrincipalManagementUserPortlet">
+ <fragment id="um-3" type="portlet" name="j2-admin::JetspeedAjaxUserManager">
<property layout="TwoColumns" name="row" value="0" />
<property layout="TwoColumns" name="column" value="0" />
</fragment>
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/beans/UserDataTableBean.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/beans/UserDataTableBean.java?rev=1666716&r1=1666715&r2=1666716&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/beans/UserDataTableBean.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/beans/UserDataTableBean.java Sat Mar 14 16:58:01 2015
@@ -16,16 +16,15 @@
*/
package org.apache.jetspeed.services.beans;
+import org.apache.jetspeed.security.JetspeedPrincipal;
+import org.apache.jetspeed.security.JetspeedPrincipalResultList;
+
+import javax.xml.bind.annotation.XmlRootElement;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
-import javax.xml.bind.annotation.XmlRootElement;
-
-import org.apache.jetspeed.security.JetspeedPrincipal;
-import org.apache.jetspeed.security.JetspeedPrincipalResultList;
-
/**
* DTO for user search result list to be displayed in the view. The object will
* be transformed to JSON to be transfered to the JS client.
@@ -45,6 +44,8 @@ public class UserDataTableBean implement
private String dir = "asc";
private long pageSize = 5;
private List<HashMap<String, String>> records = null;
+ private List<String> availableRules = null;
+ private List<String> templates = null;
public UserDataTableBean() {
}
@@ -169,4 +170,19 @@ public class UserDataTableBean implement
this.records = records;
}
+ public List<String> getAvailableRules() {
+ return availableRules;
+ }
+
+ public void setAvailableRules(List<String> availableRules) {
+ this.availableRules = availableRules;
+ }
+
+ public List<String> getTemplates() {
+ return templates;
+ }
+
+ public void setTemplates(List<String> templates) {
+ this.templates = templates;
+ }
}
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/beans/UserDetailBean.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/beans/UserDetailBean.java?rev=1666716&r1=1666715&r2=1666716&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/beans/UserDetailBean.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/beans/UserDetailBean.java Sat Mar 14 16:58:01 2015
@@ -16,19 +16,18 @@
*/
package org.apache.jetspeed.services.beans;
+import org.apache.jetspeed.security.Group;
+import org.apache.jetspeed.security.PasswordCredential;
+import org.apache.jetspeed.security.Role;
+import org.apache.jetspeed.security.User;
+
+import javax.xml.bind.annotation.XmlRootElement;
import java.io.Serializable;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
-import javax.xml.bind.annotation.XmlRootElement;
-
-import org.apache.jetspeed.security.Group;
-import org.apache.jetspeed.security.PasswordCredential;
-import org.apache.jetspeed.security.Role;
-import org.apache.jetspeed.security.User;
-
/**
* DTO for user details data. The object will be transformed to JSON to be
* transfered to the JS client.
@@ -48,13 +47,15 @@ public class UserDetailBean implements S
private List<String> groups = null;
private List<String> availableRoles = null;
private List<String> availableGroups = null;
-
+ private List<String> availableRules = null;
+ private String rule = null;
private static final long serialVersionUID = 1L;
public UserDetailBean() {
}
- public UserDetailBean(User user, PasswordCredential credential, List<Role> roles, List<Group> groups, List<String> allRoles, List<String> allGroups) {
+ public UserDetailBean(User user, PasswordCredential credential, List<Role> roles, List<Group> groups,
+ List<String> allRoles, List<String> allGroups, String rule, List<String> profilingRules) {
this.name = user.getName();
this.infoMap = user.getInfoMap();
this.creationDate = user.getCreationDate();
@@ -62,6 +63,8 @@ public class UserDetailBean implements S
this.enabled = user.isEnabled();
this.availableRoles = allRoles;
this.availableGroups = allGroups;
+ this.availableRules = profilingRules;
+ this.rule = rule;
this.credentialUpdateRequired = credential.isUpdateRequired();
for (Role role : roles) {
this.roles = (this.roles == null ? new ArrayList<String>() : this.roles);
@@ -222,4 +225,20 @@ public class UserDetailBean implements S
public boolean isCredentialUpdateRequired() {
return credentialUpdateRequired;
}
+
+ public List<String> getAvailableRules() {
+ return availableRules;
+ }
+
+ public void setAvailableRules(List<String> availableRules) {
+ this.availableRules = availableRules;
+ }
+
+ public String getRule() {
+ return rule;
+ }
+
+ public void setRule(String rule) {
+ this.rule = rule;
+ }
}
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/rest/UserManagerService.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/rest/UserManagerService.java?rev=1666716&r1=1666715&r2=1666716&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/rest/UserManagerService.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/rest/UserManagerService.java Sat Mar 14 16:58:01 2015
@@ -16,25 +16,6 @@
*/
package org.apache.jetspeed.services.rest;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.FormParam;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
-import javax.ws.rs.core.Response.ResponseBuilder;
-import javax.ws.rs.core.Response.Status;
-
import org.apache.jetspeed.Jetspeed;
import org.apache.jetspeed.JetspeedActions;
import org.apache.jetspeed.administration.PortalConfigurationConstants;
@@ -42,7 +23,10 @@ import org.apache.jetspeed.exception.Jet
import org.apache.jetspeed.layout.PortletActionSecurityBehavior;
import org.apache.jetspeed.om.folder.Folder;
import org.apache.jetspeed.page.PageManager;
+import org.apache.jetspeed.page.document.Node;
+import org.apache.jetspeed.profiler.ProfileLocator;
import org.apache.jetspeed.profiler.Profiler;
+import org.apache.jetspeed.profiler.rules.PrincipalRule;
import org.apache.jetspeed.profiler.rules.ProfilingRule;
import org.apache.jetspeed.request.RequestContext;
import org.apache.jetspeed.security.Group;
@@ -60,6 +44,27 @@ import org.apache.jetspeed.services.bean
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.ResponseBuilder;
+import javax.ws.rs.core.Response.Status;
+import javax.ws.rs.core.UriInfo;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
/**
* UserManagerService. This REST service provides access to the jetspeed user manager. The access of all methods are restricted to the users with the 'admin'
* role.
@@ -138,7 +143,8 @@ public class UserManagerService
result.setStartIndex(startIndex);
result.setPageSize(results);
result.setRecordsReturned(results);
-
+ result.setAvailableRules(getProfilingRuleNames());
+ result.setTemplates(getUserTemplates());
return result;
}
catch (SecurityException e)
@@ -178,8 +184,9 @@ public class UserManagerService
List<String> availableRoles = roleManager.getRoleNames(null);
List<Group> groups = groupManager.getGroupsForUser(user.getName());
List<String> availableGroups = groupManager.getGroupNames(null);
-
- return new UserDetailBean(user, credential, roles, groups, availableRoles, availableGroups);
+ List<String> ruleNames = getProfilingRuleNames();
+ String userRule = getProfilingRuleForUser(user);
+ return new UserDetailBean(user, credential, roles, groups, availableRoles, availableGroups, userRule, ruleNames);
}
catch (Exception e)
{
@@ -207,7 +214,8 @@ public class UserManagerService
@FormParam("user_email") String userEmail, @FormParam("password") String password,
@FormParam("password_confirm") String passwordConfirm, @FormParam("user_enabled") Boolean userEnabled,
@FormParam("credential_update_required") Boolean credentialUpdateRequired, @FormParam("roles") List<String> roles,
- @FormParam("groups") List<String> groups)
+ @FormParam("groups") List<String> groups,
+ @FormParam("rule") String rule)
{
checkPrivilege(servletRequest, JetspeedActions.VIEW);
@@ -302,7 +310,30 @@ public class UserManagerService
groupManager.addUserToGroup(userName, groupName);
}
}
-
+ if (rule == null || rule.trim().length() == 0) {
+ Collection<PrincipalRule> userRules = profiler.getRulesForPrincipal(user);
+ PrincipalRule deleteRule = null;
+ for (PrincipalRule userRule : userRules) {
+ if (userRule.getLocatorName().equals(ProfileLocator.PAGE_LOCATOR)) {
+ deleteRule = userRule;
+ break;
+ }
+ }
+ if (deleteRule != null) {
+ profiler.deletePrincipalRule(deleteRule);
+ }
+ }
+ else {
+ ProfilingRule profilingRule = profiler.getRule(rule);
+ if (profilingRule != null) {
+ profiler.setRuleForPrincipal(user, profilingRule, ProfileLocator.PAGE_LOCATOR);
+ }
+ else
+ {
+ log.error("Failed to set profiling rule for principal. Invalid profiling rule: " + rule);
+ }
+
+ }
return new Boolean(true);
}
catch (WebApplicationException e)
@@ -351,7 +382,8 @@ public class UserManagerService
public Boolean createUser(@Context HttpServletRequest servletRequest, @Context UriInfo uriInfo, @FormParam("name") String userName,
@FormParam("user_name_given") String userNameGiven, @FormParam("user_name_family") String userNameFamily,
@FormParam("user_email") String userEmail, @FormParam("password") String password,
- @FormParam("password_confirm") String passwordConfirm, @FormParam("credential_update_required") Boolean credentialUpdateRequired)
+ @FormParam("password_confirm") String passwordConfirm, @FormParam("credential_update_required") Boolean credentialUpdateRequired,
+ @FormParam("newrule") String rule)
{
checkPrivilege(servletRequest, JetspeedActions.VIEW);
@@ -404,19 +436,15 @@ public class UserManagerService
}
// add default user profiling rules
- String[] defaultUserProfilingRules = Jetspeed.getConfiguration().getStringArray(PortalConfigurationConstants.REGISTRATION_ROLES_DEFAULT);
-
- for (String defaultUserProfilingRule : defaultUserProfilingRules)
- {
- ProfilingRule profilingRule = profiler.getRule(defaultUserProfilingRule);
-
+ if (rule != null && rule.trim().length() > 0) {
+ ProfilingRule profilingRule = profiler.getRule(rule);
if (profilingRule != null)
{
- profiler.setRuleForPrincipal(user, profilingRule, "default");
+ profiler.setRuleForPrincipal(user, profilingRule, ProfileLocator.PAGE_LOCATOR);
}
else
{
- log.error("Failed to set profiling rule for principal. Invalid profiling rule: " + defaultUserProfilingRule);
+ log.error("Failed to set profiling rule for principal. Invalid profiling rule: " + rule);
}
}
@@ -493,6 +521,45 @@ public class UserManagerService
}
}
+ protected List<String> getProfilingRuleNames() {
+ List<String> names = new ArrayList<>();
+ names.add("");
+ Collection<ProfilingRule> rules = profiler.getRules();
+ for (ProfilingRule rule : rules) {
+ names.add(rule.getId());
+ }
+ return names;
+ }
+
+ protected String getProfilingRuleForUser(User user) {
+ Collection<PrincipalRule> userRules = profiler.getRulesForPrincipal(user);
+ for (PrincipalRule userRule : userRules) {
+ if (userRule.getLocatorName().equals(ProfileLocator.PAGE_LOCATOR)) {
+ return userRule.getProfilingRule().getId();
+ }
+ }
+ return "";
+ }
+
+ protected List<String> getUserTemplates() {
+ String defaultTemplateFolder = Jetspeed.getConfiguration().getString(PortalConfigurationConstants.PSML_TEMPLATE_FOLDER);
+ List<String> templates = new ArrayList<>();
+ try {
+ Folder templateFolder = pageManager.getFolder(Folder.USER_TEMPLATE_FOLDER);
+ Iterator<Node> folders = templateFolder.getFolders().iterator();
+ while (folders.hasNext()) {
+ Folder folder = (Folder)folders.next();
+ // LEFT OFF HERE - need display and page name
+ String name = (folder.getShortTitle() == null ? (folder.getTitle() == null ? folder.getName() : folder.getTitle()) : folder.getShortTitle());
+ templates.add(name);
+ }
+ }
+ catch (Exception e) {
+ log.error("Failed to retrieve templates", e);
+ }
+ return templates;
+ }
+
protected void checkPrivilege(HttpServletRequest servletRequest, String action)
{
RequestContext requestContext = (RequestContext) servletRequest.getAttribute(RequestContext.REQUEST_PORTALENV);
Modified: portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/om/folder/Folder.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/om/folder/Folder.java?rev=1666716&r1=1666715&r2=1666716&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/om/folder/Folder.java (original)
+++ portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/om/folder/Folder.java Sat Mar 14 16:58:01 2015
@@ -54,7 +54,8 @@ public interface Folder extends Node, Se
String RESERVED_MEDIATYPE_FOLDER_NAME = RESERVED_FOLDER_PREFIX + "mediatype";
String RESERVED_LANGUAGE_FOLDER_NAME = RESERVED_FOLDER_PREFIX + "language";
String RESERVED_COUNTRY_FOLDER_NAME = RESERVED_FOLDER_PREFIX + "country";
-
+ String RESERVED_USER_TEMPLATE_FOLDER_NAME = RESERVED_FOLDER_PREFIX + "template";
+
String USER_FOLDER = PATH_SEPARATOR + RESERVED_USER_FOLDER_NAME + PATH_SEPARATOR;
String ROLE_FOLDER = PATH_SEPARATOR + RESERVED_ROLE_FOLDER_NAME + PATH_SEPARATOR;
String GROUP_FOLDER = PATH_SEPARATOR + RESERVED_GROUP_FOLDER_NAME + PATH_SEPARATOR;
@@ -62,6 +63,7 @@ public interface Folder extends Node, Se
String LANGUAGE_FOLDER = PATH_SEPARATOR + RESERVED_LANGUAGE_FOLDER_NAME + PATH_SEPARATOR;
String COUNTRY_FOLDER = PATH_SEPARATOR + RESERVED_COUNTRY_FOLDER_NAME + PATH_SEPARATOR;
String SUBSITE_ROOT_FOLDER = RESERVED_SUBSITE_FOLDER_PREFIX + "subsite-root" + PATH_SEPARATOR;
+ String USER_TEMPLATE_FOLDER = PATH_SEPARATOR + RESERVED_USER_TEMPLATE_FOLDER_NAME + PATH_SEPARATOR;
int RESERVED_FOLDER_NONE = 0;
int RESERVED_FOLDER_SUBSITES = 1;
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org