1 |
785793c3
|
David Friesecký
|
<!DOCTYPE html>
|
2 |
|
|
<html lang="en">
|
3 |
|
|
<head>
|
4 |
|
|
<meta charset="UTF-8">
|
5 |
|
|
<title>X.509 Certificate Management</title>
|
6 |
5f5de859
|
David Friesecký
|
<link rel="stylesheet" href="/static/css/bootstrap.min.css">
|
7 |
5885e489
|
Jan Pašek
|
<link href="https://cdn.jsdelivr.net/npm/vue-loading-overlay@3/dist/vue-loading.css" rel="stylesheet">
|
8 |
9c4ac3c5
|
Jan Pašek
|
<link rel="stylesheet" href="/static/css/app.css">
|
9 |
785793c3
|
David Friesecký
|
</head>
|
10 |
|
|
<body class="p-4">
|
11 |
5f5de859
|
David Friesecký
|
<div id="certificate-detailed-view-content" class="p-4">
|
12 |
5885e489
|
Jan Pašek
|
<div v-if="loading">
|
13 |
|
|
<loading :active.sync="loading"
|
14 |
|
|
:can-cancel="false"
|
15 |
|
|
loader="dots"
|
16 |
|
|
:is-full-page="true"></loading>
|
17 |
f2316dc4
|
David Friesecký
|
</div>
|
18 |
5885e489
|
Jan Pašek
|
<div id="404_page" v-if="!loading && error" align="center" v-cloak>
|
19 |
|
|
<div class="fof">
|
20 |
|
|
<h1>Error 404</h1>
|
21 |
|
|
</div>
|
22 |
|
|
<a href="/" class="caret-left">Home</a>
|
23 |
443d18f2
|
David Friesecký
|
</div>
|
24 |
5885e489
|
Jan Pašek
|
<div v-if="!loading && !error" v-cloak>
|
25 |
|
|
<div class="row">
|
26 |
|
|
<a href="/static/index.html"><div class="caret-left font-weight-bold ml-2 mb-2">Home</div></a>
|
27 |
|
|
</div>
|
28 |
|
|
<h1 class="mb-5 text-center">Certificate Detailed View</h1>
|
29 |
|
|
<div class="alert alert-success" v-if="successMessage !== ''" role="alert" v-cloak>
|
30 |
|
|
{{ successMessage }}
|
31 |
|
|
</div>
|
32 |
|
|
<div v-if="errorMessage !== ''" class="alert alert-danger" v-cloak role="alert">
|
33 |
|
|
{{ errorMessage }}
|
34 |
|
|
</div>
|
35 |
|
|
<div class="row">
|
36 |
|
|
<div class="col-xl-6">
|
37 |
|
|
<table class="ml-auto mr-auto mb-4">
|
38 |
e5640707
|
Jan Pašek
|
<tr>
|
39 |
|
|
<td>Status:</td>
|
40 |
|
|
<td class="pl-3">
|
41 |
|
|
<h5><span class="badge badge-success" v-if="certificate.status == 'valid'">Valid</span></h5>
|
42 |
|
|
<h5><span class="badge badge-warning" v-if="certificate.status == 'revoked'">Revoked</span></h5>
|
43 |
|
|
<h5><span class="badge badge-danger" v-if="certificate.status == 'expired'">Expired</span></h5>
|
44 |
|
|
</td>
|
45 |
|
|
</tr>
|
46 |
5885e489
|
Jan Pašek
|
<tr>
|
47 |
|
|
<div class="form-group">
|
48 |
|
|
<td><label for="validity_start">Validity start:</label></td>
|
49 |
|
|
<td class="pl-3">
|
50 |
|
|
<input :value="startDate" type="text" id="validity_start" name="validity_start" class="form-control" disabled>
|
51 |
|
|
</td>
|
52 |
|
|
</div>
|
53 |
|
|
</tr>
|
54 |
|
|
<tr>
|
55 |
|
|
<div class="form-group">
|
56 |
|
|
<td><label for="validity_end">Validity end:</label></td>
|
57 |
|
|
<td class="pl-3">
|
58 |
|
|
<input :value="endDate" type="text" id="validity_end" name="validity_end" class="form-control" disabled>
|
59 |
|
|
</td>
|
60 |
|
|
</div>
|
61 |
|
|
</tr>
|
62 |
|
|
<tr>
|
63 |
|
|
<td colspan="2"><h5>Subject</h5></td>
|
64 |
|
|
</tr>
|
65 |
|
|
<tr>
|
66 |
|
|
<div class="form-group">
|
67 |
|
|
<td><label for="subject_C">Country Code:</label></td>
|
68 |
|
|
<td class="pl-3">
|
69 |
|
|
<input :value="certificate.subject.C" type="text" id="subject_C" name="subject_C" class="form-control" disabled>
|
70 |
|
|
</td>
|
71 |
|
|
</div>
|
72 |
|
|
</tr>
|
73 |
|
|
<tr>
|
74 |
|
|
<div class="form-group">
|
75 |
|
|
<td><label for="subject_ST">Province/State:</label></td>
|
76 |
|
|
<td class="pl-3">
|
77 |
|
|
<input :value="certificate.subject.ST" type="text" id="subject_ST" name="subject_ST" class="form-control" disabled>
|
78 |
|
|
</td>
|
79 |
|
|
</div>
|
80 |
|
|
</tr>
|
81 |
|
|
<tr>
|
82 |
|
|
<div class="form-group">
|
83 |
|
|
<td><label for="subject_L">Locality:</label></td>
|
84 |
|
|
<td class="pl-3">
|
85 |
|
|
<input :value="certificate.subject.L" type="text" id="subject_L" name="subject_L" class="form-control" disabled>
|
86 |
|
|
</td>
|
87 |
|
|
</div>
|
88 |
|
|
</tr>
|
89 |
|
|
<tr>
|
90 |
|
|
<div class="form-group">
|
91 |
|
|
<td><label for="subject_CN">Common Name:</label></td>
|
92 |
|
|
<td class="pl-3">
|
93 |
|
|
<input :value="certificate.subject.CN" type="text" id="subject_CN" name="subject_CN" class="form-control" disabled>
|
94 |
|
|
</td>
|
95 |
|
|
</div>
|
96 |
|
|
</tr>
|
97 |
|
|
<tr>
|
98 |
|
|
<div class="form-group">
|
99 |
|
|
<td><label for="subject_O">Organization:</label></td>
|
100 |
|
|
<td class="pl-3">
|
101 |
|
|
<input :value="certificate.subject.O" type="text" id="subject_O" name="subject_O" class="form-control" disabled>
|
102 |
|
|
</td>
|
103 |
|
|
</div>
|
104 |
|
|
</tr>
|
105 |
|
|
<tr>
|
106 |
|
|
<div class="form-group">
|
107 |
|
|
<td><label for="subject_OU">Organization Unit:</label></td>
|
108 |
|
|
<td class="pl-3">
|
109 |
|
|
<input :value="certificate.subject.OU" type="text" id="subject_OU" name="subject_OU" class="form-control" disabled>
|
110 |
|
|
</td>
|
111 |
|
|
</div>
|
112 |
|
|
</tr>
|
113 |
|
|
<tr>
|
114 |
|
|
<div class="form-group">
|
115 |
|
|
<td><label for="subject_emailAddress">Email Address:</label></td>
|
116 |
|
|
<td class="pl-3">
|
117 |
|
|
<input :value="certificate.subject.emailAddress" type="text" id="subject_emailAddress" name="subject_emailAddress" class="form-control" disabled>
|
118 |
|
|
</td>
|
119 |
|
|
</div>
|
120 |
|
|
</tr>
|
121 |
|
|
<tr>
|
122 |
|
|
<td>Usage:</td>
|
123 |
|
|
<td class="form-check">
|
124 |
|
|
<input class="form-check-input" v-model="certificate.usage.CA" type="checkbox" id="isCA" name="isCA" value="CA" disabled>
|
125 |
|
|
<label class="form-check-label" for="isCA">CA</label><br>
|
126 |
f2316dc4
|
David Friesecký
|
|
127 |
5885e489
|
Jan Pašek
|
<input class="form-check-input" v-model="certificate.usage.digitalSignature" type="checkbox" id="isDigitalSignature" name="isDigitalSignature" value="DigitalSignature" disabled>
|
128 |
|
|
<label class="form-check-label" for="isDigitalSignature">Digital Signature</label><br>
|
129 |
f2316dc4
|
David Friesecký
|
|
130 |
5885e489
|
Jan Pašek
|
<input class="form-check-input" v-model="certificate.usage.authentication" type="checkbox" id="isAuthentication" name="isAuthentication" value="Authentication" disabled>
|
131 |
|
|
<label class="form-check-label" for="isAuthentication">Authentication</label><br>
|
132 |
f2316dc4
|
David Friesecký
|
|
133 |
5885e489
|
Jan Pašek
|
<input class="form-check-input" v-model="certificate.usage.SSL" type="checkbox" id="isSSL_TLS" name="isSSL_TLS" value="SSL_TLS" disabled>
|
134 |
|
|
<label class="form-check-label" for="isSSL_TLS">SSL/TLS</label><br>
|
135 |
|
|
</td>
|
136 |
|
|
</tr>
|
137 |
e5640707
|
Jan Pašek
|
<tr>
|
138 |
|
|
<td colspan="2" v-if="certificate.CA != id">
|
139 |
|
|
<button v-on:click="onShowIssuer()" class="btn btn-outline-secondary btn-block mt-5" type="button">
|
140 |
|
|
<span v-if="!displayIssuer">Show issuer</span>
|
141 |
|
|
<span v-if="displayIssuer">Hide issuer</span>
|
142 |
|
|
</button>
|
143 |
|
|
</td>
|
144 |
|
|
</tr>
|
145 |
|
|
<div id="issuerCollapse">
|
146 |
|
|
<tr v-if="displayIssuer">
|
147 |
aea56581
|
Jan Pašek
|
<td colspan="2"><h5 class="mt-2"><a :href="issuerURL">Issuer</a></h5></td>
|
148 |
e5640707
|
Jan Pašek
|
</tr>
|
149 |
|
|
<tr v-if="displayIssuer" >
|
150 |
|
|
<div class="form-group">
|
151 |
|
|
<td><label for="subject_C">Country Code:</label></td>
|
152 |
|
|
<td class="pl-3">
|
153 |
|
|
<input :value="issuer.subject.C" type="text" id="subject_C" name="subject_C" class="form-control" disabled>
|
154 |
|
|
</td>
|
155 |
|
|
</div>
|
156 |
|
|
</tr>
|
157 |
|
|
<tr v-if="displayIssuer" >
|
158 |
|
|
<div class="form-group">
|
159 |
|
|
<td><label for="subject_ST">Province/State:</label></td>
|
160 |
|
|
<td class="pl-3">
|
161 |
|
|
<input :value="issuer.subject.ST" type="text" id="subject_ST" name="subject_ST" class="form-control" disabled>
|
162 |
|
|
</td>
|
163 |
|
|
</div>
|
164 |
|
|
</tr>
|
165 |
|
|
<tr v-if="displayIssuer" >
|
166 |
|
|
<div class="form-group">
|
167 |
|
|
<td><label for="subject_L">Locality:</label></td>
|
168 |
|
|
<td class="pl-3">
|
169 |
|
|
<input :value="issuer.subject.L" type="text" id="subject_L" name="subject_L" class="form-control" disabled>
|
170 |
|
|
</td>
|
171 |
|
|
</div>
|
172 |
|
|
</tr>
|
173 |
|
|
<tr v-if="displayIssuer" >
|
174 |
|
|
<div class="form-group">
|
175 |
|
|
<td><label for="subject_CN">Common Name:</label></td>
|
176 |
|
|
<td class="pl-3">
|
177 |
|
|
<input :value="issuer.subject.CN" type="text" id="subject_CN" name="subject_CN" class="form-control" disabled>
|
178 |
|
|
</td>
|
179 |
|
|
</div>
|
180 |
|
|
</tr>
|
181 |
|
|
<tr v-if="displayIssuer" >
|
182 |
|
|
<div class="form-group">
|
183 |
|
|
<td><label for="subject_O">Organization:</label></td>
|
184 |
|
|
<td class="pl-3">
|
185 |
|
|
<input :value="issuer.subject.O" type="text" id="subject_O" name="subject_O" class="form-control" disabled>
|
186 |
|
|
</td>
|
187 |
|
|
</div>
|
188 |
|
|
</tr>
|
189 |
|
|
<tr v-if="displayIssuer" >
|
190 |
|
|
<div class="form-group">
|
191 |
|
|
<td><label for="subject_OU">Organization Unit:</label></td>
|
192 |
|
|
<td class="pl-3">
|
193 |
|
|
<input :value="issuer.subject.OU" type="text" id="subject_OU" name="subject_OU" class="form-control" disabled>
|
194 |
|
|
</td>
|
195 |
|
|
</div>
|
196 |
|
|
</tr>
|
197 |
|
|
<tr v-if="displayIssuer" >
|
198 |
|
|
<div class="form-group">
|
199 |
|
|
<td><label for="subject_emailAddress">Email Address:</label></td>
|
200 |
|
|
<td class="pl-3">
|
201 |
|
|
<input :value="issuer.subject.emailAddress" type="text" id="subject_emailAddress" name="subject_emailAddress" class="form-control" disabled>
|
202 |
|
|
</td>
|
203 |
|
|
</div>
|
204 |
|
|
</tr>
|
205 |
|
|
<tr v-if="displayIssuer" >
|
206 |
|
|
<td>Usage:</td>
|
207 |
|
|
<td class="form-check">
|
208 |
|
|
<input class="form-check-input" v-model="issuer.usage.CA" type="checkbox" id="isCA" name="isCA" value="CA" disabled>
|
209 |
|
|
<label class="form-check-label" for="isCA">CA</label><br>
|
210 |
|
|
|
211 |
|
|
<input class="form-check-input" v-model="issuer.usage.digitalSignature" type="checkbox" id="isDigitalSignature" name="isDigitalSignature" value="DigitalSignature" disabled>
|
212 |
|
|
<label class="form-check-label" for="isDigitalSignature">Digital Signature</label><br>
|
213 |
|
|
|
214 |
|
|
<input class="form-check-input" v-model="issuer.usage.authentication" type="checkbox" id="isAuthentication" name="isAuthentication" value="Authentication" disabled>
|
215 |
|
|
<label class="form-check-label" for="isAuthentication">Authentication</label><br>
|
216 |
|
|
|
217 |
|
|
<input class="form-check-input" v-model="issuer.usage.SSL" type="checkbox" id="isSSL_TLS" name="isSSL_TLS" value="SSL_TLS" disabled>
|
218 |
|
|
<label class="form-check-label" for="isSSL_TLS">SSL/TLS</label><br>
|
219 |
|
|
</td>
|
220 |
|
|
</tr>
|
221 |
|
|
</div>
|
222 |
5f211e7b
|
Jan Pašek
|
</table>
|
223 |
|
|
</div>
|
224 |
5885e489
|
Jan Pašek
|
<div class="col-xl-5">
|
225 |
|
|
<div class="row table-responsive">
|
226 |
fa272659
|
Jan Pašek
|
<table class="table">
|
227 |
5885e489
|
Jan Pašek
|
<thead class="thead-dark">
|
228 |
|
|
<tr>
|
229 |
90642551
|
Jan Pašek
|
<th colspan="5" class="text-center">Manage certificate</th>
|
230 |
5885e489
|
Jan Pašek
|
</tr>
|
231 |
|
|
</thead>
|
232 |
|
|
<tbody>
|
233 |
|
|
<tr class="d-flex">
|
234 |
|
|
<td style="width: 30%" class="font-weight-bold">Certificate download:</td>
|
235 |
366cd6f3
|
Jan Pašek
|
<td><button v-on:click="onCertificateDownload()" class="btn btn-primary btn-sm certificate-control" href="">Certificate</button></td>
|
236 |
|
|
<td><button v-on:click="onChainDownload()" class="btn btn-primary btn-sm certificate-control" href="">Chain of trust</button></td>
|
237 |
|
|
<td><button v-on:click="onRootDownload()" class="btn btn-primary btn-sm certificate-control" href="">Root</button></td>
|
238 |
5885e489
|
Jan Pašek
|
</tr>
|
239 |
|
|
<tr class="d-flex">
|
240 |
76cd3805
|
Jan Pašek
|
<td style="width: 30%" class="font-weight-bold">Key/Identity download:</td>
|
241 |
366cd6f3
|
Jan Pašek
|
<td><button v-on:click="onPublicKeyDownload()" class="btn btn-success btn-sm certificate-control" href="">Public key</button></td>
|
242 |
|
|
<td><button v-on:click="onPrivateKeyDownload()" class="btn btn-success btn-sm certificate-control" href="">Private key</button></td>
|
243 |
76cd3805
|
Jan Pašek
|
<td><button data-toggle="modal" data-target="#identityModal" class="btn btn-success btn-sm certificate-control" href="">PKCS #12</button></td>
|
244 |
5885e489
|
Jan Pašek
|
</tr>
|
245 |
|
|
<tr class="d-flex">
|
246 |
|
|
<td style="width: 30%" class="font-weight-bold">Actions:</td>
|
247 |
366cd6f3
|
Jan Pašek
|
<td><button data-toggle="modal" data-target="#deleteModal" class="btn btn-danger btn-sm certificate-control" href="">Delete</button></td>
|
248 |
|
|
<td><button data-toggle="modal" data-target="#revokeModal" class="btn btn-warning btn-sm certificate-control" href="">Revoke</button></td>
|
249 |
5885e489
|
Jan Pašek
|
<td> </td>
|
250 |
|
|
</tr>
|
251 |
|
|
<tr class="d-flex">
|
252 |
|
|
<td style="width: 30%" class="font-weight-bold">Endpoints:</td>
|
253 |
|
|
<td><a class="certificate-control font-weight-bold" :href="crlEndpoint">CRL</a></td>
|
254 |
|
|
<td><a class="certificate-control font-weight-bold" :href="ocspEndpoint">OCSP</a></td>
|
255 |
|
|
<td> </td>
|
256 |
|
|
</tr>
|
257 |
|
|
</tbody>
|
258 |
|
|
</table>
|
259 |
|
|
</div>
|
260 |
|
|
<div class="row table-responsive">
|
261 |
|
|
<table class="table table-striped table-hover">
|
262 |
|
|
<thead class="thead-dark text-center">
|
263 |
|
|
<tr>
|
264 |
|
|
<th scope="col" colspan="2">Issued Certificates</th>
|
265 |
|
|
</tr>
|
266 |
|
|
<tr>
|
267 |
|
|
<th class="w-65" scope="col">Common Name</th>
|
268 |
|
|
<th class="w-35" scope="col">Type</th>
|
269 |
|
|
</tr>
|
270 |
|
|
</thead>
|
271 |
|
|
<tbody>
|
272 |
56b36ca7
|
Jan Pašek
|
<tr class="text-center font-italic">
|
273 |
|
|
<td v-if="issuedCertificates.length == 0" colspan="2">No issued certificates</td>
|
274 |
5885e489
|
Jan Pašek
|
</tr>
|
275 |
56b36ca7
|
Jan Pašek
|
<tr is="issued-by-list-item"
|
276 |
|
|
v-for="certificate in issuedCertificates"
|
277 |
|
|
v-bind:certificate="certificate"
|
278 |
|
|
v-bind:key="certificate.id">
|
279 |
5885e489
|
Jan Pašek
|
</tr>
|
280 |
|
|
</tbody>
|
281 |
|
|
</table>
|
282 |
|
|
</div>
|
283 |
5f211e7b
|
Jan Pašek
|
</div>
|
284 |
785793c3
|
David Friesecký
|
</div>
|
285 |
|
|
</div>
|
286 |
76cd3805
|
Jan Pašek
|
<div id="identityModal" class="modal" tabindex="-1" role="dialog">
|
287 |
|
|
<div class="modal-dialog" role="document">
|
288 |
|
|
<div class="modal-content">
|
289 |
|
|
<div class="modal-header">
|
290 |
|
|
<h5 class="modal-title">Create identity</h5>
|
291 |
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
292 |
|
|
<span aria-hidden="true">×</span>
|
293 |
|
|
</button>
|
294 |
|
|
</div>
|
295 |
|
|
<div class="modal-body">
|
296 |
|
|
<p>Enter identity name and password:</p>
|
297 |
|
|
<div class="form-group">
|
298 |
|
|
<label for="reasonSelect">Name: </label>
|
299 |
|
|
<input v-model="identityName" type="text" class="form-control">
|
300 |
|
|
</div>
|
301 |
|
|
<div class="form-group">
|
302 |
|
|
<label for="reasonSelect">Password: </label>
|
303 |
|
|
<input v-model="identityPass" type="password" class="form-control">
|
304 |
|
|
</div>
|
305 |
|
|
</div>
|
306 |
|
|
<div class="modal-footer">
|
307 |
|
|
<button type="button" v-on:click="onIdentityDownload" class="btn btn-primary" data-dismiss="modal">Create</button>
|
308 |
|
|
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
|
309 |
|
|
</div>
|
310 |
|
|
</div>
|
311 |
|
|
</div>
|
312 |
|
|
</div>
|
313 |
366cd6f3
|
Jan Pašek
|
<div id="revokeModal" class="modal" tabindex="-1" role="dialog">
|
314 |
|
|
<div class="modal-dialog" role="document">
|
315 |
|
|
<div class="modal-content">
|
316 |
|
|
<div class="modal-header">
|
317 |
|
|
<h5 class="modal-title">Revoke certificate</h5>
|
318 |
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
319 |
|
|
<span aria-hidden="true">×</span>
|
320 |
|
|
</button>
|
321 |
|
|
</div>
|
322 |
|
|
<div class="modal-body">
|
323 |
|
|
<p>Do you really want to revoke certificate {{ certificate.subject.CN }}?</p>
|
324 |
|
|
<div class="form-group">
|
325 |
|
|
<label for="reasonSelect">Reason: </label>
|
326 |
|
|
<select v-model="revocationReason" class="form-control" id="reasonSelect">
|
327 |
|
|
<option value="unspecified">unspecified</option>
|
328 |
|
|
<option value="keyCompromise">keyCompromise</option>
|
329 |
4108c18c
|
Jan Pašek
|
<option value="CACompromise">CACompromise</option>
|
330 |
366cd6f3
|
Jan Pašek
|
<option value="affiliationChanged">affiliationChanged</option>
|
331 |
|
|
<option value="superseded">superseded</option>
|
332 |
|
|
<option value="cessationOfOperation">cessationOfOperation</option>
|
333 |
|
|
<option value="certificateHold">certificateHold</option>
|
334 |
|
|
<option value="removeFromCRL">removeFromCRL</option>
|
335 |
|
|
</select>
|
336 |
|
|
</div>
|
337 |
|
|
</div>
|
338 |
|
|
<div class="modal-footer">
|
339 |
|
|
<button type="button" v-on:click="onRevoke()" class="btn btn-warning" data-dismiss="modal">Revoke</button>
|
340 |
|
|
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
|
341 |
|
|
</div>
|
342 |
|
|
</div>
|
343 |
|
|
</div>
|
344 |
|
|
</div>
|
345 |
02954c9d
|
Jan Pašek
|
<div id="deleteModal" class="modal" tabindex="-1" role="dialog">
|
346 |
366cd6f3
|
Jan Pašek
|
<div class="modal-dialog" role="document">
|
347 |
|
|
<div class="modal-content">
|
348 |
|
|
<div class="modal-header">
|
349 |
|
|
<h5 class="modal-title">Delete certificate</h5>
|
350 |
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
351 |
|
|
<span aria-hidden="true">×</span>
|
352 |
|
|
</button>
|
353 |
|
|
</div>
|
354 |
|
|
<div class="modal-body">
|
355 |
|
|
<p>Do you really want to delete certificate {{ certificate.subject.CN }}?</p>
|
356 |
|
|
</div>
|
357 |
|
|
<div class="modal-footer">
|
358 |
|
|
<button type="button" v-on:click="onDelete()" class="btn btn-danger" data-dismiss="modal">Delete</button>
|
359 |
|
|
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
|
360 |
|
|
</div>
|
361 |
|
|
</div>
|
362 |
|
|
</div>
|
363 |
|
|
</div>
|
364 |
785793c3
|
David Friesecký
|
</div>
|
365 |
|
|
|
366 |
9c4ac3c5
|
Jan Pašek
|
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
|
367 |
5885e489
|
Jan Pašek
|
<script src="https://cdn.jsdelivr.net/npm/vue-loading-overlay@3"></script>
|
368 |
5f5de859
|
David Friesecký
|
<script src="/static/js/jquery-3.6.0.min.js"></script>
|
369 |
|
|
<script src="/static/js/bootstrap.bundle.min.js"></script>
|
370 |
9c4ac3c5
|
Jan Pašek
|
<script src="/static/js/axios.min.js"></script>
|
371 |
|
|
<script src="/static/js/constants.js"></script>
|
372 |
|
|
<script src="/static/js/utilities.js"></script>
|
373 |
|
|
<script src="/static/js/components.js"></script>
|
374 |
|
|
<script src="/static/js/certificate.js"></script>
|
375 |
|
|
|
376 |
785793c3
|
David Friesecký
|
</body>
|
377 |
|
|
</html>
|