7 changed files with 216 additions and 104 deletions
			
			
		| @ -0,0 +1,30 @@ | |||||
|  | <template> | ||||
|  |     <div> | ||||
|  |         <h4>{{ $t("Certificate Info") }}</h4> | ||||
|  |         {{ $t("Certificate Chain") }}: | ||||
|  |         <div v-if="valid" class="rounded d-inline-flex ms-2 py-1 px-3 bg-success text-white">{{ $t("Valid") }}</div> | ||||
|  |         <div v-if="!valid" class="rounded d-inline-flex ms-2 py-1 px-3 bg-danger text-white">{{ $t("Invalid") }}</div> | ||||
|  |         <certificate-info-row :cert="certInfo" /> | ||||
|  |     </div> | ||||
|  | </template> | ||||
|  | 
 | ||||
|  | <script> | ||||
|  | import CertificateInfoRow from "./CertificateInfoRow.vue"; | ||||
|  | export default { | ||||
|  |     components: { | ||||
|  |         CertificateInfoRow, | ||||
|  |     }, | ||||
|  |     props: { | ||||
|  |         certInfo: { | ||||
|  |             type: Object, | ||||
|  |             required: true, | ||||
|  |         }, | ||||
|  |         valid: { | ||||
|  |             type: Boolean, | ||||
|  |             required: true, | ||||
|  |         }, | ||||
|  |     }, | ||||
|  | }; | ||||
|  | </script> | ||||
|  | 
 | ||||
|  | <style></style> | ||||
| @ -0,0 +1,106 @@ | |||||
|  | <template> | ||||
|  |     <div> | ||||
|  |         <div class="d-flex flex-row align-items-center p-1 overflow-hidden"> | ||||
|  |             <div class="m-3 ps-3"> | ||||
|  |                 <font-awesome-icon class="cert-icon" icon="file-contract" /> | ||||
|  |             </div> | ||||
|  |             <div class="m-3"> | ||||
|  |                 <table class="text-start"> | ||||
|  |                     <tbody> | ||||
|  |                         <tr class="my-3"> | ||||
|  |                             <td class="px-3">Subject:</td> | ||||
|  |                             <td>{{ formatSubject(cert.subject) }}</td> | ||||
|  |                         </tr> | ||||
|  |                         <tr class="my-3"> | ||||
|  |                             <td class="px-3">Valid To:</td> | ||||
|  |                             <td><Datetime :value="cert.validTo" /></td> | ||||
|  |                         </tr> | ||||
|  |                         <tr class="my-3"> | ||||
|  |                             <td class="px-3">Days Remaining:</td> | ||||
|  |                             <td>{{ cert.daysRemaining }}</td> | ||||
|  |                         </tr> | ||||
|  |                         <tr class="my-3"> | ||||
|  |                             <td class="px-3">Issuer:</td> | ||||
|  |                             <td>{{ formatSubject(cert.issuer) }}</td> | ||||
|  |                         </tr> | ||||
|  |                         <tr class="my-3"> | ||||
|  |                             <td class="px-3">Fingerprint:</td> | ||||
|  |                             <td>{{ cert.fingerprint }}</td> | ||||
|  |                         </tr> | ||||
|  |                     </tbody> | ||||
|  |                 </table> | ||||
|  |             </div> | ||||
|  |         </div> | ||||
|  |         <div class="d-flex"> | ||||
|  |             <font-awesome-icon | ||||
|  |                 v-if="cert.issuerCertificate" | ||||
|  |                 class="m-2 ps-6 link-icon" | ||||
|  |                 icon="link" | ||||
|  |             /> | ||||
|  |         </div> | ||||
|  |         <certificate-info-row | ||||
|  |             v-if="cert.issuerCertificate" | ||||
|  |             :cert="cert.issuerCertificate" | ||||
|  |         /> | ||||
|  |     </div> | ||||
|  | </template> | ||||
|  | 
 | ||||
|  | <script> | ||||
|  | import Datetime from "../components/Datetime.vue"; | ||||
|  | export default { | ||||
|  |     name: "CertificateInfoRow", | ||||
|  |     components: { | ||||
|  |         Datetime, | ||||
|  |     }, | ||||
|  |     props: { | ||||
|  |         cert: { | ||||
|  |             type: Object, | ||||
|  |             required: true, | ||||
|  |         }, | ||||
|  |     }, | ||||
|  |     methods: { | ||||
|  |         formatSubject(subject) { | ||||
|  |             if (subject.O && subject.CN && subject.C) { | ||||
|  |                 return `${subject.CN} - ${subject.O} (${subject.C})`; | ||||
|  |             } else if (subject.O && subject.CN) { | ||||
|  |                 return `${subject.CN} - ${subject.O}`; | ||||
|  |             } else if (subject.CN) { | ||||
|  |                 return subject.CN; | ||||
|  |             } else { | ||||
|  |                 return "no info"; | ||||
|  |             } | ||||
|  |         }, | ||||
|  |     }, | ||||
|  | }; | ||||
|  | </script> | ||||
|  | 
 | ||||
|  | <style lang="scss" scoped> | ||||
|  | @import "../assets/vars.scss"; | ||||
|  | 
 | ||||
|  | table { | ||||
|  |     overflow: hidden; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .cert-icon { | ||||
|  |     font-size: 70px; | ||||
|  |     color: $link-color; | ||||
|  |     opacity: 0.5; | ||||
|  | 
 | ||||
|  |     .dark & { | ||||
|  |         color: $dark-font-color; | ||||
|  |         opacity: 0.3; | ||||
|  |     } | ||||
|  | } | ||||
|  | 
 | ||||
|  | .link-icon { | ||||
|  |     font-size: 20px; | ||||
|  |     margin-left: 50px !important; | ||||
|  |     color: $link-color; | ||||
|  |     opacity: 0.5; | ||||
|  | 
 | ||||
|  |     .dark & { | ||||
|  |         color: $dark-font-color; | ||||
|  |         opacity: 0.3; | ||||
|  |     } | ||||
|  | } | ||||
|  | </style> | ||||
					Loading…
					
					
				
		Reference in new issue