113 lines
6.7 KiB
HTML
113 lines
6.7 KiB
HTML
<!doctype html>
|
|
<html>
|
|
<head>
|
|
<title>MDS</title>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
|
|
<meta data-n-head="ssr" data-hid="charset" charset="utf-8">
|
|
<link type="text/css" rel="stylesheet" href="https://cdn.hatter.ink/doc/4283_626D28BCCFB7822C3786C70E3755CD91/bootstrap-4.4.1.min.css" charset="utf-8" />
|
|
<link type="text/css" rel="stylesheet" href="https://cdn.hatter.ink/doc/4284_13AC4C5AD6B18339982F3001E0D638DB/bootstrap-vue.min.css" charset="utf-8" />
|
|
<style>
|
|
_body { padding: 1rem; }
|
|
[v-cloak] { display: none; }
|
|
</style>
|
|
<script src="https://cdn.hatter.ink/doc/4246_83266CF6043E93C9E7015A983035780A/vue-2.6.14.min.js" charset="utf-8"></script>
|
|
<script src="https://cdn.hatter.ink/doc/4285_580BA60182DAF3638D7A2F3A64B25195/bootstrap-vue.min.js" charset="utf-8"></script>
|
|
<script src="https://cdn.hatter.ink/doc/4286_307AE59BF7AB51966088EC6295F5AC58/bootstrap-vue-icons.min.js" charset="utf-8"></script>
|
|
<script src="https://cdn.hatter.ink/doc/4264_02DC607C0B9117DCE50F736A2C24E101/jsonp.js" charset="utf-8"></script>
|
|
<script src="https://cdn.hatter.ink/doc/4265_310FC0D4E9522B07A287276139701E0E/moment.min.js" charset="utf-8"></script>
|
|
<script src="https://cdn.hatter.ink/doc/4281_A5F75216518E14C23D9A36336EC0C9F4/timeago.min.js" charset="utf-8"></script>
|
|
</head>
|
|
<body>
|
|
<style>
|
|
.card-title { font-size: 1rem; }
|
|
.card-subtitle { font-size: 0.6rem; }
|
|
.card-text { font-size: 0.8rem; }
|
|
.card-body { padding: 0.5rem; }
|
|
.btns { padding: 2px; padding-left: 12px; padding-right: 12px; }
|
|
</style>
|
|
<div id="app" style="word-break: break-all;" v-cloak>
|
|
<div>
|
|
<b-navbar toggleable="lg" type="dark" variant="success">
|
|
<b-navbar-brand><a href="https://hatter.ink/" style="color:white;">Hatter.Ink</a> - MDS</b-navbar-brand>
|
|
</div>
|
|
<div style="margin: 0.4rem;">
|
|
<div>
|
|
Total: {{entries.length}}
|
|
<b-card-group columns>
|
|
<b-card v-for="n in entries" style="max-width: 40rem;" class="mb-2">
|
|
<b-card-text>
|
|
<img :src="n.metadataStatement.icon" style="max-width: 200px;max-height: 30px;" />
|
|
|
|
{{n.metadataStatement.description}}<br>
|
|
<span v-if="n.aaguid">AAGUID: <u>{{n.aaguid}}<br></u></span>
|
|
Protocol family: <b><u>{{n.metadataStatement.protocolFamily}}</u></b><br>
|
|
Key protection: <b><u>{{n.metadataStatement.keyProtection}}</u></b><br>
|
|
Authentication algorithms: <b><u>{{n.metadataStatement.authenticationAlgorithms}}</u></b><br>
|
|
Public key llg & encodings: <b><u>{{n.metadataStatement.publicKeyAlgAndEncodings}}</u></b><br>
|
|
Attestation typess: <b><u>{{n.metadataStatement.attestationTypes}}</u></b><br>
|
|
User verification details:
|
|
<span v-for="dd in n.metadataStatement.userVerificationDetails">
|
|
<b><u><span v-for="d in dd">{{d.userVerificationMethod}}, </span></u></b>;
|
|
</span><br>
|
|
<span v-if="n.metadataStatement?.authenticatorGetInfo?.versions">
|
|
Versions: <b><u>{{n.metadataStatement?.authenticatorGetInfo?.versions}}</u></b><br>
|
|
</span>
|
|
<span v-if="n.metadataStatement?.authenticatorGetInfo?.extensions">
|
|
Extensions: <b><u>{{n.metadataStatement?.authenticatorGetInfo?.extensions}}</u></b><br>
|
|
</span>
|
|
<span v-if="n.metadataStatement?.authenticatorGetInfo?.transports">
|
|
Transports: <b><u>{{n.metadataStatement?.authenticatorGetInfo?.transports}}</u></b><br>
|
|
</span>
|
|
<span v-if="n.metadataStatement?.authenticatorGetInfo?.algorithms">
|
|
Algorithms: <b><u>{{n.metadataStatement?.authenticatorGetInfo?.algorithms}}</u></b><br>
|
|
</span>
|
|
</b-card-text>
|
|
<!-- <div style="margin-bottom: 10px; float: right;">
|
|
<b-button v-if="!isArchive" href="#" variant="secondary" @click="doArchive(n.id);" class="btns">Archive</b-button>
|
|
<b-button v-if="isArchive" href="#" variant="danger" @click="doDelete(n.id);" class="btns">Delete</b-button>
|
|
<b-button v-if="isArchive" href="#" variant="secondary" @click="doRecover(n.id);" class="btns">Recover</b-button>
|
|
<b-button href="#" variant="info" @click="doView(n.id);" class="btns">View</b-button>
|
|
<b-button href="#" variant="primary" @click="doEdit(n.id);" class="btns">Edit</b-button>
|
|
</div> -->
|
|
</b-card>
|
|
</b-card-group>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<script>
|
|
</script>
|
|
|
|
<script>
|
|
var retObject = {};
|
|
async function refreshNotes() {
|
|
retObject.entries = (await fetch_with_get_as_json('mds.json', {}, true)).entries;
|
|
retObject.entries.sort((a, b) => {
|
|
let aa = a.metadataStatement.description.toLowerCase();
|
|
let bb = b.metadataStatement.description.toLowerCase();
|
|
if (aa == bb) {
|
|
return 0;
|
|
} else if (aa < bb) {
|
|
return -1;
|
|
} else {
|
|
return 1;
|
|
}
|
|
});
|
|
}
|
|
async function initVueApp() {
|
|
await refreshNotes();
|
|
var initVue = () => {
|
|
new Vue({
|
|
el: '#app',
|
|
data() {
|
|
return retObject;
|
|
},
|
|
watch: {},
|
|
methods: {}
|
|
});
|
|
};
|
|
initVue();
|
|
}
|
|
initVueApp().then(() => {}).catch((e) => alert("ERROR: " + e));
|
|
</script>
|
|
</body>
|
|
</html> |