Skip to content

Commit

Permalink
MOSIP-37854 : Deactivation of Policy Group is not allowed if there dr…
Browse files Browse the repository at this point in the history
…aft policies associated to it (#988)

Signed-off-by: sudeep <[email protected]>
  • Loading branch information
Sudeep7353 authored Dec 4, 2024
1 parent 302a44b commit 1c642fa
Show file tree
Hide file tree
Showing 6 changed files with 96 additions and 29 deletions.
34 changes: 28 additions & 6 deletions pmp-reactjs-ui/public/i18n/ara.json
Original file line number Diff line number Diff line change
Expand Up @@ -680,13 +680,17 @@
"headerMsg": "هل تريد إلغاء تنشيط مجموعة السياسات",
"description": "عند النقر فوق تأكيد، سيتم إلغاء تنشيط مجموعة السياسات المحددة"
},
"activePolicyRequestsDetectedMsg": {
"header": "خطأ: تم اكتشاف اقتران نهج الشريك النشط",
"description": "الشركاء النشطون مرتبطون حاليًا بهذه السياسة. يرجى إلغاء تنشيط جميع الشركاء النشطين المرتبطين بهذه السياسة قبل محاولة إلغاء تنشيطها"
"activePoliciesDetectedMsg": {
"header": "خطأ: تم اكتشاف سياسات مفعلة!",
"description": "هناك {{noOfActivePolicies}} سياسات مفعلة مرتبطة بمجموعة السياسات هذه. يرجى إلغاء تفعيلها قبل متابعة العملية."
},
"pendingPolicyRequestsDetectedMsg": {
"header": "خطأ: الشريك - تم اكتشاف طلب السياسة!",
"description": "ترتبط طلبات السياسة المعلقة بهذه السياسة. يرجى اتخاذ الإجراء المناسب في شاشة ربط قائمة سياسات الشركاء"
"draftPoliciesDetectedMsg": {
"header": "خطأ: تم اكتشاف سياسات في حالة مسودة!",
"description": "هناك {{noOfDraftPolicies}} سياسات مسودة مرتبطة بمجموعة السياسات هذه. لا يمكن إلغاء تفعيل مجموعة السياسات حتى يتم نشر وإلغاء تفعيل جميع السياسات المسودة المرتبطة بها. يرجى معالجة السياسات المسودة للمتابعة."
},
"activeAndDraftPoliciesDetectedMsg": {
"header": "خطأ: تم اكتشاف سياسات في حالة مفعلة ومسودة!",
"description": "هناك {{noOfActivePolicies}} سياسات مفعلة و{{noOfDraftPolicies}} سياسات مسودة مرتبطة بهذه المجموعة. للمتابعة في إلغاء تفعيل مجموعة السياسات، يرجى التأكد من استيفاء الشروط التالية:\n\n1. إلغاء تفعيل السياسات المفعلة.\n2. نشر ثم إلغاء تفعيل السياسات المسودة."
},
"viewAuthPoliciesList": {
"viewAuthPolicy": "عرض سياسة المصادقة",
Expand Down Expand Up @@ -804,6 +808,14 @@
"authPolicyDescriptionMsg": "عند النقر على 'تأكيد'، سيتم تعطيل سياسة المصادقة المحددة.",
"dataSharePolicyDescriptionMsg": "عند النقر على 'تأكيد'، سيتم تعطيل سياسة مشاركة البيانات المحددة."
},
"activePolicyRequestsDetectedMsg": {
"header": "خطأ: تم اكتشاف اقتران نهج الشريك النشط",
"description": "الشركاء النشطون مرتبطون حاليًا بهذه السياسة. يرجى إلغاء تنشيط جميع الشركاء النشطين المرتبطين بهذه السياسة قبل محاولة إلغاء تنشيطها"
},
"pendingPolicyRequestsDetectedMsg": {
"header": "خطأ: الشريك - تم اكتشاف طلب السياسة!",
"description": "ترتبط طلبات السياسة المعلقة بهذه السياسة. يرجى اتخاذ الإجراء المناسب في شاشة ربط قائمة سياسات الشركاء"
},
"approveRejectPopup": {
"approveReject": "موافقة / رفض",
"deActivate": "إلغاء التنشيط",
Expand Down Expand Up @@ -1009,6 +1021,16 @@
"PMS_POL_059": "لا توجد مجموعات سياسة نشطة.",
"PMS_POL_060": "حدث خطأ أثناء جلب مجموعات السياسات.",
"PMS_POL_061": "خطأ أثناء جلب السياسات",
"PMS_POL_062": "تم إلغاء تفعيل السياسة بالفعل.",
"PMS_POL_063": "تم ربط طلب سياسة شريك معتمد بهذه السياسة.",
"PMS_POL_064": "تم ربط طلب سياسة شريك قيد الانتظار بهذه السياسة.",
"PMS_POL_065": "السياسة المحددة غير موجودة.",
"PMS_POL_066": "خطأ أثناء إلغاء تفعيل السياسة.",
"PMS_POL_067": "تم إلغاء تفعيل مجموعة السياسات بالفعل.",
"PMS_POL_068": "مجموعة السياسات المحددة غير موجودة.",
"PMS_POL_069": "تم ربط سياسات نشطة أو مسودة بمجموعة السياسات.",
"PMS_POL_070": "توجد سياسات مسودة ضمن مجموعة السياسات.",
"PMS_POL_071": "خطأ أثناء إلغاء تفعيل مجموعة السياسات.",
"KER-PCM-006": "لم يتم العثور على شهادات CA الجذر/CA المتوسطة.",
"KER-PCM-008": "اسم المنظمة الشريكة غير متطابق",
"KER-PCM-015": "الشهادة الموقعة ذاتيًا غير مسموح بها كشريك.",
Expand Down
20 changes: 19 additions & 1 deletion pmp-reactjs-ui/public/i18n/eng.json
Original file line number Diff line number Diff line change
Expand Up @@ -678,7 +678,15 @@
},
"activePoliciesDetectedMsg": {
"header": "Error: Active Policies Detected!",
"description": "There are {{noOfAssociatedPolicies}} active policies associated with this policy group. Please deactivate them before proceeding further"
"description": "There are {{noOfActivePolicies}} active policies associated with this policy group. Please deactivate them before proceeding further"
},
"draftPoliciesDetectedMsg": {
"header": "Error: Policies detected in Draft status!",
"description": "There are {{noOfDraftPolicies}} draft policies associated with this policy group. Policy Group cannot be deactivated until all associated draft policies are published and then deactivated. Please address the draft policies to proceed."
},
"activeAndDraftPoliciesDetectedMsg": {
"header": "Error: Policies in Activated and Draft Status Detected!",
"description": "There are {{noOfActivePolicies}} active policies and {{noOfDraftPolicies}} draft policies associated with this policy group. To proceed with deactivating the policy group, please ensure the following conditions are met:\n\n1. Deactivate the activated policies.\n2. Publish and then deactivate the draft policies."
},
"viewAuthPoliciesList": {
"viewAuthPolicy": "View Authentication Policy",
Expand Down Expand Up @@ -1010,6 +1018,16 @@
"PMS_POL_059": "There are no active policy groups.",
"PMS_POL_060": "Error while fetching policy groups.",
"PMS_POL_061": "Error while fetching policies",
"PMS_POL_062": "The policy has already been deactivated.",
"PMS_POL_063": "An approved partner policy request is associated with this policy.",
"PMS_POL_064": "A pending partner policy request is associated with this policy.",
"PMS_POL_065": "The specified policy does not exist.",
"PMS_POL_066": "Error while deactivating policy",
"PMS_POL_067": "The policy group has already been deactivated",
"PMS_POL_068": "The specified policy group does not exist",
"PMS_POL_069": "Active or draft policies are associated with the policy group",
"PMS_POL_070": "Draft policies exist under the policy group.",
"PMS_POL_071": "Error while deactivating policy group",
"KER-PCM-006": "Root CA/Intermediate CA Certificates not found.",
"KER-PCM-015": "Self Signed Certificate not allowed as partner.",
"KER-PCM-003": "The certificate already exists. Please upload another certificate",
Expand Down
22 changes: 20 additions & 2 deletions pmp-reactjs-ui/public/i18n/fra.json
Original file line number Diff line number Diff line change
Expand Up @@ -681,8 +681,16 @@
"description": "En cliquant sur « Confirmer », le groupe de politiques sélectionné sera désactivé."
},
"activePoliciesDetectedMsg": {
"header": "Erreur : stratégies actives détectées !",
"description": "Il existe {{noOfAssociatedPolicies}} stratégies actives associées à ce groupe de stratégies. Veuillez les désactiver avant de continuer."
"header": "Erreur : Politiques actives détectées !",
"description": "Il y a {{noOfActivePolicies}} politiques actives associées à ce groupe de politiques. Veuillez les désactiver avant de poursuivre."
},
"draftPoliciesDetectedMsg": {
"header": "Erreur : Politiques en brouillon détectées !",
"description": "Il y a {{noOfDraftPolicies}} politiques en brouillon associées à ce groupe de politiques. Le groupe de politiques ne peut pas être désactivé tant que toutes les politiques en brouillon associées ne sont pas publiées puis désactivées. Veuillez traiter les politiques en brouillon pour poursuivre."
},
"activeAndDraftPoliciesDetectedMsg": {
"header": "Erreur : Politiques en statut activé et brouillon détectées !",
"description": "Il y a {{noOfActivePolicies}} politiques actives et {{noOfDraftPolicies}} politiques en brouillon associées à ce groupe de politiques. Pour procéder à la désactivation du groupe de politiques, veuillez vous assurer que les conditions suivantes sont remplies :\n\n1. Désactivez les politiques activées.\n2. Publiez puis désactivez les politiques en brouillon."
},
"viewAuthPoliciesList": {
"viewAuthPolicy": "Afficher la politique d'authentification",
Expand Down Expand Up @@ -1014,6 +1022,16 @@
"PMS_POL_059": "Il n’existe aucun groupe de stratégies actif.",
"PMS_POL_060": "Erreur lors de la récupération des groupes de stratégies.",
"PMS_POL_061": "Erreur lors de la récupération des politiques",
"PMS_POL_062": "La politique a déjà été désactivée.",
"PMS_POL_063": "Une demande de politique partenaire approuvée est associée à cette politique.",
"PMS_POL_064": "Une demande de politique partenaire en attente est associée à cette politique.",
"PMS_POL_065": "La politique spécifiée n'existe pas.",
"PMS_POL_066": "Erreur lors de la désactivation de la politique.",
"PMS_POL_067": "Le groupe de politiques a déjà été désactivé.",
"PMS_POL_068": "Le groupe de politiques spécifié n'existe pas.",
"PMS_POL_069": "Des politiques actives ou en brouillon sont associées au groupe de politiques.",
"PMS_POL_070": "Des politiques en brouillon existent dans le groupe de politiques.",
"PMS_POL_071": "Erreur lors de la désactivation du groupe de politiques.",
"KER-PCM-006": "Certificats d'autorité de certification racine/autorité de certification intermédiaire introuvables.",
"KER-PCM-015": "Certificat auto-signé non autorisé en tant que partenaire.",
"KER-PCM-003": "Le certificat existe déjà. Veuillez télécharger un autre certificat.",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ function ViewAdminOidcClientDetails() {
return (
<ul>
<li key={index} className={`space-y-3 mt-2 ${isLoginLanguageRTL ? "text-right" : "text-left"}`}>
<p className="text-sm max-[450px]:text-xs max-[450px]:font-semibold font-[600] text-[#36393E] py-1 px-2">
<p className="text-sm max-[450px]:text-xs max-[450px]:font-semibold font-[600] text-[#36393E] py-1">
{uri}
</p>
{(oidcClientDetails.redirectUris).length > 1 &&
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import LoadingIcon from '../../common/LoadingIcon';
import ErrorMessage from '../../common/ErrorMessage';
import { HttpService } from '../../../services/HttpService';

function DeactivatePolicyPopup({ header, description, popupData, request, headerKeyName, closePopUp, onClickConfirm }) {
function DeactivatePolicyPopup({ header, description, popupData, headerKeyName, closePopUp, onClickConfirm }) {
const { t } = useTranslation();
const isLoginLanguageRTL = isLangRTL(getUserProfile().langCode);
const [errorCode, setErrorCode] = useState("");
Expand Down Expand Up @@ -45,10 +45,9 @@ function DeactivatePolicyPopup({ header, description, popupData, request, header
let response;
if (popupData.isDeactivatePolicyGroup) {
response = await HttpService({
url: getPolicyManagerUrl(`/policies/group/${popupData.id}`, process.env.NODE_ENV),
method: 'put',
url: getPolicyManagerUrl(`/policies/group/${popupData.id}/v2`, process.env.NODE_ENV),
method: 'patch',
baseURL: process.env.NODE_ENV !== 'production' ? '' : window._env_.REACT_APP_POLICY_MANAGER_API_BASE_URL,
data: request
});
} else if (popupData.isDeactivatePolicy) {
response = await HttpService({
Expand All @@ -64,8 +63,8 @@ function DeactivatePolicyPopup({ header, description, popupData, request, header
if (responseData && responseData.errors && responseData.errors.length > 0) {
const errorCode = responseData.errors[0].errorCode;
const errorMessage = responseData.errors[0].message;
if (popupData.isDeactivatePolicyGroup && errorCode === 'PMS_POL_056') {
await getActiveAssociatedPolicies();
if (popupData.isDeactivatePolicyGroup && (errorCode === 'PMS_POL_056' || errorCode === 'PMS_POL_069' || errorCode === 'PMS_POL_070')) {
await getAssociatedPolicies(errorCode);
setShowAlertErrorMessage(true);
} else if (popupData.isDeactivatePolicy && (errorCode === 'PMS_POL_063' || errorCode === 'PMS_POL_064')) {
setPolicyErrorMessage(errorCode);
Expand All @@ -83,18 +82,36 @@ function DeactivatePolicyPopup({ header, description, popupData, request, header
setDataLoaded(true);
};

const getActiveAssociatedPolicies = async () => {
const getAssociatedPolicies = async (errorCode) => {
try {
const response = await HttpService({
url: getPolicyManagerUrl(`/policies/active/group/${popupData.name}`, process.env.NODE_ENV),
url: getPolicyManagerUrl(`/policies/group/${popupData.id}`, process.env.NODE_ENV),
method: 'get',
baseURL: process.env.NODE_ENV !== 'production' ? '' : window._env_.REACT_APP_POLICY_MANAGER_API_BASE_URL,
});
const responseData = response.data;
if (responseData && responseData.response) {
const resData = responseData.response;
setErrorHeaderMsg(t('activePoliciesDetectedMsg.header'))
setErrorDescriptionMsg(t('activePoliciesDetectedMsg.description', {noOfAssociatedPolicies: resData.length}));
const resData = responseData.response.policies || [];
let activePoliciesCount = 0;
let draftPoliciesCount = 0;

if (errorCode === 'PMS_POL_069') {
// Count active and draft policies
activePoliciesCount = resData.filter(policy => policy.is_Active && policy.schema).length;
draftPoliciesCount = resData.filter(policy => !policy.is_Active && !policy.schema).length;
setErrorHeaderMsg(t('activeAndDraftPoliciesDetectedMsg.header'));
setErrorDescriptionMsg(t('activeAndDraftPoliciesDetectedMsg.description', { noOfActivePolicies: activePoliciesCount, noOfDraftPolicies: draftPoliciesCount }));
} else if (errorCode === 'PMS_POL_070') {
// Count draft policies
draftPoliciesCount = resData.filter(policy => !policy.is_Active && !policy.schema).length;
setErrorHeaderMsg(t('draftPoliciesDetectedMsg.header'));
setErrorDescriptionMsg(t('draftPoliciesDetectedMsg.description', { noOfDraftPolicies: draftPoliciesCount }));
} else if (errorCode === 'PMS_POL_056') {
// Count active policies
activePoliciesCount = resData.filter(policy => policy.is_Active && policy.schema).length;
setErrorHeaderMsg(t('activePoliciesDetectedMsg.header'));
setErrorDescriptionMsg(t('activePoliciesDetectedMsg.description', { noOfActivePolicies: activePoliciesCount }));
}
} else {
handleServiceErrors(responseData, setErrorCode, setErrorMsg);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@ function PolicyGroupList() {
status: null,
});
const [showDeactivatePolicyGroupPopup, setShowDeactivatePolicyGroupPopup] = useState(false);
const [deactivatePolicyGroupRequest, setDeactivatePolicyGroupRequest] = useState({});
const submenuRef = useRef([]);

useEffect(() => {
Expand Down Expand Up @@ -214,12 +213,6 @@ function PolicyGroupList() {

const showDeactivatePolicyGroup = (policyGroup) => {
if (policyGroup.isActive) {
const request = createRequest({
name: policyGroup.name,
desc: policyGroup.desc,
isActive: false
});
setDeactivatePolicyGroupRequest(request);
setShowDeactivatePolicyGroupPopup(true);
document.body.style.overflow = "hidden";
}
Expand Down Expand Up @@ -354,7 +347,6 @@ function PolicyGroupList() {
header={'deactivatePolicyGroup.headerMsg'}
description={'deactivatePolicyGroup.description'}
popupData={{...policyGroup, isDeactivatePolicyGroup: true}}
request={deactivatePolicyGroupRequest}
headerKeyName={policyGroup.name}
closePopUp={closePopup}
onClickConfirm={(deactivationResponse) => onClickConfirmDeactivate(deactivationResponse, policyGroup)}
Expand Down

0 comments on commit 1c642fa

Please sign in to comment.