import React from "react"; import Link from "next/link"; import { getCertificates, isPluginCryptoProInstalled } from "../../../utils/digital_signature"; import { SpinnerCircular } from "spinners-react"; import moment from "moment"; export default class DigitalSignaturesList extends React.Component { constructor(props) { super(props); this.state = { loading: true, certificates_error: null, certificate_selected: undefined, }; } componentDidMount() { const script = document.createElement("script"); script.src = `${ process.env.NEXT_PUBLIC_SELF_API_HOST }/assets/js/cadesplugin_api.js`; script.async = true; document.body.appendChild(script); setTimeout(() => { isPluginCryptoProInstalled() .then( getCertificates() .then(certificates => { const certificates_list = []; for(let i in certificates) { const certificate = certificates[i]; let today = moment(); if(today < moment(certificate.info.validToDate)) { certificate.info.validToDate = moment(certificate.info.validToDate).format('DD.MM.YYYY'); certificates_list.push(certificate); } } this.setState({ certificates: certificates_list, certificates_error: certificates_list.length > 0 ? null : "ISSUED", loading: false }); }) .catch((error_get_certificates) => { console.error("error_get_certificates"); console.error(error_get_certificates); console.log("certificates", 'OTHER'); this.setState({ certificates: [], certificates_error: "OTHER", loading: false }); }) ) .catch((error_plugin_installed) => { console.error("error_plugin_installed"); console.error(error_plugin_installed); console.log("certificates", 'NOT_INSTALLED'); this.setState({ certificates: [], certificates_error: "NOT_INSTALLED", loading: false }) }); }, 1000); } componentDidUpdate(prevProps, prevState) { } _sign = () => { alert("Подписание ЭЦП и отправка данных"); } render() { const { certificates, certificates_error, certificate_selected, loading } = this.state; console.log(certificates); if(loading) { return (
Выберите подписанта
Ошибка Плагин КриптоПРО не установлен, посмотрите инструкцию как установить плагин КриптоПРО.
) } { certificates_error === "OTHER" && (Ошибка Плагин КриптоПРО не активирован, пожалуйста, обновите страницу и подтвердите разрешение для сайта на доступ к списку сертификатов.
) } { certificates_error === "ISSUED" && (Ошибка Отсутствуют действующие сертификаты.
) } { certificates_error === "MISMATCH" && (Ошибка Подписант не соответствует указанному подписанту в анкете.
) }