Allow admin password to be revealed

This commit is contained in:
Tom Wiesing 2023-04-12 14:05:24 +02:00
parent 85c63f24a9
commit 34db2e1923
No known key found for this signature in database
10 changed files with 117 additions and 19 deletions

File diff suppressed because one or more lines are too long

View file

@ -41,3 +41,40 @@
<code class="language-yaml">{{ .Config.MarshalSensitive }}</code>
</pre>
</div>
<div class="pure-u-1-1">
<h2 id="overview">Distillery Passwords</h2>
<table class="pure-table pure-table-bordered padding">
<thead>
<tr>
<th>Service</th>
<th>Username</th>
<th>Password</th>
</tr>
</thead>
<tbody>
<tr>
<td>
SQL
</td>
<td>
<code class="copy">{{ .Config.SQL.AdminUsername }}</code>
</td>
<td>
<span data-reveal="{{ .Config.SQL.AdminPassword }}"></span>
</td>
</tr>
<tr>
<td>
Triplestore
</td>
<td>
<code class="copy">{{ .Config.TS.AdminUsername }}</code>
</td>
<td>
<span data-reveal="{{ .Config.TS.AdminPassword }}"></span>
</td>
</tr>
</tbody>
</table>
</div>

View file

@ -84,7 +84,7 @@
SQL DB
</td>
<td>
<code>{{ .Instance.SqlDatabase }}</code>
<code class="copy">{{ .Instance.SqlDatabase }}</code>
</td>
</tr>
<tr>
@ -92,7 +92,15 @@
SQL User
</td>
<td>
<code>{{ .Instance.SqlUsername }}</code>
<code class="copy">{{ .Instance.SqlUsername }}</code>
</td>
</tr>
<tr>
<td>
SQL Password
</td>
<td>
<span data-reveal="{{ .Instance.SqlPassword }}"></span>
</td>
</tr>
<tr>
@ -100,7 +108,7 @@
TS Repo
</td>
<td>
<code>{{ .Instance.GraphDBRepository }}</code>
<code class="copy">{{ .Instance.GraphDBRepository }}</code>
</td>
</tr>
<tr>
@ -108,7 +116,16 @@
TS User
</td>
<td>
<code>{{ .Instance.GraphDBUsername }}</code>
<code class="copy">{{ .Instance.GraphDBUsername }}</code>
</td>
</tr>
<tr>
<td>
TS Password
</td>
<td>
<span data-reveal="{{ .Instance.GraphDBPassword }}"></span>
</td>
</tr>
</tbody>

View file

@ -18,18 +18,18 @@ var AssetsDefault = Assets{
// AssetsUser contains assets for the 'User' entrypoint.
var AssetsUser = Assets{
Scripts: `<script type="module" src="/⛰/Default.38d394c2.js"></script><script src="/⛰/Default.38d394c2.js" nomodule="" defer></script><script type="module" src="/⛰/User.e0367d79.js"></script><script src="/⛰/User.b2f9a57c.js" nomodule="" defer></script>`,
Scripts: `<script type="module" src="/⛰/Default.38d394c2.js"></script><script src="/⛰/Default.38d394c2.js" nomodule="" defer></script><script type="module" src="/⛰/User.47a3b7e3.js"></script><script src="/⛰/User.924f7900.js" nomodule="" defer></script>`,
Styles: `<link rel="stylesheet" href="/⛰/Default.938b4407.css"><link rel="stylesheet" href="/⛰/User.68febbf8.css"><link rel="stylesheet" href="/⛰/User.840de3b4.css">`,
}
// AssetsAdmin contains assets for the 'Admin' entrypoint.
var AssetsAdmin = Assets{
Scripts: `<script nomodule="" defer src="/⛰/User.b2f9a57c.js"></script><script type="module" src="/⛰/User.e0367d79.js"></script><script type="module" src="/⛰/Default.38d394c2.js"></script><script src="/⛰/Default.38d394c2.js" nomodule="" defer></script><script type="module" src="/⛰/Admin.205f0180.js"></script><script src="/⛰/Admin.59fb2e50.js" nomodule="" defer></script>`,
Scripts: `<script nomodule="" defer src="/⛰/User.924f7900.js"></script><script type="module" src="/⛰/User.47a3b7e3.js"></script><script type="module" src="/⛰/Default.38d394c2.js"></script><script src="/⛰/Default.38d394c2.js" nomodule="" defer></script><script type="module" src="/⛰/Admin.205f0180.js"></script><script src="/⛰/Admin.59fb2e50.js" nomodule="" defer></script>`,
Styles: `<link rel="stylesheet" href="/⛰/Default.938b4407.css"><link rel="stylesheet" href="/⛰/Admin.a1e05c23.css"><link rel="stylesheet" href="/⛰/User.840de3b4.css"><link rel="stylesheet" href="/⛰/User.68febbf8.css"><link rel="stylesheet" href="/⛰/Admin.6d2ae968.css">`,
}
// AssetsAdminProvision contains assets for the 'AdminProvision' entrypoint.
var AssetsAdminProvision = Assets{
Scripts: `<script nomodule="" defer src="/⛰/User.b2f9a57c.js"></script><script nomodule="" defer src="/⛰/Admin.59fb2e50.js"></script><script type="module" src="/⛰/User.e0367d79.js"></script><script type="module" src="/⛰/Admin.205f0180.js"></script><script type="module" src="/⛰/Default.38d394c2.js"></script><script src="/⛰/Default.38d394c2.js" nomodule="" defer></script><script type="module" src="/⛰/AdminProvision.3cf9e19e.js"></script><script src="/⛰/AdminProvision.d195fd59.js" nomodule="" defer></script>`,
Scripts: `<script nomodule="" defer src="/⛰/User.924f7900.js"></script><script nomodule="" defer src="/⛰/Admin.59fb2e50.js"></script><script type="module" src="/⛰/User.47a3b7e3.js"></script><script type="module" src="/⛰/Admin.205f0180.js"></script><script type="module" src="/⛰/Default.38d394c2.js"></script><script src="/⛰/Default.38d394c2.js" nomodule="" defer></script><script type="module" src="/⛰/AdminProvision.3cf9e19e.js"></script><script src="/⛰/AdminProvision.d195fd59.js" nomodule="" defer></script>`,
Styles: `<link rel="stylesheet" href="/⛰/Default.938b4407.css"><link rel="stylesheet" href="/⛰/Admin.a1e05c23.css"><link rel="stylesheet" href="/⛰/User.840de3b4.css"><link rel="stylesheet" href="/⛰/User.68febbf8.css"><link rel="stylesheet" href="/⛰/Admin.6d2ae968.css"><link rel="stylesheet" href="/⛰/AdminProvision.38d394c2.css">`,
}

View file

@ -0,0 +1 @@
var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},t={},n={},r=e.parcelRequireafa4;null==r&&((r=function(e){if(e in t)return t[e].exports;if(e in n){var r=n[e];delete n[e];var o={id:e,exports:{}};return t[e]=o,r.call(o.exports,o,o.exports),o.exports}var i=new Error("Cannot find module '"+e+"'");throw i.code="MODULE_NOT_FOUND",i}).register=function(e,t){n[e]=t},e.parcelRequireafa4=r),r.register("gkpdw",(function(e,t){r("hZNgY"),r("lFehX")})),r.register("hZNgY",(function(e,t){document.querySelectorAll(".copy").forEach((e=>{e.addEventListener("click",(()=>{navigator.clipboard&&navigator.clipboard.writeText(e.innerText)}))}))})),r.register("lFehX",(function(e,t){document.querySelectorAll("span").forEach((e=>{e.hasAttribute("data-reveal")&&function(e,t){const n=e.getAttribute("data-reveal")??"(no content)";let r=!0;const o=()=>{r=!0,e.innerText="(click to reveal)"};o();const i=()=>{r=!1;const t=document.createElement("code");t.append(n),t.addEventListener("click",(e=>{e.preventDefault(),navigator.clipboard&&navigator.clipboard.writeText(n)})),t.style.userSelect="all",e.innerHTML="",e.append(t)};e.addEventListener("click",(e=>{e.preventDefault(),r&&(i(),setTimeout(o,t))}))}(e,1e4)}))})),r("gkpdw");

View file

@ -0,0 +1 @@
!function(){var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},t={},n={},r=e.parcelRequireafa4;null==r&&((r=function(e){if(e in t)return t[e].exports;if(e in n){var r=n[e];delete n[e];var o={id:e,exports:{}};return t[e]=o,r.call(o.exports,o,o.exports),o.exports}var i=new Error("Cannot find module '"+e+"'");throw i.code="MODULE_NOT_FOUND",i}).register=function(e,t){n[e]=t},e.parcelRequireafa4=r),r.register("kEAtK",(function(e,t){r("15EWx"),r("fp21h")})),r.register("15EWx",(function(e,t){document.querySelectorAll(".copy").forEach((e=>{e.addEventListener("click",(()=>{navigator.clipboard&&navigator.clipboard.writeText(e.innerText)}))}))})),r.register("fp21h",(function(e,t){document.querySelectorAll("span").forEach((e=>{e.hasAttribute("data-reveal")&&function(e,t){var n;const r=null!==(n=e.getAttribute("data-reveal"))&&void 0!==n?n:"(no content)";let o=!0;const i=()=>{o=!0,e.innerText="(click to reveal)"};i();const a=()=>{o=!1;const t=document.createElement("code");t.append(r),t.addEventListener("click",(e=>{e.preventDefault(),navigator.clipboard&&navigator.clipboard.writeText(r)})),t.style.userSelect="all",e.innerHTML="",e.append(t)};e.addEventListener("click",(e=>{e.preventDefault(),o&&(a(),setTimeout(i,t))}))}(e,1e4)}))})),r("kEAtK")}();

View file

@ -1 +0,0 @@
!function(){var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},r={},n={},o=e.parcelRequireafa4;null==o&&((o=function(e){if(e in r)return r[e].exports;if(e in n){var o=n[e];delete n[e];var t={id:e,exports:{}};return r[e]=t,o.call(t.exports,t,t.exports),t.exports}var i=new Error("Cannot find module '"+e+"'");throw i.code="MODULE_NOT_FOUND",i}).register=function(e,r){n[e]=r},e.parcelRequireafa4=o),o.register("kEAtK",(function(e,r){o("15EWx")})),o.register("15EWx",(function(e,r){document.querySelectorAll(".copy").forEach((e=>{e.addEventListener("click",(()=>{navigator.clipboard&&navigator.clipboard.writeText(e.innerText)}))}))})),o("kEAtK")}();

View file

@ -1 +0,0 @@
var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},r={},n={},o=e.parcelRequireafa4;null==o&&((o=function(e){if(e in r)return r[e].exports;if(e in n){var o=n[e];delete n[e];var i={id:e,exports:{}};return r[e]=i,o.call(i.exports,i,i.exports),i.exports}var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}).register=function(e,r){n[e]=r},e.parcelRequireafa4=o),o.register("gkpdw",(function(e,r){o("hZNgY")})),o.register("hZNgY",(function(e,r){document.querySelectorAll(".copy").forEach((e=>{e.addEventListener("click",(()=>{navigator.clipboard&&navigator.clipboard.writeText(e.innerText)}))}))})),o("gkpdw");

View file

@ -1 +1,2 @@
import "~/src/lib/copy"
import "~/src/lib/reveal"

View file

@ -0,0 +1,43 @@
document.querySelectorAll('span').forEach((elem: Element) => {
if (!elem.hasAttribute('data-reveal')) return
addReveal(elem as HTMLSpanElement, 10000);
})
export function addReveal(span: HTMLSpanElement, hideDelay: number) {
const content = span.getAttribute("data-reveal") ?? '(no content)'
let isHidden = true
// handler to hide the element
const hide = () => {
isHidden = true
span.innerText = "(click to reveal)"
}
hide()
const reveal = () => {
isHidden = false
const code = document.createElement('code')
code.append(content)
code.addEventListener('click', (evt) => {
evt.preventDefault()
if (!navigator.clipboard) return
navigator.clipboard.writeText(content)
})
code.style.userSelect = "all";
span.innerHTML = ""
span.append(code)
}
span.addEventListener("click", (evt) => {
evt.preventDefault()
if (!isHidden) return
reveal()
setTimeout(hide, hideDelay) // hide again after 1 second
})
}