From 9c042bb50469fbf6a553048c31e4325c29436598 Mon Sep 17 00:00:00 2001 From: Okke Harsta Date: Wed, 31 Jan 2024 10:15:41 +0100 Subject: [PATCH] Bugfix for impersonation As a superuser you can impersonate other institution admins. However in the overview for MFA and secureID the current IdP was used and not the impersonated IdP. --- dashboard-gui/src/javascripts/components/app_list.jsx | 2 +- .../src/javascripts/pages/authorization_policy_detail.jsx | 4 +++- dashboard-gui/src/javascripts/pages/mfa.jsx | 2 +- dashboard-gui/src/javascripts/pages/stats.jsx | 2 +- dashboard-gui/src/javascripts/pages/surf_secure_id.jsx | 2 +- .../impl/JiraTicketSummaryAndDescriptionBuilder.java | 6 +++--- 6 files changed, 10 insertions(+), 8 deletions(-) diff --git a/dashboard-gui/src/javascripts/components/app_list.jsx b/dashboard-gui/src/javascripts/components/app_list.jsx index 679b320d9..bf40064c4 100644 --- a/dashboard-gui/src/javascripts/components/app_list.jsx +++ b/dashboard-gui/src/javascripts/components/app_list.jsx @@ -302,7 +302,7 @@ export default function AppList({apps, currentUser, facets: remoteFacets, connec }) if (!currentUser.guest) { facets.push(strongAuthenticationFacet) - const mfaEntities = currentUser.currentIdp.mfaEntities + const mfaEntities = currentUser.getCurrentIdp().mfaEntities const mfaLevels = [ 'https://refeds.org/profile/mfa', 'http://schemas.microsoft.com/claims/multipleauthn' diff --git a/dashboard-gui/src/javascripts/pages/authorization_policy_detail.jsx b/dashboard-gui/src/javascripts/pages/authorization_policy_detail.jsx index 59a0983ba..7abb75e0c 100644 --- a/dashboard-gui/src/javascripts/pages/authorization_policy_detail.jsx +++ b/dashboard-gui/src/javascripts/pages/authorization_policy_detail.jsx @@ -72,7 +72,9 @@ export default function AuthorizationPolicyDetail({ app, type, onPolicyChange }) if (e.response && e.response.json) { e.response.json().then((json) => { let message = 'error' - if (json.exception && json.exception.indexOf('PolicyNameNotUniqueException') > 0) { + if (json.exception && ( + json.exception.indexOf('PolicyNameNotUniqueException') > 0 || + json.exception.indexOf('DuplicateEntityIdException') > 0)) { message = I18n.t('policies.policy_name_not_unique_exception') } setFlash(message, 'error') diff --git a/dashboard-gui/src/javascripts/pages/mfa.jsx b/dashboard-gui/src/javascripts/pages/mfa.jsx index f091c0e4c..eb833fba0 100644 --- a/dashboard-gui/src/javascripts/pages/mfa.jsx +++ b/dashboard-gui/src/javascripts/pages/mfa.jsx @@ -11,7 +11,7 @@ import ConnectModalContainer from "../components/connect_modal_container"; export default function MFA({app}) { const {currentUser} = useContext(CurrentUserContext) - const mfaEntity = (currentUser.currentIdp.mfaEntities || []).find((e) => e.name === app.spEntityId) + const mfaEntity = (currentUser.getCurrentIdp().mfaEntities || []).find((e) => e.name === app.spEntityId) const initialAuthnContextLevel = mfaEntity && mfaEntity.level || '' const [authnContextLevel, setAuthnContextLevel] = useState(initialAuthnContextLevel) const [showStepUpModal, setShowStepUpModal] = useState(false) diff --git a/dashboard-gui/src/javascripts/pages/stats.jsx b/dashboard-gui/src/javascripts/pages/stats.jsx index 1758f2a3e..a70a56998 100644 --- a/dashboard-gui/src/javascripts/pages/stats.jsx +++ b/dashboard-gui/src/javascripts/pages/stats.jsx @@ -413,7 +413,7 @@ class Stats extends React.Component { const spSelected = sp !== this.allServiceProviderOption.value const noResult = (data.length === 1 && data[0] === 'no_results') || (loaded && data.length === 0) const results = loaded && data.length > 0 && !noResult - const idp = this.context.currentUser.currentIdp + const idp = this.context.currentUser.getCurrentIdp() const identityProvidersDict = {} identityProvidersDict[idp.id] = I18n.locale === 'en' diff --git a/dashboard-gui/src/javascripts/pages/surf_secure_id.jsx b/dashboard-gui/src/javascripts/pages/surf_secure_id.jsx index 16938b58f..6fc5e1648 100644 --- a/dashboard-gui/src/javascripts/pages/surf_secure_id.jsx +++ b/dashboard-gui/src/javascripts/pages/surf_secure_id.jsx @@ -11,7 +11,7 @@ import ConnectModalContainer from "../components/connect_modal_container"; export default function SurfSecureID({ app }) { const { currentUser } = useContext(CurrentUserContext) - const stepEntity = (currentUser.currentIdp.stepupEntities || []).find((e) => e.name === app.spEntityId) + const stepEntity = (currentUser.getCurrentIdp().stepupEntities || []).find((e) => e.name === app.spEntityId) const initialLoaLevel = app.minimalLoaLevel || (stepEntity && stepEntity.level) || '' const [loaLevel, setLoaLevel] = useState(initialLoaLevel) diff --git a/dashboard-server/src/main/java/dashboard/service/impl/JiraTicketSummaryAndDescriptionBuilder.java b/dashboard-server/src/main/java/dashboard/service/impl/JiraTicketSummaryAndDescriptionBuilder.java index 2b5788981..2fb54e5cb 100644 --- a/dashboard-server/src/main/java/dashboard/service/impl/JiraTicketSummaryAndDescriptionBuilder.java +++ b/dashboard-server/src/main/java/dashboard/service/impl/JiraTicketSummaryAndDescriptionBuilder.java @@ -2,7 +2,6 @@ import com.google.common.base.MoreObjects; import dashboard.domain.Action; -import dashboard.domain.Change; import dashboard.domain.Settings; import dashboard.manage.ChangeRequest; import org.springframework.util.CollectionUtils; @@ -11,7 +10,6 @@ import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; -import java.util.Objects; import static com.google.common.base.Preconditions.checkNotNull; import static dashboard.domain.Action.Type.*; @@ -26,7 +24,9 @@ static SummaryAndDescription build(final Action action) { final StringBuilder summary = new StringBuilder(); if (!CollectionUtils.isEmpty(action.getManageUrls())) { - description.append("A change request in manage has been created to merge this user request.See:\n" + + String changeRequestDescriiption = "A change request in manage has been created to merge this user request."; + String warning = action.getManageUrls().size() > 1 ? " NOTE: there are multiple Manage URL's." : ""; + description.append(changeRequestDescriiption + warning + " See:\n" + String.join("\n", action.getManageUrls()) + "\n\n"); }