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