();
+
+ //Danielle Knotts is an indirect member of
+ // Root : Departments : Information Technology : Staff
+ // which is a direct member of
+ // Root : Applications : Wiki : Editors
Back to previous page
+ //
+ boolean firstPath = true;
+ // loop through each membership path
+ for (MembershipPath membershipPath : membershipPathsAllowed) {
+
+ if (!firstPath) {
+ result.append("
\n");
+ }
+
+ int pathLineNumber = 0;
+ membershipGuiContainer.setLineNumber(pathLineNumber);
+ result.append(TextContainer.retrieveFromRequest().getText().get("membershipTracePathFirstLine")).append("\n");
+ pathLineNumber++;
+ membershipGuiContainer.setLineNumber(pathLineNumber);
+
+ boolean firstNode = true;
+
+ Subject currentSubject = subject;
+
+ //loop through each node in the path
+ for (MembershipPathNode membershipPathNode : membershipPath.getMembershipPathNodes()) {
+
+ Group ownerGroup = membershipPathNode.getOwnerGroup();
+ groupIdsForTimeline.add(ownerGroup.getId());
+
+ if (!firstNode) {
+
+ if (membershipPathNode.isComposite()) {
+
+ //dont know what branch of the composite we are on... so
+ Group factor = membershipPathNode.getOtherFactor();
+ membershipGuiContainer.setGuiGroupFactor(new GuiGroup(factor));
+
+ if (factor != null) {
+ if (factor.canHavePrivilege(GrouperSession.staticGrouperSession().getSubject(), "read", false)) {
+ groupIdsForTimeline.add(factor.getId());
+ }
+ }
+
+ switch(membershipPathNode.getCompositeType()) {
+ case UNION:
+
+ result.append(TextContainer.retrieveFromRequest().getText().get("membershipTraceGroupCompositeOfUnion")).append("\n");
+ break;
+ case INTERSECTION:
+
+ result.append(TextContainer.retrieveFromRequest().getText().get("membershipTraceGroupCompositeOfIntersection")).append("\n");
+ break;
+ case COMPLEMENT:
+
+ result.append(TextContainer.retrieveFromRequest().getText().get("membershipTraceGroupCompositeOfMinus")).append("\n");
+ break;
+ default:
+ throw new RuntimeException("Not expecting composite type: " + membershipPathNode.getCompositeType());
+ }
+
+ } else {
+ result.append(TextContainer.retrieveFromRequest().getText().get("membershipTraceGroupMemberOf")).append("\n");
+
+ }
+
pathLineNumber++;
membershipGuiContainer.setLineNumber(pathLineNumber);
-
- currentSubject = ownerGroup.toSubject();
+
}
- firstPath = false;
+ membershipGuiContainer.setGuiGroupCurrent(new GuiGroup(ownerGroup));
+
+ Membership membership = MembershipFinder.findImmediateMembership(GrouperSession.staticGrouperSession(), ownerGroup, currentSubject, false);
+ membershipGuiContainer.setGuiMembershipCurrent(new GuiMembership(membership));
+
+ result.append(TextContainer.retrieveFromRequest().getText().get("membershipTraceGroupLine")).append("\n");
+
+ firstNode = false;
+ pathLineNumber++;
+ membershipGuiContainer.setLineNumber(pathLineNumber);
+
+ currentSubject = ownerGroup.toSubject();
}
+ firstPath = false;
+ }
+
+ if (result.length() > 0) {
grouperRequestContainer.getMembershipGuiContainer().setTraceMembershipsString(result.toString());
-
- guiResponseJs.addAction(GuiScreenAction.newInnerHtmlFromJsp("#grouperMainContentDivId",
- "/WEB-INF/grouperUi2/membership/traceMembership.jsp"));
-
- } finally {
- GrouperSession.stopQuietly(grouperSession);
}
+ pitGroupsForTimelineStates.addAll(GrouperDAOFactory.getFactory().getPITGroup().findBySourceIdsActive(groupIdsForTimeline));
+
+ for (Member member : GrouperDAOFactory.getFactory().getMember().findBySubjectIds(groupIdsForTimeline, "g:gsa")) {
+ memberIdsForTimelineAuditQuery.add(member.getId());
+ }
}
/**
diff --git a/grouper-ui/java/src/edu/internet2/middleware/grouper/grouperUi/serviceLogic/UiV2ProvisionerConfiguration.java b/grouper-ui/java/src/edu/internet2/middleware/grouper/grouperUi/serviceLogic/UiV2ProvisionerConfiguration.java
index b7cbb21f08e5..8738782d9a8e 100644
--- a/grouper-ui/java/src/edu/internet2/middleware/grouper/grouperUi/serviceLogic/UiV2ProvisionerConfiguration.java
+++ b/grouper-ui/java/src/edu/internet2/middleware/grouper/grouperUi/serviceLogic/UiV2ProvisionerConfiguration.java
@@ -29,6 +29,8 @@
import edu.internet2.middleware.grouper.app.provisioning.ProvisioningConfiguration;
import edu.internet2.middleware.grouper.audit.AuditEntry;
import edu.internet2.middleware.grouper.audit.AuditTypeBuiltin;
+import edu.internet2.middleware.grouper.cfg.dbConfig.ConfigItemFormElement;
+import edu.internet2.middleware.grouper.cfg.dbConfig.OptionValueDriver;
import edu.internet2.middleware.grouper.changeLog.esb.consumer.ProvisioningMessage;
import edu.internet2.middleware.grouper.grouperUi.beans.json.GuiPaging;
import edu.internet2.middleware.grouper.grouperUi.beans.json.GuiResponseJs;
@@ -810,8 +812,10 @@ public void addProvisionerConfiguration(final HttpServletRequest request, final
String previousProvisionerStartWithClass = request.getParameter("previousProvisionerStartWithClass");
boolean skipStartWith = false;
- if (StringUtils.isNotBlank(provisionerStartWithClass) && StringUtils.equals(provisionerStartWithClass, "blank")) {
+ if ( (StringUtils.isNotBlank(provisionerStartWithClass) && StringUtils.equals(provisionerStartWithClass, "blank")) ||
+ (StringUtils.equals(previousProvisionerStartWithClass, "blank")) ) {
skipStartWith = true;
+ provisionerConfigurationContainer.setBlankStartWithSelected(true);
}
if (!skipStartWith && StringUtils.isNotBlank(provisionerStartWithClass)) {
@@ -851,17 +855,11 @@ public void addProvisionerConfiguration(final HttpServletRequest request, final
configSuffixToValues.put(key, startWithValue);
}
- //Set newKeys = configSuffixToValues.keySet();
Set suffixesUserJustChanged = new HashSet<>();
Map oldSuffixToValue = provisionerStartWith.getCachedConfigKeyToValue(sessionId);
if (oldSuffixToValue != null) {
-// Set oldKeys = oldSuffixToValue.keySet();
-// newKeys.removeAll(oldKeys);
- //now newKeys only have the keys that have been added since the last trip to the server
-
// compare old values with new values and build suffixesUserJustChanged
-
for (String key: startWithAttributes.keySet()) {
String startWithNewValue = startWithAttributes.get(key).getValue();
String startWithOldValue = oldSuffixToValue.get(key);
@@ -883,6 +881,7 @@ public void addProvisionerConfiguration(final HttpServletRequest request, final
if (startWithAttributes.containsKey(key)) {
startWithAttributes.get(key).setValue(GrouperUtil.stringValue(valueToSet));
+ startWithAttributes.get(key).setShow(true);
}
}
}
@@ -890,11 +889,6 @@ public void addProvisionerConfiguration(final HttpServletRequest request, final
}
-
-
-
-
-
}
// once the start with submit is done
@@ -1004,8 +998,30 @@ public void addProvisionerConfigurationSubmit(final HttpServletRequest request,
provisionerConfiguration.setConfigId(provisionerConfigId);
String provisionerStartWithClass = request.getParameter("provisionerStartWithClass");
+ String previousProvisionerStartWithClass = request.getParameter("previousProvisionerStartWithClass");
+
+ List startWithConfigClasses = provisionerConfiguration.getStartWithConfigClasses();
- if (StringUtils.isNotBlank(provisionerStartWithClass)) {
+ if(startWithConfigClasses.size() > 0 && StringUtils.isBlank(previousProvisionerStartWithClass)) {
+
+ GuiProvisionerConfiguration guiProvisioningConfiguration = GuiProvisionerConfiguration.convertFromProvisioningConfiguration(provisionerConfiguration);
+ provisionerConfigurationContainer.setGuiProvisionerConfiguration(guiProvisioningConfiguration);
+
+ guiResponseJs.addAction(GuiScreenAction.newValidationMessage(GuiMessageType.error,
+ "#provisionerConfigStartWithId",
+ TextContainer.retrieveFromRequest().getText().get("provisionerConfigStartWithIdRequired")));
+
+ provisionerConfigurationContainer.setShowStartWithSection(true);
+ guiResponseJs.addAction(GuiScreenAction.newInnerHtmlFromJsp("#grouperMainContentDivId",
+ "/WEB-INF/grouperUi2/provisionerConfigs/provisionerConfigAdd.jsp"));
+
+
+ return;
+
+ }
+
+
+ if (StringUtils.isNotBlank(provisionerStartWithClass) && !StringUtils.equals("empty", provisionerStartWithClass)) {
Class startWithKlass = (Class) GrouperUtil.forName(provisionerStartWithClass);
ProvisionerStartWithBase provisionerStartWith = (ProvisionerStartWithBase) GrouperUtil.newInstance(startWithKlass);
provisionerStartWith.setConfigId(provisionerConfigId);
@@ -1049,7 +1065,6 @@ public void addProvisionerConfigurationSubmit(final HttpServletRequest request,
}
}
-
provisionerStartWith.populateProvisionerConfigurationValuesFromStartWith(configSuffixToValues, provisionerSuffixToValue);
for (String key: provisionerSuffixToValue.keySet()) {
@@ -1057,6 +1072,21 @@ public void addProvisionerConfigurationSubmit(final HttpServletRequest request,
if (attributes.containsKey(key)) {
attributes.get(key).setValue(GrouperUtil.stringValue(valueToSet));
+
+ }
+ }
+
+ for (String key: provisionerSuffixToValue.keySet()) {
+
+ if (attributes.containsKey(key)) {
+
+ if (attributes.get(key).getFormElement() == ConfigItemFormElement.DROPDOWN) {
+
+ attributes.get(key).getGrouperConfigModule()
+ .populateValuesLabelsFromOptionValueClass(attributes, attributes.get(key));
+
+ }
+
}
}
@@ -1069,6 +1099,8 @@ public void addProvisionerConfigurationSubmit(final HttpServletRequest request,
guiResponseJs.addAction(GuiScreenAction.newInnerHtmlFromJsp("#grouperMainContentDivId",
"/WEB-INF/grouperUi2/provisionerConfigs/provisionerConfigAdd.jsp"));
+ guiResponseJs.addAction(GuiScreenAction.newScript("guiScrollTop()"));
+
return;
}
@@ -1114,7 +1146,6 @@ public void addProvisionerConfigurationSubmit(final HttpServletRequest request,
}
messageBuilder.append(TextContainer.retrieveFromRequest().getText().get("provisionerConfigAddEditSuccess"));
guiResponseJs.addAction(GuiScreenAction.newMessageAppend(GuiMessageType.success, messageBuilder.toString()));
-
} finally {
@@ -1181,6 +1212,8 @@ public void editProvisionerConfiguration(final HttpServletRequest request, final
provisionerConfigurationContainer.setGuiProvisionerConfiguration(guiProvisioningConfiguration);
}
+ provisionerConfiguration.correctFormFieldsForExpressionLanguageValues();
+
guiResponseJs.addAction(GuiScreenAction.newInnerHtmlFromJsp("#grouperMainContentDivId",
"/WEB-INF/grouperUi2/provisionerConfigs/provisionerConfigEdit.jsp"));
diff --git a/grouper-ui/java/src/edu/internet2/middleware/grouper/grouperUi/serviceLogic/UiV2Provisioning.java b/grouper-ui/java/src/edu/internet2/middleware/grouper/grouperUi/serviceLogic/UiV2Provisioning.java
index 255c4f24557d..eabe5a61deff 100644
--- a/grouper-ui/java/src/edu/internet2/middleware/grouper/grouperUi/serviceLogic/UiV2Provisioning.java
+++ b/grouper-ui/java/src/edu/internet2/middleware/grouper/grouperUi/serviceLogic/UiV2Provisioning.java
@@ -91,18 +91,20 @@ public void viewProvisioningOnFolder(final HttpServletRequest request, final Htt
grouperSession = GrouperSession.start(loggedInSubject);
- stem = UiV2Stem.retrieveStemHelper(request, true).getStem();
+ stem = UiV2Stem.retrieveStemHelper(request, false).getStem();
if (stem == null) {
return;
}
+
+ if (!GrouperRequestContainer.retrieveFromRequestOrCreate().getStemContainer().isCanViewPrivileges()) {
+ return;
+ }
+
+
final Stem STEM = stem;
final GuiResponseJs guiResponseJs = GuiResponseJs.retrieveGuiResponseJs();
-
- if (!PrivilegeHelper.isWheelOrRoot(loggedInSubject)) {
- throw new RuntimeException("Cannot access provisioning.");
- }
final ProvisioningContainer provisioningContainer = GrouperRequestContainer.retrieveFromRequestOrCreate().getProvisioningContainer();
@@ -243,10 +245,6 @@ public void viewProvisioningConfigurationOnGroup(final HttpServletRequest reques
return;
}
- if (!PrivilegeHelper.isWheelOrRoot(loggedInSubject)) {
- throw new RuntimeException("Cannot access provisioning.");
- }
-
final Group GROUP = group;
final GuiResponseJs guiResponseJs = GuiResponseJs.retrieveGuiResponseJs();
@@ -267,7 +265,7 @@ public Object callback(GrouperSession theGrouperSession) throws GrouperSessionEx
return null;
}
- setGrouperProvisioningAttributeValues(GROUP, targetName);
+ setGrouperProvisioningAttributeValues(GROUP, targetName, loggedInSubject);
GuiGroup guiGroup = GrouperRequestContainer.retrieveFromRequestOrCreate().getGroupContainer().getGuiGroup();
addProvisioningBreadcrumbs(guiGroup, targetName, "viewProvisioningOnGroup", "groupId", GROUP.getId());
@@ -308,10 +306,6 @@ public void viewProvisioningOnGroup(final HttpServletRequest request, final Http
return;
}
- if (!PrivilegeHelper.isWheelOrRoot(loggedInSubject)) {
- throw new RuntimeException("Cannot access provisioning.");
- }
-
final Group GROUP = group;
final GuiResponseJs guiResponseJs = GuiResponseJs.retrieveGuiResponseJs();
@@ -326,7 +320,7 @@ public Object callback(GrouperSession theGrouperSession) throws GrouperSessionEx
return null;
}
- setGrouperProvisioningAttributeValues(GROUP, null);
+ setGrouperProvisioningAttributeValues(GROUP, null, loggedInSubject);
GuiGroup guiGroup = GrouperRequestContainer.retrieveFromRequestOrCreate().getGroupContainer().getGuiGroup();
addProvisioningBreadcrumbs(guiGroup, null, null, null, null);
@@ -359,10 +353,6 @@ public void viewProvisioningOnSubject(final HttpServletRequest request, final Ht
try {
- if (!PrivilegeHelper.isWheelOrRoot(loggedInSubject)) {
- throw new RuntimeException("Cannot access provisioning.");
- }
-
grouperSession = GrouperSession.start(loggedInSubject);
subject = UiV2Subject.retrieveSubjectHelper(request, true);
@@ -473,10 +463,6 @@ public void viewProvisioningTargetDetailsOnSubject(final HttpServletRequest requ
return;
}
- if (!PrivilegeHelper.isWheelOrRoot(loggedInSubject)) {
- throw new RuntimeException("Cannot access provisioning.");
- }
-
final String targetName = request.getParameter("provisioningTargetName");
if (StringUtils.isBlank(targetName)) {
@@ -577,10 +563,6 @@ public void viewProvisioningTargetDetailsOnGroupMembership(final HttpServletRequ
return;
}
- if (!PrivilegeHelper.isWheelOrRoot(loggedInSubject)) {
- throw new RuntimeException("Cannot access provisioning.");
- }
-
final Group GROUP = group;
final String targetName = request.getParameter("provisioningTargetName");
@@ -690,10 +672,6 @@ public void viewProvisioningOnGroupMembership(final HttpServletRequest request,
return;
}
- if (!PrivilegeHelper.isWheelOrRoot(loggedInSubject)) {
- throw new RuntimeException("Cannot access provisioning.");
- }
-
final GuiResponseJs guiResponseJs = GuiResponseJs.retrieveGuiResponseJs();
final ProvisioningContainer provisioningContainer = GrouperRequestContainer.retrieveFromRequestOrCreate().getProvisioningContainer();
@@ -802,10 +780,6 @@ public void viewProvisioningTargetDetailsOnSubjectMembership(final HttpServletRe
return;
}
- if (!PrivilegeHelper.isWheelOrRoot(loggedInSubject)) {
- throw new RuntimeException("Cannot access provisioning.");
- }
-
final String targetName = request.getParameter("provisioningTargetName");
if (StringUtils.isBlank(targetName)) {
@@ -917,10 +891,6 @@ public void viewProvisioningOnSubjectMembership(final HttpServletRequest request
return;
}
- if (!PrivilegeHelper.isWheelOrRoot(loggedInSubject)) {
- throw new RuntimeException("Cannot access provisioning.");
- }
-
final Group GROUP = group;
final Subject SUBJECT = subject;
@@ -1003,7 +973,7 @@ public Object callback(GrouperSession theGrouperSession) throws GrouperSessionEx
}
- private final void setGrouperProvisioningAttributeValues(Group group, String targetName) {
+ private final void setGrouperProvisioningAttributeValues(Group group, String targetName, Subject loggedInSubject) {
List provisioningAttributeValues = new ArrayList();
@@ -1014,8 +984,23 @@ private final void setGrouperProvisioningAttributeValues(Group group, String tar
provisioningAttributeValues.add(grouperProvisioningAttributeValue);
}
+
+ Map allTargets = GrouperProvisioningSettings.getTargets(true);
+
+ List provisioningAttributeValuesViewable = new ArrayList();
+
+ for (GrouperProvisioningAttributeValue grouperProvisioningAttributeValue: provisioningAttributeValues) {
+
+ String localTargetName = grouperProvisioningAttributeValue.getTargetName();
+ GrouperProvisioningTarget grouperProvisioningTarget = allTargets.get(localTargetName);
+ if (grouperProvisioningTarget != null && GrouperProvisioningService.isTargetViewable(grouperProvisioningTarget, loggedInSubject, group)) {
+ provisioningAttributeValuesViewable.add(grouperProvisioningAttributeValue);
+ }
+
+ }
+
// convert from raw to gui
- List guiGrouperProvisioningAttributeValues = GuiGrouperProvisioningAttributeValue.convertFromGrouperProvisioningAttributeValues(provisioningAttributeValues);
+ List guiGrouperProvisioningAttributeValues = GuiGrouperProvisioningAttributeValue.convertFromGrouperProvisioningAttributeValues(provisioningAttributeValuesViewable);
for (GuiGrouperProvisioningAttributeValue guiGrouperProvisioningAttributeValue: guiGrouperProvisioningAttributeValues) {
String provisionerName = guiGrouperProvisioningAttributeValue.getGrouperProvisioningAttributeValue().getTargetName();
@@ -2679,14 +2664,14 @@ public void viewProvisioningTargetDetailsOnFolder(final HttpServletRequest reque
grouperSession = GrouperSession.start(loggedInSubject);
- stem = UiV2Stem.retrieveStemHelper(request, true).getStem();
+ stem = UiV2Stem.retrieveStemHelper(request, false).getStem();
if (stem == null) {
return;
}
- if (!PrivilegeHelper.isWheelOrRoot(loggedInSubject)) {
- throw new RuntimeException("Cannot access provisioning.");
+ if (!GrouperRequestContainer.retrieveFromRequestOrCreate().getStemContainer().isCanViewPrivileges()) {
+ return;
}
final GuiResponseJs guiResponseJs = GuiResponseJs.retrieveGuiResponseJs();
@@ -2703,12 +2688,6 @@ public Object callback(GrouperSession theGrouperSession) throws GrouperSessionEx
return false;
}
- if (!provisioningContainer.isCanWriteProvisioning()) {
- guiResponseJs.addAction(GuiScreenAction.newMessage(GuiMessageType.error,
- TextContainer.retrieveFromRequest().getText().get("provisioningNotAllowedToWriteStem")));
- return false;
- }
-
return true;
}
});
@@ -2863,16 +2842,12 @@ public void viewProvisioningTargetLogsOnGroup(final HttpServletRequest request,
grouperSession = GrouperSession.start(loggedInSubject);
- group = UiV2Group.retrieveGroupHelper(request, AccessPrivilege.UPDATE).getGroup();
+ group = UiV2Group.retrieveGroupHelper(request, AccessPrivilege.VIEW).getGroup();
if (group == null) {
return;
}
- if (!PrivilegeHelper.isWheelOrRoot(loggedInSubject)) {
- throw new RuntimeException("Cannot access provisioning.");
- }
-
final GuiResponseJs guiResponseJs = GuiResponseJs.retrieveGuiResponseJs();
final ProvisioningContainer provisioningContainer = GrouperRequestContainer.retrieveFromRequestOrCreate().getProvisioningContainer();
@@ -2887,12 +2862,6 @@ public Object callback(GrouperSession theGrouperSession) throws GrouperSessionEx
return false;
}
- if (!provisioningContainer.isCanWriteProvisioning()) {
- guiResponseJs.addAction(GuiScreenAction.newMessage(GuiMessageType.error,
- TextContainer.retrieveFromRequest().getText().get("provisioningNotAllowedToWriteGroup")));
- return false;
- }
-
return true;
}
});
@@ -2924,7 +2893,7 @@ public Object callback(GrouperSession theGrouperSession) throws GrouperSessionEx
List gcGrouperSyncLogs = GrouperProvisioningService.retrieveGcGrouperSyncLogs(targetName, GROUP.getUuid(), queryOptions);
provisioningContainer.setGcGrouperSyncLogs(gcGrouperSyncLogs);
- setGrouperProvisioningAttributeValues(GROUP, targetName);
+ setGrouperProvisioningAttributeValues(GROUP, targetName, loggedInSubject);
guiPaging.setTotalRecordCount(queryOptions.getQueryPaging().getTotalRecordCount());
return null;
@@ -2971,16 +2940,12 @@ public void viewProvisioningTargetDetailsOnGroup(final HttpServletRequest reques
grouperSession = GrouperSession.start(loggedInSubject);
- group = UiV2Group.retrieveGroupHelper(request, AccessPrivilege.UPDATE).getGroup();
+ group = UiV2Group.retrieveGroupHelper(request, AccessPrivilege.VIEW).getGroup();
if (group == null) {
return;
}
- if (!PrivilegeHelper.isWheelOrRoot(loggedInSubject)) {
- throw new RuntimeException("Cannot access provisioning.");
- }
-
final GuiResponseJs guiResponseJs = GuiResponseJs.retrieveGuiResponseJs();
final ProvisioningContainer provisioningContainer = GrouperRequestContainer.retrieveFromRequestOrCreate().getProvisioningContainer();
@@ -2995,12 +2960,6 @@ public Object callback(GrouperSession theGrouperSession) throws GrouperSessionEx
return false;
}
- if (!provisioningContainer.isCanWriteProvisioning()) {
- guiResponseJs.addAction(GuiScreenAction.newMessage(GuiMessageType.error,
- TextContainer.retrieveFromRequest().getText().get("provisioningNotAllowedToWriteGroup")));
- return false;
- }
-
return true;
}
});
@@ -3029,7 +2988,7 @@ public Object callback(GrouperSession theGrouperSession) throws GrouperSessionEx
provisioningContainer.setUsersCount(usersCount);
provisioningContainer.setGcGrouperSyncGroup(gcGrouperSyncGroup);
- setGrouperProvisioningAttributeValues(GROUP, targetName);
+ setGrouperProvisioningAttributeValues(GROUP, targetName, loggedInSubject);
return null;
diff --git a/grouper-ui/java/src/edu/internet2/middleware/grouper/grouperUi/serviceLogic/UiV2Stem.java b/grouper-ui/java/src/edu/internet2/middleware/grouper/grouperUi/serviceLogic/UiV2Stem.java
index 61545597a86a..560dfcf9de2c 100644
--- a/grouper-ui/java/src/edu/internet2/middleware/grouper/grouperUi/serviceLogic/UiV2Stem.java
+++ b/grouper-ui/java/src/edu/internet2/middleware/grouper/grouperUi/serviceLogic/UiV2Stem.java
@@ -1433,6 +1433,7 @@ private void groupMembershipsInFolderFilterHelper(HttpServletRequest request, Ht
String memberId = pitMembershipView.getPITMember().getSourceId();
Subject subject = memberIdToSubject.get(memberId);
guiPITMembershipView.setGuiSubject(new GuiSubject(subject));
+ guiPITMembershipView.setMemberId(memberId);
guiPITMembershipViews.add(guiPITMembershipView);
}
diff --git a/grouper-ui/java/src/edu/internet2/middleware/grouper/grouperUi/serviceLogic/UiV2Subject.java b/grouper-ui/java/src/edu/internet2/middleware/grouper/grouperUi/serviceLogic/UiV2Subject.java
index ebad9980fa28..7aee806390f0 100644
--- a/grouper-ui/java/src/edu/internet2/middleware/grouper/grouperUi/serviceLogic/UiV2Subject.java
+++ b/grouper-ui/java/src/edu/internet2/middleware/grouper/grouperUi/serviceLogic/UiV2Subject.java
@@ -419,13 +419,24 @@ public void addToGroupFilter(HttpServletRequest request, HttpServletResponse res
private static Subject retrieveSubjectHelper(HttpServletRequest request) {
return retrieveSubjectHelper(request, true);
}
-
+
/**
* get the subject from the request
* @param request
* @return the subject or null if not found
*/
public static Subject retrieveSubjectHelper(HttpServletRequest request, boolean displayErrorIfProblem) {
+ return retrieveSubjectHelper(request, displayErrorIfProblem, false);
+ }
+
+ /**
+ * get the subject from the request
+ * @param request
+ * @param displayErrorIfProblem
+ * @param ignoreCachedSubjects
+ * @return the subject or null if not found
+ */
+ public static Subject retrieveSubjectHelper(HttpServletRequest request, boolean displayErrorIfProblem, boolean ignoreCachedSubjects) {
//initialize the bean
GrouperRequestContainer grouperRequestContainer = GrouperRequestContainer.retrieveFromRequestOrCreate();
@@ -472,7 +483,8 @@ public static Subject retrieveSubjectHelper(HttpServletRequest request, boolean
SubjectFinder subjectFinder = addedError ? null : new SubjectFinder().assignSourceId(sourceId)
.assignSubjectId(subjectId).assignSubjectIdentifier(subjectIdentifier)
.assignAllowUnresolvable(PrivilegeHelper.isWheelOrRootOrReadonlyRoot(GrouperSession.staticGrouperSession().getSubject()))
- .assignSubjectIdOrIdentifier(subjectIdOrIdentifier).assignMemberId(memberId);
+ .assignSubjectIdOrIdentifier(subjectIdOrIdentifier).assignMemberId(memberId)
+ .assignIgnoreCachedSubjects(ignoreCachedSubjects);
subject = subjectFinder == null ? null : subjectFinder.findSubject();
@@ -536,7 +548,7 @@ public void viewSubject(HttpServletRequest request, HttpServletResponse response
grouperSession = GrouperSession.start(loggedInSubject);
- subject = retrieveSubjectHelper(request);
+ subject = retrieveSubjectHelper(request, true, true);
if (subject == null) {
return;
diff --git a/grouper-ui/java/src/edu/internet2/middleware/grouper/ui/tags/ConfigFormElement.java b/grouper-ui/java/src/edu/internet2/middleware/grouper/ui/tags/ConfigFormElement.java
index 89abc8a0c2d5..daae127002a0 100644
--- a/grouper-ui/java/src/edu/internet2/middleware/grouper/ui/tags/ConfigFormElement.java
+++ b/grouper-ui/java/src/edu/internet2/middleware/grouper/ui/tags/ConfigFormElement.java
@@ -317,6 +317,27 @@ public void setAjaxCallback(String ajaxCallback) {
this.ajaxCallback = ajaxCallback;
}
+ /**
+ * number of levels to indent
+ */
+ private Integer indent;
+
+ /**
+ * number of levels to indent
+ * @return
+ */
+ public Integer getIndent() {
+ return indent;
+ }
+
+ /**
+ * number of levels to indent
+ * @param indent
+ */
+ public void setIndent(Integer indent) {
+ this.indent = indent;
+ }
+
/**
* html to render
*/
@@ -330,7 +351,11 @@ public void doTag() throws JspException, IOException {
}
field.append("");
- field.append("| ");
+ field.append(" | ");
field.append(" | ");
diff --git a/grouper-ui/webapp/WEB-INF/grouperUi2/admin/adminDaemonJobAdd.jsp b/grouper-ui/webapp/WEB-INF/grouperUi2/admin/adminDaemonJobAdd.jsp
index f582c9d8eaac..0deae0d036da 100644
--- a/grouper-ui/webapp/WEB-INF/grouperUi2/admin/adminDaemonJobAdd.jsp
+++ b/grouper-ui/webapp/WEB-INF/grouperUi2/admin/adminDaemonJobAdd.jsp
@@ -135,6 +135,7 @@
ajaxCallback="ajax('../app/UiV2Admin.addDaemon?daemonConfigId=${guiGrouperDaemonConfiguration.grouperDaemonConfiguration.configId}&daemonConfigType=${guiGrouperDaemonConfiguration.grouperDaemonConfiguration['class'].name}', {formIds: 'addDaemonFormId'}); return false;"
valuesAndLabels="${attribute.dropdownValuesAndLabels }"
checkboxAttributes="${attribute.checkboxAttributes}"
+ indent="${attribute.configItemMetadata.indent}"
/>
diff --git a/grouper-ui/webapp/WEB-INF/grouperUi2/admin/adminDaemonJobEdit.jsp b/grouper-ui/webapp/WEB-INF/grouperUi2/admin/adminDaemonJobEdit.jsp
index d39b2a14ef07..fcb882e79f39 100644
--- a/grouper-ui/webapp/WEB-INF/grouperUi2/admin/adminDaemonJobEdit.jsp
+++ b/grouper-ui/webapp/WEB-INF/grouperUi2/admin/adminDaemonJobEdit.jsp
@@ -103,6 +103,7 @@
ajaxCallback="ajax('../app/UiV2Admin.editDaemon?daemonConfigId=${guiGrouperDaemonConfiguration.grouperDaemonConfiguration.configId}&daemonConfigType=${guiGrouperDaemonConfiguration.grouperDaemonConfiguration['class'].name}', {formIds: 'editDaemonFormId'}); return false;"
valuesAndLabels="${attribute.dropdownValuesAndLabels }"
checkboxAttributes="${attribute.checkboxAttributes}"
+ indent="${attribute.configItemMetadata.indent}"
/>
diff --git a/grouper-ui/webapp/WEB-INF/grouperUi2/admin/adminDaemonJobsViewLogs.jsp b/grouper-ui/webapp/WEB-INF/grouperUi2/admin/adminDaemonJobsViewLogs.jsp
index bf9d43621bf0..f74b2a5f2a12 100644
--- a/grouper-ui/webapp/WEB-INF/grouperUi2/admin/adminDaemonJobsViewLogs.jsp
+++ b/grouper-ui/webapp/WEB-INF/grouperUi2/admin/adminDaemonJobsViewLogs.jsp
@@ -8,7 +8,44 @@
${textContainer.text['adminDaemonLogsBreadcrumb'] }
diff --git a/grouper-ui/webapp/WEB-INF/grouperUi2/authentication/editWsTrustedJwtConfigDetails.jsp b/grouper-ui/webapp/WEB-INF/grouperUi2/authentication/editWsTrustedJwtConfigDetails.jsp
index 0e719672a25d..25986571b507 100644
--- a/grouper-ui/webapp/WEB-INF/grouperUi2/authentication/editWsTrustedJwtConfigDetails.jsp
+++ b/grouper-ui/webapp/WEB-INF/grouperUi2/authentication/editWsTrustedJwtConfigDetails.jsp
@@ -72,6 +72,7 @@
ajaxCallback="ajax('../app/UiV2AuthenticationConfig.editWsTrustedJwtConfig?wsTrustedJwtConfigId=${grouperRequestContainer.authenticationContainer.guiWsTrustedJwtConfiguration.wsTrustedJwtConfiguration.configId}', {formIds: 'wsTrustedJwtConfigDetails'}); return false;"
valuesAndLabels="${attribute.dropdownValuesAndLabels }"
checkboxAttributes="${attribute.checkboxAttributes}"
+ indent="${attribute.configItemMetadata.indent}"
/>
diff --git a/grouper-ui/webapp/WEB-INF/grouperUi2/authentication/editWsTrustedOidcConfigDetails.jsp b/grouper-ui/webapp/WEB-INF/grouperUi2/authentication/editWsTrustedOidcConfigDetails.jsp
index 1e8f39bdda09..c118ce750d7c 100644
--- a/grouper-ui/webapp/WEB-INF/grouperUi2/authentication/editWsTrustedOidcConfigDetails.jsp
+++ b/grouper-ui/webapp/WEB-INF/grouperUi2/authentication/editWsTrustedOidcConfigDetails.jsp
@@ -73,6 +73,7 @@
ajaxCallback="ajax('../app/UiV2OidcConfig.editOidcConfig?oidcConfigId=${grouperRequestContainer.oidcConfigContainer.guiOidcConfiguration.oidcConfiguration.configId}', {formIds: 'wsTrustedJwtConfigDetails'}); return false;"
valuesAndLabels="${attribute.dropdownValuesAndLabels }"
checkboxAttributes="${attribute.checkboxAttributes}"
+ indent="${attribute.configItemMetadata.indent}"
/>
diff --git a/grouper-ui/webapp/WEB-INF/grouperUi2/authentication/wsTrustedJwtConfigAddHelper.jsp b/grouper-ui/webapp/WEB-INF/grouperUi2/authentication/wsTrustedJwtConfigAddHelper.jsp
index 1d5e5343d552..ad0b905c3a77 100644
--- a/grouper-ui/webapp/WEB-INF/grouperUi2/authentication/wsTrustedJwtConfigAddHelper.jsp
+++ b/grouper-ui/webapp/WEB-INF/grouperUi2/authentication/wsTrustedJwtConfigAddHelper.jsp
@@ -75,6 +75,7 @@
ajaxCallback="ajax('../app/UiV2AuthenticationConfig.addWsTrustedJwt', {formIds: 'wsTrustedJwtConfigDetails'}); return false;"
valuesAndLabels="${attribute.dropdownValuesAndLabels }"
checkboxAttributes="${attribute.checkboxAttributes}"
+ indent="${attribute.configItemMetadata.indent}"
/>
diff --git a/grouper-ui/webapp/WEB-INF/grouperUi2/authentication/wsTrustedOidcConfigAddHelper.jsp b/grouper-ui/webapp/WEB-INF/grouperUi2/authentication/wsTrustedOidcConfigAddHelper.jsp
index 1cc558bbefcf..73406981df5b 100644
--- a/grouper-ui/webapp/WEB-INF/grouperUi2/authentication/wsTrustedOidcConfigAddHelper.jsp
+++ b/grouper-ui/webapp/WEB-INF/grouperUi2/authentication/wsTrustedOidcConfigAddHelper.jsp
@@ -75,6 +75,7 @@
ajaxCallback="ajax('../app/UiV2OidcConfig.addOidcConfig', {formIds: 'wsTrustedOidcConfigDetails'}); return false;"
valuesAndLabels="${attribute.dropdownValuesAndLabels }"
checkboxAttributes="${attribute.checkboxAttributes}"
+ indent="${attribute.configItemMetadata.indent}"
/>
diff --git a/grouper-ui/webapp/WEB-INF/grouperUi2/customUi/customUiConfigAddHelper.jsp b/grouper-ui/webapp/WEB-INF/grouperUi2/customUi/customUiConfigAddHelper.jsp
index a644eb98df63..8fe2a6ee2d84 100644
--- a/grouper-ui/webapp/WEB-INF/grouperUi2/customUi/customUiConfigAddHelper.jsp
+++ b/grouper-ui/webapp/WEB-INF/grouperUi2/customUi/customUiConfigAddHelper.jsp
@@ -75,6 +75,7 @@
ajaxCallback="ajax('../app/UiV2CustomUiConfig.addCustomUiConfig', {formIds: 'customUiConfigDetails'}); return false;"
valuesAndLabels="${attribute.dropdownValuesAndLabels }"
checkboxAttributes="${attribute.checkboxAttributes}"
+ indent="${attribute.configItemMetadata.indent}"
/>
diff --git a/grouper-ui/webapp/WEB-INF/grouperUi2/customUi/editCustomUiConfigDetails.jsp b/grouper-ui/webapp/WEB-INF/grouperUi2/customUi/editCustomUiConfigDetails.jsp
index d604364ce5cc..26f05229e533 100644
--- a/grouper-ui/webapp/WEB-INF/grouperUi2/customUi/editCustomUiConfigDetails.jsp
+++ b/grouper-ui/webapp/WEB-INF/grouperUi2/customUi/editCustomUiConfigDetails.jsp
@@ -72,6 +72,7 @@
ajaxCallback="ajax('../app/UiV2CustomUiConfig.editCustomUiConfig?customUiConfigId=${grouperRequestContainer.customUiContainer.guiCustomUiConfiguration.customUiConfiguration.configId}', {formIds: 'customUiConfigDetails'}); return false;"
valuesAndLabels="${attribute.dropdownValuesAndLabels }"
checkboxAttributes="${attribute.checkboxAttributes}"
+ indent="${attribute.configItemMetadata.indent}"
/>
diff --git a/grouper-ui/webapp/WEB-INF/grouperUi2/externalSystems/editExternalSystemConfigDetails.jsp b/grouper-ui/webapp/WEB-INF/grouperUi2/externalSystems/editExternalSystemConfigDetails.jsp
index add7a44b2752..61e60937e6e9 100644
--- a/grouper-ui/webapp/WEB-INF/grouperUi2/externalSystems/editExternalSystemConfigDetails.jsp
+++ b/grouper-ui/webapp/WEB-INF/grouperUi2/externalSystems/editExternalSystemConfigDetails.jsp
@@ -76,6 +76,7 @@
ajaxCallback="ajax('../app/UiV2ExternalSystem.editExternalSystemConfigDetails?externalSystemConfigId=${grouperRequestContainer.externalSystemContainer.guiGrouperExternalSystem.grouperExternalSystem.configId}&externalSystemType=${grouperRequestContainer.externalSystemContainer.guiGrouperExternalSystem.grouperExternalSystem['class'].name}', {formIds: 'externalSystemConfigDetails'}); return false;"
valuesAndLabels="${attribute.dropdownValuesAndLabels }"
checkboxAttributes="${attribute.checkboxAttributes}"
+ indent="${attribute.configItemMetadata.indent}"
/>
diff --git a/grouper-ui/webapp/WEB-INF/grouperUi2/externalSystems/externalSystemConfigAddHelper.jsp b/grouper-ui/webapp/WEB-INF/grouperUi2/externalSystems/externalSystemConfigAddHelper.jsp
index 3a5858a2df66..99480dd49dd2 100644
--- a/grouper-ui/webapp/WEB-INF/grouperUi2/externalSystems/externalSystemConfigAddHelper.jsp
+++ b/grouper-ui/webapp/WEB-INF/grouperUi2/externalSystems/externalSystemConfigAddHelper.jsp
@@ -65,6 +65,7 @@
ajaxCallback="ajax('../app/UiV2ExternalSystem.addExternalSystem?externalSystemConfigId=${guiGrouperExternalSystem.grouperExternalSystem.configId}&externalSystemType=${guiGrouperExternalSystem.grouperExternalSystem['class'].name}', {formIds: 'externalSystemConfigDetails'}); return false;"
valuesAndLabels="${attribute.dropdownValuesAndLabels }"
checkboxAttributes="${attribute.checkboxAttributes}"
+ indent="${attribute.configItemMetadata.indent}"
/>
diff --git a/grouper-ui/webapp/WEB-INF/grouperUi2/globalAttributeResolver/editGlobalAttributeResolverConfigDetails.jsp b/grouper-ui/webapp/WEB-INF/grouperUi2/globalAttributeResolver/editGlobalAttributeResolverConfigDetails.jsp
index 589913464c13..ff0b113c539e 100644
--- a/grouper-ui/webapp/WEB-INF/grouperUi2/globalAttributeResolver/editGlobalAttributeResolverConfigDetails.jsp
+++ b/grouper-ui/webapp/WEB-INF/grouperUi2/globalAttributeResolver/editGlobalAttributeResolverConfigDetails.jsp
@@ -72,6 +72,7 @@
ajaxCallback="ajax('../app/UiV2GlobalAttributeResolverConfig.editGlobalAttributeResolverConfig?globalAttributeResolverConfigId=${grouperRequestContainer.globalAttributeResolverConfigContainer.guiGlobalAttributeResolverConfiguration.globalAttributeResolverConfiguration.configId}', {formIds: 'globalAttributeResolverConfigDetails'}); return false;"
valuesAndLabels="${attribute.dropdownValuesAndLabels }"
checkboxAttributes="${attribute.checkboxAttributes}"
+ indent="${attribute.configItemMetadata.indent}"
/>
diff --git a/grouper-ui/webapp/WEB-INF/grouperUi2/globalAttributeResolver/globalAttributeResolverConfigAddHelper.jsp b/grouper-ui/webapp/WEB-INF/grouperUi2/globalAttributeResolver/globalAttributeResolverConfigAddHelper.jsp
index d0f8c2253d46..2c8a1fa09860 100644
--- a/grouper-ui/webapp/WEB-INF/grouperUi2/globalAttributeResolver/globalAttributeResolverConfigAddHelper.jsp
+++ b/grouper-ui/webapp/WEB-INF/grouperUi2/globalAttributeResolver/globalAttributeResolverConfigAddHelper.jsp
@@ -75,6 +75,7 @@
ajaxCallback="ajax('../app/UiV2GlobalAttributeResolverConfig.addGlobalAttributeResolverConfig', {formIds: 'globalAttributeResolverConfigDetails'}); return false;"
valuesAndLabels="${attribute.dropdownValuesAndLabels }"
checkboxAttributes="${attribute.checkboxAttributes}"
+ indent="${attribute.configItemMetadata.indent}"
/>
diff --git a/grouper-ui/webapp/WEB-INF/grouperUi2/group/groupContents.jsp b/grouper-ui/webapp/WEB-INF/grouperUi2/group/groupContents.jsp
index 252cd9e28f2d..fd2d692288eb 100644
--- a/grouper-ui/webapp/WEB-INF/grouperUi2/group/groupContents.jsp
+++ b/grouper-ui/webapp/WEB-INF/grouperUi2/group/groupContents.jsp
@@ -4,7 +4,12 @@