Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 82cf9149

Přidáno uživatelem Jan Pašek před téměř 4 roky(ů)

Re #8701 - Design improvements of GUI

Zobrazit rozdíly:

static/certificate.html
21 21
            </div>
22 22
            <a href="/" class="caret-left">Home</a>
23 23
        </div>
24
        <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
                        <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
                        <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>
24
        <div v-if="!loading && !error" v-cloak class="card">
25
            <div class="card-body">
26
                <div class="row">
27
                    <a href="/static/index.html"><div class="caret-left font-weight-bold ml-2 mb-2">Home</div></a>
28
                </div>
29
                <h1 class="mb-5 text-center">Certificate Detailed View</h1>
30
                <div class="alert alert-success" v-if="successMessage !== ''" role="alert" v-cloak>
31
                    {{ successMessage }}
32
                </div>
33
                <div v-if="errorMessage !== ''" class="alert alert-danger" v-cloak role="alert">
34
                    {{ errorMessage }}
35
                </div>
36
                <div class="row">
37
                    <div class="col-xl-6">
38
                        <table class="ml-auto mr-auto mb-4">
39
                            <tr>
40
                                <td>Status:</td>
116 41
                                <td class="pl-3">
117
                                    <input :value="certificate.subject.emailAddress" type="text" id="subject_emailAddress" name="subject_emailAddress" class="form-control" disabled>
42
                                    <h5><span class="badge badge-success" v-if="certificate.status == 'valid'">Valid</span></h5>
43
                                    <h5><span class="badge badge-warning" v-if="certificate.status == 'revoked'">Revoked</span></h5>
44
                                    <h5><span class="badge badge-danger" v-if="certificate.status == 'expired'">Expired</span></h5>
118 45
                                </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

  
127
                                <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

  
130
                                <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

  
133
                                <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
                        <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
                                <td colspan="2"><h5 class="mt-2"><a :href="issuerURL">Issuer</a></h5></td>
148 46
                            </tr>
149
                            <tr v-if="displayIssuer" >
47
                            <tr>
48
                                <div class="form-group">
49
                                    <td><label for="validity_start">Validity start:</label></td>
50
                                    <td class="pl-3">
51
                                        <input :value="startDate" type="text" id="validity_start" name="validity_start" class="form-control" disabled>
52
                                    </td>
53
                                </div>
54
                            </tr>
55
                            <tr>
56
                                <div class="form-group">
57
                                    <td><label for="validity_end">Validity end:</label></td>
58
                                    <td class="pl-3">
59
                                        <input :value="endDate" type="text" id="validity_end" name="validity_end" class="form-control" disabled>
60
                                    </td>
61
                                </div>
62
                            </tr>
63
                            <tr>
64
                                <td colspan="2"><h5>Subject</h5></td>
65
                            </tr>
66
                            <tr>
150 67
                                <div class="form-group">
151 68
                                    <td><label for="subject_C">Country Code:</label></td>
152 69
                                    <td class="pl-3">
153
                                        <input :value="issuer.subject.C" type="text" id="subject_C" name="subject_C" class="form-control" disabled>
70
                                        <input :value="certificate.subject.C" type="text" id="subject_C" name="subject_C" class="form-control" disabled>
154 71
                                    </td>
155 72
                                </div>
156 73
                            </tr>
157
                            <tr v-if="displayIssuer" >
74
                            <tr>
158 75
                                <div class="form-group">
159 76
                                    <td><label for="subject_ST">Province/State:</label></td>
160 77
                                    <td class="pl-3">
161
                                        <input :value="issuer.subject.ST" type="text" id="subject_ST" name="subject_ST" class="form-control" disabled>
78
                                        <input :value="certificate.subject.ST" type="text" id="subject_ST" name="subject_ST" class="form-control" disabled>
162 79
                                    </td>
163 80
                                </div>
164 81
                            </tr>
165
                            <tr v-if="displayIssuer" >
82
                            <tr>
166 83
                                <div class="form-group">
167 84
                                    <td><label for="subject_L">Locality:</label></td>
168 85
                                    <td class="pl-3">
169
                                        <input :value="issuer.subject.L" type="text" id="subject_L" name="subject_L" class="form-control" disabled>
86
                                        <input :value="certificate.subject.L" type="text" id="subject_L" name="subject_L" class="form-control" disabled>
170 87
                                    </td>
171 88
                                </div>
172 89
                            </tr>
173
                            <tr v-if="displayIssuer" >
90
                            <tr>
174 91
                                <div class="form-group">
175 92
                                    <td><label for="subject_CN">Common Name:</label></td>
176 93
                                    <td class="pl-3">
177
                                        <input :value="issuer.subject.CN" type="text" id="subject_CN" name="subject_CN" class="form-control" disabled>
94
                                        <input :value="certificate.subject.CN" type="text" id="subject_CN" name="subject_CN" class="form-control" disabled>
178 95
                                    </td>
179 96
                                </div>
180 97
                            </tr>
181
                            <tr v-if="displayIssuer" >
98
                            <tr>
182 99
                                <div class="form-group">
183 100
                                    <td><label for="subject_O">Organization:</label></td>
184 101
                                    <td class="pl-3">
185
                                        <input :value="issuer.subject.O" type="text" id="subject_O" name="subject_O" class="form-control" disabled>
102
                                        <input :value="certificate.subject.O" type="text" id="subject_O" name="subject_O" class="form-control" disabled>
186 103
                                    </td>
187 104
                                </div>
188 105
                            </tr>
189
                            <tr v-if="displayIssuer" >
106
                            <tr>
190 107
                                <div class="form-group">
191 108
                                    <td><label for="subject_OU">Organization Unit:</label></td>
192 109
                                    <td class="pl-3">
193
                                        <input :value="issuer.subject.OU" type="text" id="subject_OU" name="subject_OU" class="form-control" disabled>
110
                                        <input :value="certificate.subject.OU" type="text" id="subject_OU" name="subject_OU" class="form-control" disabled>
194 111
                                    </td>
195 112
                                </div>
196 113
                            </tr>
197
                            <tr v-if="displayIssuer" >
114
                            <tr>
198 115
                                <div class="form-group">
199 116
                                    <td><label for="subject_emailAddress">Email Address:</label></td>
200 117
                                    <td class="pl-3">
201
                                        <input :value="issuer.subject.emailAddress" type="text" id="subject_emailAddress" name="subject_emailAddress" class="form-control" disabled>
118
                                        <input :value="certificate.subject.emailAddress" type="text" id="subject_emailAddress" name="subject_emailAddress" class="form-control" disabled>
202 119
                                    </td>
203 120
                                </div>
204 121
                            </tr>
205
                            <tr v-if="displayIssuer" >
122
                            <tr>
206 123
                                <td>Usage:</td>
207 124
                                <td class="form-check">
208
                                    <input class="form-check-input" v-model="issuer.usage.CA" type="checkbox" id="isCA" name="isCA" value="CA" disabled>
125
                                    <input class="form-check-input" v-model="certificate.usage.CA" type="checkbox" id="isCA" name="isCA" value="CA" disabled>
209 126
                                    <label class="form-check-label" for="isCA">CA</label><br>
210 127

  
211
                                    <input class="form-check-input" v-model="issuer.usage.digitalSignature" type="checkbox" id="isDigitalSignature" name="isDigitalSignature" value="DigitalSignature" disabled>
128
                                    <input class="form-check-input" v-model="certificate.usage.digitalSignature" type="checkbox" id="isDigitalSignature" name="isDigitalSignature" value="DigitalSignature" disabled>
212 129
                                    <label class="form-check-label" for="isDigitalSignature">Digital Signature</label><br>
213 130

  
214
                                    <input class="form-check-input" v-model="issuer.usage.authentication" type="checkbox" id="isAuthentication" name="isAuthentication" value="Authentication" disabled>
131
                                    <input class="form-check-input" v-model="certificate.usage.authentication" type="checkbox" id="isAuthentication" name="isAuthentication" value="Authentication" disabled>
215 132
                                    <label class="form-check-label" for="isAuthentication">Authentication</label><br>
216 133

  
217
                                    <input class="form-check-input" v-model="issuer.usage.SSL" type="checkbox" id="isSSL_TLS" name="isSSL_TLS" value="SSL_TLS" disabled>
134
                                    <input class="form-check-input" v-model="certificate.usage.SSL" type="checkbox" id="isSSL_TLS" name="isSSL_TLS" value="SSL_TLS" disabled>
218 135
                                    <label class="form-check-label" for="isSSL_TLS">SSL/TLS</label><br>
219 136
                                </td>
220 137
                            </tr>
221
                        </div>
222
                    </table>
223
                </div>
224
                <div class="col-xl-5">
225
                    <div class="row table-responsive">
226
                        <table class="table">
227
                            <thead class="thead-dark">
228
                                <tr>
229
                                    <th colspan="5" class="text-center">Manage certificate</th>
138
                            <tr>
139
                                <td colspan="2" v-if="certificate.CA != id">
140
                                    <button v-on:click="onShowIssuer()" class="btn btn-outline-secondary btn-block mt-5" type="button">
141
                                        <span v-if="!displayIssuer">Show issuer</span>
142
                                        <span v-if="displayIssuer">Hide issuer</span>
143
                                    </button>
144
                                </td>
145
                            </tr>
146
                            <div id="issuerCollapse">
147
                                <tr v-if="displayIssuer">
148
                                    <td colspan="2"><h5 class="mt-2"><a :href="issuerURL">Issuer</a></h5></td>
230 149
                                </tr>
231
                            </thead>
232
                            <tbody>
233
                                <tr class="d-flex">
234
                                    <td style="width: 30%" class="font-weight-bold">Certificate download:</td>
235
                                    <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>
150
                                <tr v-if="displayIssuer" >
151
                                    <div class="form-group">
152
                                        <td><label for="subject_C">Country Code:</label></td>
153
                                        <td class="pl-3">
154
                                            <input :value="issuer.subject.C" type="text" id="subject_C" name="subject_C" class="form-control" disabled>
155
                                        </td>
156
                                    </div>
238 157
                                </tr>
239
                                <tr class="d-flex">
240
                                    <td style="width: 30%" class="font-weight-bold">Key/Identity download:</td>
241
                                    <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
                                    <td><button data-toggle="modal" data-target="#identityModal" class="btn btn-success btn-sm certificate-control" href="">PKCS #12</button></td>
158
                                <tr v-if="displayIssuer" >
159
                                    <div class="form-group">
160
                                        <td><label for="subject_ST">Province/State:</label></td>
161
                                        <td class="pl-3">
162
                                            <input :value="issuer.subject.ST" type="text" id="subject_ST" name="subject_ST" class="form-control" disabled>
163
                                        </td>
164
                                    </div>
244 165
                                </tr>
245
                                <tr class="d-flex">
246
                                    <td style="width: 30%" class="font-weight-bold">Actions:</td>
247
                                    <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
                                    <td> </td>
166
                                <tr v-if="displayIssuer" >
167
                                    <div class="form-group">
168
                                        <td><label for="subject_L">Locality:</label></td>
169
                                        <td class="pl-3">
170
                                            <input :value="issuer.subject.L" type="text" id="subject_L" name="subject_L" class="form-control" disabled>
171
                                        </td>
172
                                    </div>
250 173
                                </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>
174
                                <tr v-if="displayIssuer" >
175
                                    <div class="form-group">
176
                                        <td><label for="subject_CN">Common Name:</label></td>
177
                                        <td class="pl-3">
178
                                            <input :value="issuer.subject.CN" type="text" id="subject_CN" name="subject_CN" class="form-control" disabled>
179
                                        </td>
180
                                    </div>
256 181
                                </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>
182
                                <tr v-if="displayIssuer" >
183
                                    <div class="form-group">
184
                                        <td><label for="subject_O">Organization:</label></td>
185
                                        <td class="pl-3">
186
                                            <input :value="issuer.subject.O" type="text" id="subject_O" name="subject_O" class="form-control" disabled>
187
                                        </td>
188
                                    </div>
265 189
                                </tr>
266
                                <tr>
267
                                    <th class="w-65" scope="col">Common Name</th>
268
                                    <th class="w-35" scope="col">Type</th>
190
                                <tr v-if="displayIssuer" >
191
                                    <div class="form-group">
192
                                        <td><label for="subject_OU">Organization Unit:</label></td>
193
                                        <td class="pl-3">
194
                                            <input :value="issuer.subject.OU" type="text" id="subject_OU" name="subject_OU" class="form-control" disabled>
195
                                        </td>
196
                                    </div>
269 197
                                </tr>
270
                            </thead>
271
                            <tbody>
272
                                <tr class="text-center font-italic">
273
                                    <td v-if="issuedCertificates.length == 0" colspan="2">No issued certificates</td>
198
                                <tr v-if="displayIssuer" >
199
                                    <div class="form-group">
200
                                        <td><label for="subject_emailAddress">Email Address:</label></td>
201
                                        <td class="pl-3">
202
                                            <input :value="issuer.subject.emailAddress" type="text" id="subject_emailAddress" name="subject_emailAddress" class="form-control" disabled>
203
                                        </td>
204
                                    </div>
274 205
                                </tr>
275
                                <tr is="issued-by-list-item"
276
                                    v-for="certificate in issuedCertificates"
277
                                    v-bind:certificate="certificate"
278
                                    v-bind:key="certificate.id">
206
                                <tr v-if="displayIssuer" >
207
                                    <td>Usage:</td>
208
                                    <td class="form-check">
209
                                        <input class="form-check-input" v-model="issuer.usage.CA" type="checkbox" id="isCA" name="isCA" value="CA" disabled>
210
                                        <label class="form-check-label" for="isCA">CA</label><br>
211

  
212
                                        <input class="form-check-input" v-model="issuer.usage.digitalSignature" type="checkbox" id="isDigitalSignature" name="isDigitalSignature" value="DigitalSignature" disabled>
213
                                        <label class="form-check-label" for="isDigitalSignature">Digital Signature</label><br>
214

  
215
                                        <input class="form-check-input" v-model="issuer.usage.authentication" type="checkbox" id="isAuthentication" name="isAuthentication" value="Authentication" disabled>
216
                                        <label class="form-check-label" for="isAuthentication">Authentication</label><br>
217

  
218
                                        <input class="form-check-input" v-model="issuer.usage.SSL" type="checkbox" id="isSSL_TLS" name="isSSL_TLS" value="SSL_TLS" disabled>
219
                                        <label class="form-check-label" for="isSSL_TLS">SSL/TLS</label><br>
220
                                    </td>
279 221
                                </tr>
280
                            </tbody>
222
                            </div>
281 223
                        </table>
282 224
                    </div>
225
                    <div class="col-xl-5">
226
                        <div class="row table-responsive">
227
                            <table class="table">
228
                                <thead class="thead-dark">
229
                                    <tr>
230
                                        <th colspan="5" class="text-center">Manage certificate</th>
231
                                    </tr>
232
                                </thead>
233
                                <tbody>
234
                                    <tr class="d-flex">
235
                                        <td style="width: 30%" class="font-weight-bold">Certificate download:</td>
236
                                        <td><button v-on:click="onCertificateDownload()" class="btn btn-primary btn-sm certificate-control" href="">Certificate</button></td>
237
                                        <td><button v-on:click="onChainDownload()" class="btn btn-primary btn-sm certificate-control" href="">Chain of trust</button></td>
238
                                        <td><button v-on:click="onRootDownload()" class="btn btn-primary btn-sm certificate-control" href="">Root</button></td>
239
                                    </tr>
240
                                    <tr class="d-flex">
241
                                        <td style="width: 30%" class="font-weight-bold">Key/Identity download:</td>
242
                                        <td><button v-on:click="onPublicKeyDownload()" class="btn btn-success btn-sm certificate-control" href="">Public key</button></td>
243
                                        <td><button v-on:click="onPrivateKeyDownload()" class="btn btn-success btn-sm certificate-control" href="">Private key</button></td>
244
                                        <td><button data-toggle="modal" data-target="#identityModal" class="btn btn-success btn-sm certificate-control" href="">PKCS #12</button></td>
245
                                    </tr>
246
                                    <tr class="d-flex">
247
                                        <td style="width: 30%" class="font-weight-bold">Actions:</td>
248
                                        <td><button data-toggle="modal" data-target="#deleteModal" class="btn btn-danger btn-sm certificate-control" href="">Delete</button></td>
249
                                        <td><button data-toggle="modal" data-target="#revokeModal" class="btn btn-warning btn-sm certificate-control" href="">Revoke</button></td>
250
                                        <td> </td>
251
                                    </tr>
252
                                    <tr class="d-flex">
253
                                        <td style="width: 30%" class="font-weight-bold">Endpoints:</td>
254
                                        <td><a class="certificate-control font-weight-bold" :href="crlEndpoint">CRL</a></td>
255
                                        <td><a class="certificate-control font-weight-bold" :href="ocspEndpoint">OCSP</a></td>
256
                                        <td> </td>
257
                                    </tr>
258
                                </tbody>
259
                            </table>
260
                        </div>
261
                        <div class="row table-responsive">
262
                            <table class="table table-striped table-hover">
263
                                <thead class="thead-dark text-center">
264
                                    <tr>
265
                                        <th scope="col" colspan="2">Issued Certificates</th>
266
                                    </tr>
267
                                    <tr>
268
                                        <th class="w-65" scope="col">Common Name</th>
269
                                        <th class="w-35" scope="col">Type</th>
270
                                    </tr>
271
                                </thead>
272
                                <tbody>
273
                                    <tr class="text-center font-italic">
274
                                        <td v-if="issuedCertificates.length == 0" colspan="2">No issued certificates</td>
275
                                    </tr>
276
                                    <tr is="issued-by-list-item"
277
                                        v-for="certificate in issuedCertificates"
278
                                        v-bind:certificate="certificate"
279
                                        v-bind:key="certificate.id">
280
                                    </tr>
281
                                </tbody>
282
                            </table>
283
                        </div>
284
                    </div>
283 285
                </div>
284 286
            </div>
285 287
        </div>
static/create_certificate.html
7 7
    <link rel="stylesheet" href="/static/css/bootstrap.min.css">
8 8
</head>
9 9
<body class="p-4">
10
    <div id="create-certificate-content" class="container">
11
        <h1 class="text-center">Create Certificate</h1>
10
    <div id="create-certificate-content" class="container-lg">
11
        <div class="row">
12
            <div class="col-lg-2"></div>
13
            <div class="col-lg card">
14
                <div class="card-body">
15
                    <h1 class="text-center">Create Certificate</h1>
12 16

  
13
        <div v-if="errorMessage !== ''" class="alert alert-danger" v-cloak role="alert">
14
            {{ errorMessage }}
15
        </div>
17
                    <div v-if="errorMessage !== ''" class="alert alert-danger" v-cloak role="alert">
18
                        {{ errorMessage }}
19
                    </div>
16 20

  
17
        <table class="ml-auto mr-auto">
18
            <tr>
19
                <div class="form-group">
20
                    <td><label for="CA">Certificate Authority:</label></td>
21
                    <td class="pl-3">
22
                        <select v-model="certificateData.CA" name="CA" id="CA" class="form-control" :disabled="isSelfSigned">
23
                            <option value=null disabled selected>-- Select issuer --</option>
24
                            <option is="ca-select-item"
25
                                    v-for="ca in authorities"
26
                                    v-bind:ca="ca"
27
                                    v-bind:key="ca.id"></option>
28
                        </select>
29
                    </td>
30
                    <td style="padding-left: 37px">
31
                        <input class="form-check-input" :disabled="authorities.length === 0" v-model="isSelfSigned" type="checkbox" id="isSelfSigned" name="isSelfSigned" value="self-signed">
32
                        <label class="form-check-label" for="isSelfSigned">Self-signed</label><br>
33
                    </td>
34
                </div>
35
            </tr>
36
            <tr>
37
                <div class="form-group">
38
                    <td><label for="validity_start">Validity start:</label></td>
39
                    <td class="pl-3"><input v-bind:value="notBefore" type="date" id="validity_start" name="validity_start" class="form-control" disabled></td>
40
                </div>
41
            </tr>
42
            <tr>
43
                <div class="form-group">
44
                    <td><label for="validity_end">Validity end:</label></td>
45
                    <td class="pl-3"><input v-bind:value="notAfter" type="date" id="validity_end" name="validity_end" class="form-control" disabled></td>
46
                    <td class="pl-3">
47
                        <span>
48
                            <input v-model="certificateData.validityDays" type="number" min="1" id="validity_days" name="validity_days" class="form-control custom-control-inline" style="width: 70px; margin-right: 0">
49
                            <label for="validity_days">days</label>
50
                        </span>
51
                    </td>
52
                </div>
53
            </tr>
54
            <tr>
55
                <td colspan="2"><h5>Issuer</h5></td>
56
            </tr>
57
            <tr>
58
                <div class="form-group">
59
                    <td><label for="issuer_CN">Common Name:</label></td>
60
                    <td class="pl-3">
61
                        <input type="text" id="issuer_CN" name="issuer_CN" class="form-control" v-bind:value="selectedCAData.CN" disabled>
62
                    </td>
63
                </div>
64
            </tr>
65
            <tr>
66
                <div class="form-group">
67
                    <td><label for="issuer_C">Country Code:</label></td>
68
                    <td class="pl-3">
69
                        <input type="text" id="issuer_C" name="issuer_C" class="form-control" v-bind:value="selectedCAData.C" disabled>
70
                    </td>
71
                </div>
72
            </tr>
73
            <tr>
74
                <div class="form-group">
75
                    <td><label for="issuer_L">Locality:</label></td>
76
                    <td class="pl-3">
77
                        <input type="text" id="issuer_L" name="issuer_L" class="form-control" v-bind:value="selectedCAData.L" disabled>
78
                    </td>
79
                </div>
80
            </tr>
81
            <tr>
82
                <div class="form-group">
83
                    <td><label for="issuer_ST">Province/State:</label></td>
84
                    <td class="pl-3">
85
                        <input type="text" id="issuer_ST" name="issuer_ST" class="form-control" v-bind:value="selectedCAData.ST" disabled>
86
                    </td>
87
                </div>
88
            </tr>
89
            <tr>
90
                <div class="form-group">
91
                    <td><label for="issuer_O">Organization:</label></td>
92
                    <td class="pl-3">
93
                        <input type="text" id="issuer_O" name="issuer_O" class="form-control" v-bind:value="selectedCAData.O" disabled>
94
                    </td>
95
                </div>
96
            </tr>
97
            <tr>
98
                <div class="form-group">
99
                    <td><label for="issuer_OU">Organization Unit:</label></td>
100
                    <td class="pl-3">
101
                        <input type="text" id="issuer_OU" name="issuer_OU" class="form-control" v-bind:value="selectedCAData.OU" disabled>
102
                    </td>
103
                </div>
104
            </tr>
105
            <tr>
106
                <div class="form-group">
107
                    <td><label for="issuer_emailAddress">Email:</label></td>
108
                    <td class="pl-3">
109
                        <input type="email" id="issuer_emailAddress" name="issuer_emailAddress" class="form-control" v-bind:value="selectedCAData.emailAddress" disabled>
110
                    </td>
111
                </div>
112
            </tr>
113
            <tr>
114
                <td colspan="2"><h5>Subject</h5></td>
115
            </tr>
116
            <tr>
117
                <div class="form-group">
118
                    <td><label for="subject_CN">Common Name:</label></td>
119
                    <td class="pl-3">
120
                        <input type="text" v-bind:class="{ 'is-invalid': invalidCN }" v-model:value="certificateData.subject.CN" id="subject_CN" name="subject_CN" class="form-control">
121
                    </td>
122
                </div>
123
            </tr>
124
            <tr>
125
                <div class="form-group">
126
                    <td><label for="subject_C">Country Code:</label></td>
127
                    <td class="pl-3">
128
                        <input type="text"  v-model:value="certificateData.subject.C" id="subject_C" name="subject_C" class="form-control">
129
                    </td>
130
                </div>
131
            </tr>
132
            <tr>
133
                <div class="form-group">
134
                    <td><label for="subject_L">Locality:</label></td>
135
                    <td class="pl-3">
136
                        <input type="text" v-model:value="certificateData.subject.L" id="subject_L" name="subject_L" class="form-control">
137
                    </td>
138
                </div>
139
            </tr>
140
            <tr>
141
                <div class="form-group">
142
                    <td><label for="subject_ST">Province/State:</label></td>
143
                    <td class="pl-3">
144
                        <input type="text" v-model:value="certificateData.subject.ST" id="subject_ST" name="subject_ST" class="form-control">
145
                    </td>
146
                </div>
147
            </tr>
148
            <tr>
149
                <div class="form-group">
150
                    <td><label for="subject_O">Organization:</label></td>
151
                    <td class="pl-3">
152
                        <input type="text" v-model:value="certificateData.subject.O" id="subject_O" name="subject_O" class="form-control">
153
                    </td>
154
                </div>
155
            </tr>
156
            <tr>
157
                <div class="form-group">
158
                    <td><label for="subject_OU">Organization Unit:</label></td>
159
                    <td class="pl-3">
160
                        <input type="text" v-model:value="certificateData.subject.OU" id="subject_OU" name="subject_OU" class="form-control">
161
                    </td>
162
                </div>
163
            </tr>
164
            <tr>
165
                <div class="form-group">
166
                    <td><label for="subject_emailAddress">Email:</label></td>
167
                    <td class="pl-3">
168
                        <input type="email" v-model:value="certificateData.subject.emailAddress" id="subject_emailAddress" name="subject_emailAddress" class="form-control">
169
                    </td>
170
                </div>
171
            </tr>
172
            <tr>
173
                <td>Usage:</td>
174
                <td class="form-check">
175
                    <input class="form-check-input" :disabled="isSelfSigned" v-model="certificateData.usage.CA" type="checkbox" id="isCA" name="isCA" value="CA">
176
                    <label class="form-check-label" for="isCA">CA</label><br>
21
                    <table class="ml-auto mr-auto">
22
                        <tr>
23
                            <div class="form-group">
24
                                <td><label for="CA">Certificate Authority:</label></td>
25
                                <td class="pl-3">
26
                                    <select v-model="certificateData.CA" name="CA" id="CA" class="form-control" :disabled="isSelfSigned">
27
                                        <option value=null disabled selected>-- Select issuer --</option>
28
                                        <option is="ca-select-item"
29
                                                v-for="ca in authorities"
30
                                                v-bind:ca="ca"
31
                                                v-bind:key="ca.id"></option>
32
                                    </select>
33
                                </td>
34
                                <td style="padding-left: 37px">
35
                                    <input class="form-check-input" :disabled="authorities.length === 0" v-model="isSelfSigned" type="checkbox" id="isSelfSigned" name="isSelfSigned" value="self-signed">
36
                                    <label class="form-check-label" for="isSelfSigned">Self-signed</label><br>
37
                                </td>
38
                            </div>
39
                        </tr>
40
                        <tr>
41
                            <div class="form-group">
42
                                <td><label for="validity_start">Validity start:</label></td>
43
                                <td class="pl-3"><input v-bind:value="notBefore" type="date" id="validity_start" name="validity_start" class="form-control" disabled></td>
44
                            </div>
45
                        </tr>
46
                        <tr>
47
                            <div class="form-group">
48
                                <td><label for="validity_end">Validity end:</label></td>
49
                                <td class="pl-3"><input v-bind:value="notAfter" type="date" id="validity_end" name="validity_end" class="form-control" disabled></td>
50
                                <td class="pl-3">
51
                                    <span>
52
                                        <input v-model="certificateData.validityDays" type="number" min="1" id="validity_days" name="validity_days" class="form-control custom-control-inline" style="width: 70px; margin-right: 0">
53
                                        <label for="validity_days">days</label>
54
                                    </span>
55
                                </td>
56
                            </div>
57
                        </tr>
58
                        <tr>
59
                            <td colspan="2"><h5>Issuer</h5></td>
60
                        </tr>
61
                        <tr>
62
                            <div class="form-group">
63
                                <td><label for="issuer_CN">Common Name:</label></td>
64
                                <td class="pl-3">
65
                                    <input type="text" id="issuer_CN" name="issuer_CN" class="form-control" v-bind:value="selectedCAData.CN" disabled>
66
                                </td>
67
                            </div>
68
                        </tr>
69
                        <tr>
70
                            <div class="form-group">
71
                                <td><label for="issuer_C">Country Code:</label></td>
72
                                <td class="pl-3">
73
                                    <input type="text" id="issuer_C" name="issuer_C" class="form-control" v-bind:value="selectedCAData.C" disabled>
74
                                </td>
75
                            </div>
76
                        </tr>
77
                        <tr>
78
                            <div class="form-group">
79
                                <td><label for="issuer_L">Locality:</label></td>
80
                                <td class="pl-3">
81
                                    <input type="text" id="issuer_L" name="issuer_L" class="form-control" v-bind:value="selectedCAData.L" disabled>
82
                                </td>
83
                            </div>
84
                        </tr>
85
                        <tr>
86
                            <div class="form-group">
87
                                <td><label for="issuer_ST">Province/State:</label></td>
88
                                <td class="pl-3">
89
                                    <input type="text" id="issuer_ST" name="issuer_ST" class="form-control" v-bind:value="selectedCAData.ST" disabled>
90
                                </td>
91
                            </div>
92
                        </tr>
93
                        <tr>
94
                            <div class="form-group">
95
                                <td><label for="issuer_O">Organization:</label></td>
96
                                <td class="pl-3">
97
                                    <input type="text" id="issuer_O" name="issuer_O" class="form-control" v-bind:value="selectedCAData.O" disabled>
98
                                </td>
99
                            </div>
100
                        </tr>
101
                        <tr>
102
                            <div class="form-group">
103
                                <td><label for="issuer_OU">Organization Unit:</label></td>
104
                                <td class="pl-3">
105
                                    <input type="text" id="issuer_OU" name="issuer_OU" class="form-control" v-bind:value="selectedCAData.OU" disabled>
106
                                </td>
107
                            </div>
108
                        </tr>
109
                        <tr>
110
                            <div class="form-group">
111
                                <td><label for="issuer_emailAddress">Email:</label></td>
112
                                <td class="pl-3">
113
                                    <input type="email" id="issuer_emailAddress" name="issuer_emailAddress" class="form-control" v-bind:value="selectedCAData.emailAddress" disabled>
114
                                </td>
115
                            </div>
116
                        </tr>
117
                        <tr>
118
                            <td colspan="2"><h5>Subject</h5></td>
119
                        </tr>
120
                        <tr>
121
                            <div class="form-group">
122
                                <td><label for="subject_CN">Common Name:</label></td>
123
                                <td class="pl-3">
124
                                    <input type="text" v-bind:class="{ 'is-invalid': invalidCN }" v-model:value="certificateData.subject.CN" id="subject_CN" name="subject_CN" class="form-control">
125
                                </td>
126
                            </div>
127
                        </tr>
128
                        <tr>
129
                            <div class="form-group">
130
                                <td><label for="subject_C">Country Code:</label></td>
131
                                <td class="pl-3">
132
                                    <input type="text"  v-model:value="certificateData.subject.C" id="subject_C" name="subject_C" class="form-control">
133
                                </td>
134
                            </div>
135
                        </tr>
136
                        <tr>
137
                            <div class="form-group">
138
                                <td><label for="subject_L">Locality:</label></td>
139
                                <td class="pl-3">
140
                                    <input type="text" v-model:value="certificateData.subject.L" id="subject_L" name="subject_L" class="form-control">
141
                                </td>
142
                            </div>
143
                        </tr>
144
                        <tr>
145
                            <div class="form-group">
146
                                <td><label for="subject_ST">Province/State:</label></td>
147
                                <td class="pl-3">
148
                                    <input type="text" v-model:value="certificateData.subject.ST" id="subject_ST" name="subject_ST" class="form-control">
149
                                </td>
150
                            </div>
151
                        </tr>
152
                        <tr>
153
                            <div class="form-group">
154
                                <td><label for="subject_O">Organization:</label></td>
155
                                <td class="pl-3">
156
                                    <input type="text" v-model:value="certificateData.subject.O" id="subject_O" name="subject_O" class="form-control">
157
                                </td>
158
                            </div>
159
                        </tr>
160
                        <tr>
161
                            <div class="form-group">
162
                                <td><label for="subject_OU">Organization Unit:</label></td>
163
                                <td class="pl-3">
164
                                    <input type="text" v-model:value="certificateData.subject.OU" id="subject_OU" name="subject_OU" class="form-control">
165
                                </td>
166
                            </div>
167
                        </tr>
168
                        <tr>
169
                            <div class="form-group">
170
                                <td><label for="subject_emailAddress">Email:</label></td>
171
                                <td class="pl-3">
172
                                    <input type="email" v-model:value="certificateData.subject.emailAddress" id="subject_emailAddress" name="subject_emailAddress" class="form-control">
173
                                </td>
174
                            </div>
175
                        </tr>
176
                        <tr>
177
                            <td>Usage:</td>
178
                            <td class="form-check">
179
                                <input class="form-check-input" :disabled="isSelfSigned" v-model="certificateData.usage.CA" type="checkbox" id="isCA" name="isCA" value="CA">
180
                                <label class="form-check-label" for="isCA">CA</label><br>
177 181

  
178
                    <input class="form-check-input" v-model="certificateData.usage.digitalSignature" type="checkbox" id="isDigitalSignature" name="isDigitalSignature" value="DigitalSignature">
179
                    <label class="form-check-label" for="isDigitalSignature">Digital Signature</label><br>
182
                                <input class="form-check-input" v-model="certificateData.usage.digitalSignature" type="checkbox" id="isDigitalSignature" name="isDigitalSignature" value="DigitalSignature">
183
                                <label class="form-check-label" for="isDigitalSignature">Digital Signature</label><br>
180 184

  
181
                    <input class="form-check-input" v-model="certificateData.usage.authentication" type="checkbox" id="isAuthentication" name="isAuthentication" value="Authentication">
182
                    <label class="form-check-label" for="isAuthentication">Authentication</label><br>
185
                                <input class="form-check-input" v-model="certificateData.usage.authentication" type="checkbox" id="isAuthentication" name="isAuthentication" value="Authentication">
186
                                <label class="form-check-label" for="isAuthentication">Authentication</label><br>
183 187

  
184
                    <input class="form-check-input" v-model="certificateData.usage.SSL" type="checkbox" id="isSSL_TLS" name="isSSL_TLS" value="SSL_TLS">
185
                    <label class="form-check-label" for="isSSL_TLS">SSL/TLS</label><br>
186
                </td>
187
            </tr>
188
            <tr>
189
                <div class="form-group form-check">
190
                    <td><label class="form-check-label" for="specifyPasswordCheckbox" style="margin-top: 15px">Custom key:</label></td>
191
                    <td class="pl-3">
192
                        <input type="checkbox" v-model="customKey" id="specifyPasswordCheckbox" name="specifyPassword" class="mb-2 form-check-input form-check">
193
                    </td>
188
                                <input class="form-check-input" v-model="certificateData.usage.SSL" type="checkbox" id="isSSL_TLS" name="isSSL_TLS" value="SSL_TLS">
189
                                <label class="form-check-label" for="isSSL_TLS">SSL/TLS</label><br>
190
                            </td>
191
                        </tr>
192
                        <tr>
193
                            <div class="form-group form-check">
194
                                <td><label class="form-check-label" for="specifyPasswordCheckbox" style="margin-top: 15px">Custom key:</label></td>
195
                                <td class="pl-3">
196
                                    <input type="checkbox" v-model="customKey" id="specifyPasswordCheckbox" name="specifyPassword" class="mb-2 form-check-input form-check">
197
                                </td>
198
                            </div>
199
                        </tr>
200
                        <tr v-if="customKey" v-cloak>
201
                            <div class="form-group">
202
                                <td class="pl-5"><label for="key_password">Password:</label></td>
203
                                <td class="pl-3">
204
                                    <input type="password" v-model:value="key.password" id="key_password" name="key_password" class="form-control">
205
                                </td>
206
                            </div>
207
                        </tr>
208
                        <tr v-if="customKey" v-cloak>
209
                            <div class="form-group">
210
                                <td class="pl-5"><label for="key_pem">Private key:</label></td>
211
                                <td class="pl-3">
212
                                    <input type="file" v-on:change="onKeyFileChange" id="key_pem" name="key_pem" class="form-control-file">
213
                                </td>
214
                            </div>
215
                        </tr>
216
                        <tr>
217
                            <div class="form-group form-check">
218
                                <td><label class="form-check-label" for="specifyExtensionsCheckbox" style="margin-top: 15px">Custom extensions:</label></td>
219
                                <td class="pl-3">
220
                                    <input type="checkbox" v-model="customExtensions" id="specifyExtensionsCheckbox" name="specifyExtensions" class="mb-2 form-check-input form-check">
221
                                </td>
222
                            </div>
223
                        </tr>
224
                        <tr v-if="customExtensions" v-cloak>
225
                            <div class="form-group">
226
                                <td class="pl-5"><label for="extensions">Extensions:</label></td>
227
                                <td cla ss="pl-3">
228
                                    <textarea v-model:value="extensions" id="extensions" name="extensions" class="form-control mt-2">
229
                                    </textarea>
230
                                </td>
231
                            </div>
232
                        </tr>
233
                    </table>
234
                    <div class="container">
235
                        <div class="">
236
                            <div class="col">
237
                                <button class="btn btn-success mt-3 w-100" v-on:click="onCreateCertificate">Create certificate</button>
238
                            </div>
239
                            <div class="col">
240
                                <button class="btn btn-secondary mt-3 w-100" onclick="window.location.href = '/static/index.html'">Cancel</button>
241
                            </div>
242
                        </div>
243
                    </div>
194 244
                </div>
195
            </tr>
196
            <tr v-if="customKey" v-cloak>
197
                <div class="form-group">
198
                    <td class="pl-5"><label for="key_password">Password:</label></td>
199
                    <td class="pl-3">
200
                        <input type="password" v-model:value="key.password" id="key_password" name="key_password" class="form-control">
201
                    </td>
202
                </div>
203
            </tr>
204
            <tr v-if="customKey" v-cloak>
205
                <div class="form-group">
206
                    <td class="pl-5"><label for="key_pem">Private key:</label></td>
207
                    <td class="pl-3">
208
                        <input type="file" v-on:change="onKeyFileChange" id="key_pem" name="key_pem" class="form-control-file">
209
                    </td>
210
                </div>
211
            </tr>
212
            <tr>
213
                <div class="form-group form-check">
214
                    <td><label class="form-check-label" for="specifyExtensionsCheckbox" style="margin-top: 15px">Custom extensions:</label></td>
215
                    <td class="pl-3">
216
                        <input type="checkbox" v-model="customExtensions" id="specifyExtensionsCheckbox" name="specifyExtensions" class="mb-2 form-check-input form-check">
217
                    </td>
218
                </div>
219
            </tr>
220
            <tr v-if="customExtensions" v-cloak>
221
                <div class="form-group">
222
                    <td class="pl-5"><label for="extensions">Extensions:</label></td>
223
                    <td cla ss="pl-3">
224
                        <textarea v-model:value="extensions" id="extensions" name="extensions" class="form-control mt-2">
225
                        </textarea>
226
                    </td>
227
                </div>
228
            </tr>
229
            <tr>
230
                <td align="center">
231
                    <button class="btn btn-success mt-3 w-auto" v-on:click="onCreateCertificate">Create certificate</button>
232
                </td>
233
                <td align="center">
234
                    <button class="btn btn-secondary mt-3 w-75" onclick="window.location.href = '/static/index.html'">Cancel</button>
235
                </td>
236
            </tr>
237
        </table>
245
            </div>
246
            <div class="col-lg-2"></div>
247
        </div>
238 248
    </div>
239 249

  
240 250
    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
static/css/app.css
1
html, body {
2
    min-height: 100%;
3
}
4

  
5
body {
6
background-repeat: no-repeat;
7
background-attachment: fixed;
8
background: #085078;  /* fallback for old browsers */
9
background: -webkit-linear-gradient(to bottom, #85D8CE, #085078);  /* Chrome 10-25, Safari 5.1-6 */
10
background: linear-gradient(to bottom, #85D8CE, #085078); /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */
11
}
12

  
13
.filtering-box {
14
    background-color: ghostwhite;
15
}
16

  
1 17
[v-cloak] {
2 18
  display: none;
3 19
}
static/index.html
3 3
<head>
4 4
    <meta charset="UTF-8">
5 5
    <title>X.509 Certificate Management</title>
6
    <link rel="stylesheet" href="/static/css/app.css">
7 6
    <link rel="stylesheet" href="/static/css/bootstrap.min.css">
8 7
    <link href="https://cdn.jsdelivr.net/npm/vue-loading-overlay@3/dist/vue-loading.css" rel="stylesheet">
8
    <link rel="stylesheet" href="/static/css/app.css">
9 9
</head>
10 10
<body>
11
    <div id="certificateListingPage" class="p-4">
11
    <div id="certificateListingPage" class="p-5 h-100">
12 12
        <div v-if="loading">
13 13
            <loading :active.sync="loading"
14 14
                     :can-cancel="false"
15 15
                      loader="dots"
16 16
                     :is-full-page="true"></loading>
17 17
        </div>
18
        <div v-if="!loading" v-cloak>
19
            <div>
20
                <h1 class="d-inline-block">Certificate Listing</h1>
21
            </div>
22
            <div class="alert alert-success" v-if="successMessage !== ''" role="alert" v-cloak>
23
                {{ successMessage }}
24
            </div>
25
            <div class="mt-2 mb-2">
26
                <a class="btn btn-success mb-3 text-center" href="/static/create_certificate.html"><b>+</b></a>
27
                <button v-on:click="toggleFilters" v-if="!displayFilters" class="btn btn-outline-primary ml-4 mb-3" data-toggle="collapse" data-target="#filteringCollapse">Show filtering</button>
28
                <button v-on:click="toggleFilters" v-if="displayFilters" class="btn btn-outline-primary ml-4 mb-3" data-toggle="collapse" data-target="#filteringCollapse">Hide filtering</button>
29
                <div class="collapse mt-2" id="filteringCollapse">
30
                    <div class="card card-body">
31
                        <div class="container">
32
                            <div class="row align-items-center">
33
                                <div class="col-3">
34
                                    <div class="form-group mb-0">
35
                                        <h5>Usage:</h5>
36
                                        <div class="form-check ml-4">
37
                                            <input class="form-check-input" type="checkbox" id="usageCA" v-model="filtering.usage.CA">
38
                                            <label class="form-check-label" for="usageCA">
39
                                                CA
40
                                            </label>
41
                                        </div>
42
                                        <div class="form-check ml-4">
43
                                            <input class="form-check-input" type="checkbox" id="usageSignature" v-model="filtering.usage.digitalSignature">
44
                                            <label class="form-check-label" for="usageSignature">
45
                                                Digital signature
46
                                            </label>
47
                                        </div>
48
                                        <div class="form-check ml-4">
49
                                            <input class="form-check-input" type="checkbox" id="usageAuth" v-model="filtering.usage.authentication">
50
                                            <label class="form-check-label" for="usageAuth">
51
                                                Authentication
52
                                            </label>
53
                                        </div>
54
                                        <div class="form-check ml-4">
55
                                            <input class="form-check-input" type="checkbox" id="usageSSL" v-model="filtering.usage.SSL">
56
                                            <label class="form-check-label" for="usageSSL">
57
                                                SSL/TLS
58
                                            </label>
18
        <div v-if="!loading" v-cloak class="card h-100">
19
            <div class="card-body">
20
                <div>
21
                    <h1 class="d-inline-block">Certificate Listing</h1>
22
                </div>
23
                <div class="alert alert-success" v-if="successMessage !== ''" role="alert" v-cloak>
24
                    {{ successMessage }}
25
                </div>
26
                <div class="mt-2 mb-2">
27
                    <a class="btn btn-success mb-3 text-center" href="/static/create_certificate.html"><b>+</b></a>
28
                    <button v-on:click="toggleFilters" v-if="!displayFilters" class="btn btn-outline-primary ml-4 mb-3" data-toggle="collapse" data-target="#filteringCollapse">Show filtering</button>
29
                    <button v-on:click="toggleFilters" v-if="displayFilters" class="btn btn-outline-primary ml-4 mb-3" data-toggle="collapse" data-target="#filteringCollapse">Hide filtering</button>
30
                    <div class="collapse mt-2" id="filteringCollapse">
31
                        <div class="card card-body filtering-box">
32
                            <div class="container">
33
                                <div class="row align-items-center">
34
                                    <div class="col-3">
35
                                        <div class="form-group mb-0">
36
                                            <h5>Usage:</h5>
37
                                            <div class="form-check ml-4">
38
                                                <input class="form-check-input" type="checkbox" id="usageCA" v-model="filtering.usage.CA">
39
                                                <label class="form-check-label" for="usageCA">
40
                                                    CA
41
                                                </label>
42
                                            </div>
43
                                            <div class="form-check ml-4">
44
                                                <input class="form-check-input" type="checkbox" id="usageSignature" v-model="filtering.usage.digitalSignature">
45
                                                <label class="form-check-label" for="usageSignature">
46
                                                    Digital signature
47
                                                </label>
48
                                            </div>
49
                                            <div class="form-check ml-4">
50
                                                <input class="form-check-input" type="checkbox" id="usageAuth" v-model="filtering.usage.authentication">
51
                                                <label class="form-check-label" for="usageAuth">
52
                                                    Authentication
53
                                                </label>
54
                                            </div>
55
                                            <div class="form-check ml-4">
56
                                                <input class="form-check-input" type="checkbox" id="usageSSL" v-model="filtering.usage.SSL">
57
                                                <label class="form-check-label" for="usageSSL">
58
                                                    SSL/TLS
59
                                                </label>
60
                                            </div>
59 61
                                        </div>
60 62
                                    </div>
61
                                </div>
62
                                <div class="col-3">
63
                                    <div class="form-group mb-0">
64
                                        <h5>Type:</h5>
65
                                        <div class="form-check ml-4">
66
                                            <input class="form-check-input" type="checkbox" id="rootCA" v-model="filtering.type.RootCA">
67
                                            <label class="form-check-label" for="rootCA">
68
                                                Root CA
69
                                            </label>
70
                                        </div>
71
                                        <div class="form-check ml-4">
72
                                            <input class="form-check-input" type="checkbox" id="intermediateCA" v-model="filtering.type.IntermediateCA">
73
                                            <label class="form-check-label" for="intermediateCA">
74
                                                Intermediate CA
75
                                            </label>
76
                                        </div>
77
                                        <div class="form-check ml-4">
78
                                            <input class="form-check-input" type="checkbox" id="endCertificate" v-model="filtering.type.EndCertificate">
79
                                            <label class="form-check-label" for="endCertificate">
80
                                                End certificate
81
                                            </label>
63
                                    <div class="col-3">
64
                                        <div class="form-group mb-0">
65
                                            <h5>Type:</h5>
66
                                            <div class="form-check ml-4">
67
                                                <input class="form-check-input" type="checkbox" id="rootCA" v-model="filtering.type.RootCA">
68
                                                <label class="form-check-label" for="rootCA">
69
                                                    Root CA
70
                                                </label>
71
                                            </div>
72
                                            <div class="form-check ml-4">
73
                                                <input class="form-check-input" type="checkbox" id="intermediateCA" v-model="filtering.type.IntermediateCA">
74
                                                <label class="form-check-label" for="intermediateCA">
75
                                                    Intermediate CA
76
                                                </label>
77
                                            </div>
78
                                            <div class="form-check ml-4">
79
                                                <input class="form-check-input" type="checkbox" id="endCertificate" v-model="filtering.type.EndCertificate">
80
                                                <label class="form-check-label" for="endCertificate">
81
                                                    End certificate
82
                                                </label>
83
                                            </div>
82 84
                                        </div>
83 85
                                    </div>
84
                                </div>
85
                                <div class="col-3">
86
                                    <div class="form-group mb-0">
87
                                        <h5>Common name:</h5>
88
                                        <div>
89
                                            <input class="form-control" type="text" id="commonName" placeholder="Enter common name"  v-model="filtering.CN">
86
                                    <div class="col-3">
87
                                        <div class="form-group mb-0">
88
                                            <h5>Common name:</h5>
89
                                            <div>
90
                                                <input class="form-control" type="text" id="commonName" placeholder="Enter common name"  v-model="filtering.CN">
91
                                            </div>
90 92
                                        </div>
91 93
                                    </div>
92
                                </div>
93
                                <div class="col-3">
94
                                    <button class="btn btn-primary mb-2" style="width: 115px;" v-on:click="reloadData">Apply filters</button>
95
                                    <button class="btn btn-secondary mb-2" style="width: 115px;" v-on:click="clearFilters">Clear filters</button>
94
                                    <div class="col-3">
95
                                        <button class="btn btn-primary mb-2" style="width: 115px;" v-on:click="reloadData">Apply filters</button>
96
                                        <button class="btn btn-secondary mb-2" style="width: 115px;" v-on:click="clearFilters">Clear filters</button>
97
                                    </div>
96 98
                                </div>
97 99
                            </div>
98 100
                        </div>
99 101
                    </div>
100 102
                </div>
101
            </div>
102
            <table class="table table-striped table-hover text-center">
103
                <thead class="thead-dark">
104
                    <tr>
105
                        <th class="align-middle" scope="col" rowspan="2">Common name</th>
106
                        <th class="align-middle" scope="col" colspan="2">Validity</th>
107
                        <th class="align-middle" scope="col" rowspan="2">Usage</th>
108
                        <th class="align-middle" scope="col" rowspan="2">Certificate</th>
109
                        <th class="align-middle" scope="col" rowspan="2">Chain of trust</th>
110
                        <th class="align-middle" scope="col" rowspan="2">Root</th>
111
                        <th class="align-middle" scope="col" rowspan="2">Private key</th>
112
                        <th class="align-middle" scope="col" rowspan="2">Issuer</th>
113
                    </tr>
114
                    <tr>
115
                        <th scope="col">Start</th>
116
                        <th scope="col">End</th>
117
                    </tr>
118
                </thead>
119
                <tbody>
120
                    <tr is="certificate-item"
121
                        v-for="certificate in certificates"
122
                        v-bind:certificate="certificate"
123
                        v-bind:key="certificate.id">
124
                    </tr>
125
                </tbody>
126
            </table>
127
            <div v-if="hasNextPage || hasPreviousPage">
128
              <ul class="pagination justify-content-center">
129
                    <li class="page-item" v-bind:class="{disabled: !hasPreviousPage}">
130
                        <button v-on:click="onPreviousPage" class="page-link"><<</button>
131
                    </li>
132
                    <li class="page-item"><button class="page-link">{{ currentPage }}</button></li>
133
                    <li class="page-item" v-bind:class="{disabled: !hasNextPage}">
134
                        <button v-on:click="onNextPage" class="page-link">>></button>
135
                    </li>
136
              </ul>
103
                <table class="table table-striped table-hover text-center">
104
                    <thead class="thead-dark">
105
                        <tr>
106
                            <th class="align-middle" scope="col" rowspan="2">Common name</th>
107
                            <th class="align-middle" scope="col" colspan="2">Validity</th>
108
                            <th class="align-middle" scope="col" rowspan="2">Usage</th>
109
                            <th class="align-middle" scope="col" rowspan="2">Certificate</th>
110
                            <th class="align-middle" scope="col" rowspan="2">Chain of trust</th>
111
                            <th class="align-middle" scope="col" rowspan="2">Root</th>
112
                            <th class="align-middle" scope="col" rowspan="2">Private key</th>
113
                            <th class="align-middle" scope="col" rowspan="2">Issuer</th>
114
                        </tr>
115
                        <tr>
116
                            <th scope="col">Start</th>
117
                            <th scope="col">End</th>
118
                        </tr>
119
                    </thead>
120
                    <tbody>
121
                        <tr is="certificate-item"
122
                            v-for="certificate in certificates"
123
                            v-bind:certificate="certificate"
124
                            v-bind:key="certificate.id">
125
                        </tr>
126
                    </tbody>
127
                </table>
128
                <div v-if="hasNextPage || hasPreviousPage">
129
                  <ul class="pagination justify-content-center">
130
                        <li class="page-item" v-bind:class="{disabled: !hasPreviousPage}">
131
                            <button v-on:click="onPreviousPage" class="page-link"><<</button>
132
                        </li>
133
                        <li class="page-item"><button class="page-link">{{ currentPage }}</button></li>
134
                        <li class="page-item" v-bind:class="{disabled: !hasNextPage}">
135
                            <button v-on:click="onNextPage" class="page-link">>></button>
136
                        </li>
137
                  </ul>
138
                </div>
137 139
            </div>
138 140
        </div>
139 141
    </div>

Také k dispozici: Unified diff