Skip to content

Commit

Permalink
Merge branch 'IQSS:develop' into 8722_custom_javascript
Browse files Browse the repository at this point in the history
  • Loading branch information
ErykKul committed Sep 12, 2022
2 parents 29d1543 + c7b8b82 commit 39fa64d
Show file tree
Hide file tree
Showing 6 changed files with 87 additions and 0 deletions.
4 changes: 4 additions & 0 deletions doc/release-notes/8882-shib-affiliation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
## New DB Settings
The following DB settings have been added:
- `:ShibAffiliationOrder` - Select the first or last entry in an Affiliation array
- `:ShibAffiliationSeparator` (default: ";") - Set the separator for the Affiliation array
24 changes: 24 additions & 0 deletions doc/sphinx-guides/source/installation/config.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2456,6 +2456,30 @@ In the case you get garbled characters in Shibboleth-supplied fields (e.g. given

If you managed to get correct accented characters from shibboleth while this setting is _false_, please contact us with your application server and Shibboleth configuration!

:ShibAffiliationOrder
+++++++++++++++++++++

Will select the last or first value of an array in affiliation, the array separator can be set using ``:ShibAffiliationSeparator`` .

To select the last value :

``curl -X PUT -d "lastAffiliation" http://localhost:8080/api/admin/settings/:ShibAffiliationOrder``

To select the first value :

``curl -X PUT -d "firstAffiliation" http://localhost:8080/api/admin/settings/:ShibAffiliationOrder``


:ShibAffiliationSeparator
+++++++++++++++++++++++++

Set the separator to be used for ``:ShibAffiliationOrder``.
Default separator : ";"

To change the separator :

``curl -X PUT -d ";" http://localhost:8080/api/admin/settings/:ShibAffiliationSeparator``

.. _:ComputeBaseUrl:

:ComputeBaseUrl
Expand Down
19 changes: 19 additions & 0 deletions src/main/java/edu/harvard/iq/dataverse/Shib.java
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,26 @@ public void init() {
? getValueFromAssertion(shibAffiliationAttribute)
: shibService.getAffiliation(shibIdp, shibService.getDevShibAccountType());


if (affiliation != null) {
String ShibAffiliationSeparator = settingsService.getValueForKey(SettingsServiceBean.Key.ShibAffiliationSeparator);
if (ShibAffiliationSeparator == null) {
ShibAffiliationSeparator = ";";
}
String ShibAffiliationOrder = settingsService.getValueForKey(SettingsServiceBean.Key.ShibAffiliationOrder);
if (ShibAffiliationOrder != null) {
if (ShibAffiliationOrder.equals("lastAffiliation")) {
affiliation = affiliation.substring(affiliation.lastIndexOf(ShibAffiliationSeparator) + 1); //patch for affiliation array returning last part
}
else if (ShibAffiliationOrder.equals("firstAffiliation")) {
try{
affiliation = affiliation.substring(0,affiliation.indexOf(ShibAffiliationSeparator)); //patch for affiliation array returning first part
}
catch (Exception e){
logger.info("Affiliation does not contain \"" + ShibAffiliationSeparator + "\"");
}
}
}
affiliationToDisplayAtConfirmation = affiliation;
friendlyNameForInstitution = affiliation;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@ public enum DevShibAccountType {
UID_WITH_LEADING_SPACE,
IDENTIFIER_WITH_LEADING_SPACE,
MISSING_REQUIRED_ATTR,
ONE_AFFILIATION,
TWO_AFFILIATIONS,
};

public DevShibAccountType getDevShibAccountType() {
Expand Down Expand Up @@ -146,6 +148,14 @@ public void possiblyMutateRequestInDev(HttpServletRequest request) {
ShibUtil.mutateRequestForDevConstantMissingRequiredAttributes(request);
break;

case ONE_AFFILIATION:
ShibUtil.mutateRequestForDevConstantOneAffiliation(request);
break;

case TWO_AFFILIATIONS:
ShibUtil.mutateRequestForDevConstantTwoAffiliations(request);
break;

default:
logger.info("Should never reach here");
break;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -261,6 +261,28 @@ static void mutateRequestForDevConstantMissingRequiredAttributes(HttpServletRequ
request.setAttribute(ShibUtil.usernameAttribute, "missing");
}

static void mutateRequestForDevConstantOneAffiliation(HttpServletRequest request) {
request.setAttribute(ShibUtil.shibIdpAttribute, "https://fake.example.com/idp/shibboleth");
request.setAttribute(ShibUtil.uniquePersistentIdentifier, "oneAffiliation");
request.setAttribute(ShibUtil.firstNameAttribute, "Lurneen");
request.setAttribute(ShibUtil.lastNameAttribute, "Lumpkin");
request.setAttribute(ShibUtil.emailAttribute, "oneAffiliaton@mailinator.com");
request.setAttribute(ShibUtil.usernameAttribute, "oneAffiliaton");
// Affiliation. "ou" is the suggested attribute in :ShibAffiliationAttribute.
request.setAttribute("ou", "Beer-N-Brawl");
}

static void mutateRequestForDevConstantTwoAffiliations(HttpServletRequest request) {
request.setAttribute(ShibUtil.shibIdpAttribute, "https://fake.example.com/idp/shibboleth");
request.setAttribute(ShibUtil.uniquePersistentIdentifier, "twoAffiliatons");
request.setAttribute(ShibUtil.firstNameAttribute, "Lenny");
request.setAttribute(ShibUtil.lastNameAttribute, "Leonard");
request.setAttribute(ShibUtil.emailAttribute, "twoAffiliatons@mailinator.com");
request.setAttribute(ShibUtil.usernameAttribute, "twoAffiliatons");
// Affiliation. "ou" is the suggested attribute in :ShibAffiliationAttribute.
request.setAttribute("ou", "SNPP;Stonecutters");
}

public static Map<String, String> getRandomUserStatic() {
Map<String, String> fakeUser = new HashMap<>();
String shortRandomString = UUID.randomUUID().toString().substring(0, 8);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -425,6 +425,14 @@ Whether Harvesting (OAI) service is enabled
* Convert shibboleth AJP attributes from ISO-8859-1 to UTF-8
*/
ShibAttributeCharacterSetConversionEnabled,
/**
*Return the last or first value of an array of affiliation names
*/
ShibAffiliationOrder,
/**
*Split the affiliation array on given string, default ";"
*/
ShibAffiliationSeparator,
/**
* Validate physical files for all the datafiles in the dataset when publishing
*/
Expand Down

0 comments on commit 39fa64d

Please sign in to comment.