From 39a2bf1be90422268435059d62f230a32c1d8b3c Mon Sep 17 00:00:00 2001 From: Anil_Kumar_Majji <106086523+Anil-kumar-Majji@users.noreply.github.com> Date: Thu, 10 Oct 2024 17:13:24 +0530 Subject: [PATCH] MOSIP-36115: Integration with API Upload Certificate by Partner Admin Signed-off-by: Anil_Kumar_Majji <106086523+Anil-kumar-Majji@users.noreply.github.com> --- pmp-reactjs-ui/public/i18n/ara.json | 3 +- pmp-reactjs-ui/public/i18n/eng.json | 3 +- pmp-reactjs-ui/public/i18n/fra.json | 3 +- .../certificates/RootTrustCertificateList.js | 9 +-- .../UploadRootTrustCertificate.js | 64 +++++++++++++++---- 5 files changed, 58 insertions(+), 24 deletions(-) diff --git a/pmp-reactjs-ui/public/i18n/ara.json b/pmp-reactjs-ui/public/i18n/ara.json index 4c0e612c..220a695b 100644 --- a/pmp-reactjs-ui/public/i18n/ara.json +++ b/pmp-reactjs-ui/public/i18n/ara.json @@ -538,7 +538,8 @@ "uploadRootofTrustCertificate": { "uploadRootofTrustCertificate": "تحميل شهادة جذر الثقة", "partnerDomain": "مجال الشريك", - "dropdownPlaceholder": "حدد مجال الشريك" + "dropdownPlaceholder": "حدد مجال الشريك", + "successMsg": "تم تحميل شهادة جذر الثقة لـ {{partnerDomain}} بنجاح" }, "viewRootOfTrustCertificate": { "viewRootOfTrustCertificate": "عرض شهادة جذر الثقة", diff --git a/pmp-reactjs-ui/public/i18n/eng.json b/pmp-reactjs-ui/public/i18n/eng.json index c367c237..72166688 100644 --- a/pmp-reactjs-ui/public/i18n/eng.json +++ b/pmp-reactjs-ui/public/i18n/eng.json @@ -533,7 +533,8 @@ "uploadRootofTrustCertificate": { "uploadRootofTrustCertificate":"Upload Root of Trust Certificate", "partnerDomain": "Partner Domain", - "dropdownPlaceholder": "Select partner domain" + "dropdownPlaceholder": "Select partner domain", + "successMsg": "Root of Trust Certificate for {{partnerDomain}} is uploaded successfully" }, "viewRootOfTrustCertificate": { "viewRootOfTrustCertificate": "View Root of Trust Certificate", diff --git a/pmp-reactjs-ui/public/i18n/fra.json b/pmp-reactjs-ui/public/i18n/fra.json index d68eaf02..d85c7f86 100644 --- a/pmp-reactjs-ui/public/i18n/fra.json +++ b/pmp-reactjs-ui/public/i18n/fra.json @@ -538,7 +538,8 @@ "uploadRootofTrustCertificate": { "uploadRootofTrustCertificate": "Télécharger le certificat racine de confiance", "partnerDomain": "Domaine partenaire", - "dropdownPlaceholder": "Sélectionnez un domaine partenaire" + "dropdownPlaceholder": "Sélectionnez un domaine partenaire", + "successMsg": "Le certificat racine de confiance pour {{partnerDomain}} a été téléchargé avec succès" }, "viewRootOfTrustCertificate": { "viewRootOfTrustCertificate": "Afficher le certificat racine de confiance", diff --git a/pmp-reactjs-ui/src/pages/admin/certificates/RootTrustCertificateList.js b/pmp-reactjs-ui/src/pages/admin/certificates/RootTrustCertificateList.js index 961ce4d8..37160252 100644 --- a/pmp-reactjs-ui/src/pages/admin/certificates/RootTrustCertificateList.js +++ b/pmp-reactjs-ui/src/pages/admin/certificates/RootTrustCertificateList.js @@ -3,14 +3,7 @@ import { useNavigate } from 'react-router-dom'; import { useTranslation } from "react-i18next"; import { getUserProfile } from "../../../services/UserProfileService"; import { isLangRTL, onPressEnterKey } from "../../../utils/AppUtils"; -import { - formatDate, - getStatusCode, - handleMouseClickForDropdown, - toggleSortAscOrder, - toggleSortDescOrder, - bgOfStatus, -} from "../../../utils/AppUtils"; +import { formatDate, getStatusCode, handleMouseClickForDropdown, toggleSortAscOrder, toggleSortDescOrder, bgOfStatus,} from "../../../utils/AppUtils"; import LoadingIcon from "../../common/LoadingIcon"; import ErrorMessage from "../../common/ErrorMessage"; import Title from "../../common/Title"; diff --git a/pmp-reactjs-ui/src/pages/admin/certificates/UploadRootTrustCertificate.js b/pmp-reactjs-ui/src/pages/admin/certificates/UploadRootTrustCertificate.js index 721d6afd..46f27c05 100644 --- a/pmp-reactjs-ui/src/pages/admin/certificates/UploadRootTrustCertificate.js +++ b/pmp-reactjs-ui/src/pages/admin/certificates/UploadRootTrustCertificate.js @@ -1,7 +1,7 @@ import React, { useState, } from 'react'; import { useNavigate } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; -import { createDropdownData, isLangRTL, onPressEnterKey } from "../../../utils/AppUtils"; +import { createDropdownData, createRequest, getPartnerManagerUrl, isLangRTL, onPressEnterKey } from "../../../utils/AppUtils"; import { getUserProfile } from '../../../services/UserProfileService'; import Title from '../../common/Title'; import DropdownComponent from "../../common/fields/DropdownComponent"; import file from '../../../svg/file_icon.svg'; @@ -10,6 +10,7 @@ import fileDescription from '../../../svg/file_description.svg'; import SuccessMessage from "../../common/SuccessMessage"; import file_uploaded_successful from '../../../svg/file_uploaded_successful_icon.svg'; import ErrorMessage from '../../common/ErrorMessage'; +import { HttpService } from '../../../services/HttpService'; function UploadRootTrustCertificate() { const { t } = useTranslation(); @@ -20,7 +21,7 @@ function UploadRootTrustCertificate() { const [successMsg, setSuccessMsg] = useState(""); const [uploading, setUploading] = useState(false); const [selectedDomain, setSelectedDomain] = useState(''); - const [certificateData, setCertificateData] = useState([]); + const [certificateData, setCertificateData] = useState(''); const [removeLastUploadData, setRemoveLastUploadData] = useState(false); const [fileName, setFileName] = useState(''); const [uploadSuccess, setUploadSuccess] = useState(false); @@ -29,9 +30,10 @@ function UploadRootTrustCertificate() { const cancelUpload = () => { setFileName(""); setUploading(false); + setSelectedDomain(''); }; - const goBack = () => { + const submit = () => { setFileName(""); setUploading(false); navigate('/partnermanagement/admin/certificates/rootTrustCertificateList') @@ -51,6 +53,42 @@ function UploadRootTrustCertificate() { setSuccessMsg(""); }; + const certificateSubmit = async (certificateData, selectedDomain) => { + setSuccessMsg(""); + setErrorCode(""); + const uploadRequest = createRequest({ + certificateData: certificateData, + partnerDomain: selectedDomain + }); + try { + let response; + response = await HttpService.post(getPartnerManagerUrl('/partners/certificate/ca/upload', process.env.NODE_ENV), uploadRequest) + if (response !== null) { + const resData = response.data.response; + if (response.data.errors && response.data.errors.length > 0) { + const errorCode = response.data.errors[0].errorCode; + const errorMessage = response.data.errors[0].message; + setUploadFailure(true); + setErrorCode(errorCode) + setErrorMsg(errorMessage); + } else if (resData === null) { + setUploadFailure(true); + setErrorMsg(t('uploadCertificate.unableToUploadCertificate')); + } else { + setUploadSuccess(true); + setSuccessMsg({partnerDomain: selectedDomain}, 'uploadRootofTrustCertificate.successMsg'); + } + } else { + setUploadFailure(true); + setErrorMsg(t('uploadCertificate.errorWhileUploadingCertificate')); + } + } catch (err) { + setUploadFailure(true); + setErrorMsg(err); + console.log("Unable to upload partner certificate: ", err); + } + }; + const handleFileChange = (event) => { setErrorMsg(""); setErrorCode(""); @@ -71,6 +109,7 @@ function UploadRootTrustCertificate() { }, 2000); } reader.readAsText(file); + certificateSubmit(certificateData, selectedDomain); } else { setUploadFailure(true); setErrorMsg(t('uploadCertificate.fileUploadError')); @@ -78,7 +117,7 @@ function UploadRootTrustCertificate() { } }; - const onDomainChangeEvent = (value) => { + const onDomainChangeEvent = (fieldName, value) => { setSelectedDomain(value); }; @@ -110,8 +149,8 @@ function UploadRootTrustCertificate() {
-
- {!uploading && fileName +
+ {uploadSuccess && fileName ? : } @@ -126,15 +165,15 @@ function UploadRootTrustCertificate() {

{t('uploadRootofTrustCertificate.partnerDomain')}

-

-

+

{!uploadSuccess && selectedDomain}

{t('partnerCertificatesList.expiryDate')}

-

-

+

-

{t('partnerCertificatesList.timeOfUpload')}

-

-

+

-

@@ -147,7 +186,7 @@ function UploadRootTrustCertificate() {
-
+
@@ -210,7 +248,7 @@ function UploadRootTrustCertificate() {
- +