mirror of
https://github.com/lnbits/lnbits-legend.git
synced 2025-02-24 14:51:05 +01:00
* feat: show auth configs on the admin UI * fix: do not access settings on load * fix: redirect for click on item (not only on text) * fix: remove `Display Name` * fix: do not show `Verify email with` if no auth option is available * feat: show warning before logout * feat: i18n of account page * fix: show account icon for user ID login * fix: always check `isUserAuthorized` * fix: update the `disclaimer_dialog` message * feat: hide user ID by default * fix: redirect from login page when user authorized * feat: update logout message * fix: do not translate company names
407 lines
14 KiB
HTML
407 lines
14 KiB
HTML
<!DOCTYPE html>
|
|
|
|
<html lang="en">
|
|
<head>
|
|
{% for url in INCLUDED_CSS %}
|
|
<link
|
|
rel="stylesheet"
|
|
type="text/css"
|
|
href="{{ static_url_for('static', url ) }}"
|
|
/>
|
|
{% endfor %} {% block styles %}{% endblock %}
|
|
<style>
|
|
@font-face {
|
|
font-family: 'Material Icons';
|
|
font-style: normal;
|
|
font-weight: 400;
|
|
src: url("{{ static_url_for('static', 'fonts/material-icons-v50.woff2') }}")
|
|
format('woff2');
|
|
}
|
|
</style>
|
|
<title>{% block title %}{{ SITE_TITLE }}{% endblock %}</title>
|
|
<meta charset="utf-8" />
|
|
<meta
|
|
name="viewport"
|
|
content="width=device-width, initial-scale=1, maximum-scale=1, shrink-to-fit=no"
|
|
/>
|
|
<meta name="mobile-web-app-capable" content="yes" />
|
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
|
{% if web_manifest %}
|
|
<link async="async" rel="manifest" href="{{ web_manifest }}" />
|
|
{% endif %} {% block head_scripts %}{% endblock %}
|
|
</head>
|
|
|
|
<body data-theme="bitcoin">
|
|
<q-layout id="vue" view="hHh lpR lfr" v-cloak>
|
|
<q-header bordered class="bg-marginal-bg">
|
|
<q-toolbar>
|
|
{% block drawer_toggle %}
|
|
<q-btn
|
|
dense
|
|
flat
|
|
round
|
|
icon="menu"
|
|
@click="g.visibleDrawer = !g.visibleDrawer"
|
|
></q-btn>
|
|
{% endblock %}
|
|
<q-toolbar-title>
|
|
{% block toolbar_title %}
|
|
<q-btn flat no-caps dense size="lg" type="a" href="/"
|
|
>{% if USE_CUSTOM_LOGO %}
|
|
<img height="30px" alt="Logo" src="{{ USE_CUSTOM_LOGO }}" />
|
|
{%else%} {% if SITE_TITLE != 'LNbits' %} {{ SITE_TITLE }} {% else
|
|
%}
|
|
<span><strong>LN</strong>bits</span> {% endif %} {%endif%} </q-btn
|
|
>{% endblock %} {% block toolbar_subtitle %}{%if user and
|
|
user.super_user%}
|
|
<q-badge align="middle">Super User</q-badge>
|
|
{% elif user and user.admin %}
|
|
<q-badge align="middle">Admin User</q-badge>
|
|
{%endif%}{% endblock %}
|
|
</q-toolbar-title>
|
|
{% block beta %} {% if VOIDWALLET %}
|
|
<q-badge
|
|
v-text="$t('voidwallet_active')"
|
|
color="red"
|
|
text-color="black"
|
|
class="q-mr-md"
|
|
>
|
|
</q-badge>
|
|
{%endif%}
|
|
<q-badge
|
|
v-show="$q.screen.gt.sm"
|
|
color="yellow"
|
|
text-color="black"
|
|
class="q-mr-md"
|
|
>
|
|
<span
|
|
v-text='$t("use_with_caution", { name: "{{ SITE_TITLE }}" })'
|
|
></span>
|
|
</q-badge>
|
|
{% if LNBITS_SERVICE_FEE > 0 %}
|
|
<q-badge
|
|
v-show="$q.screen.gt.sm"
|
|
v-if="g.user"
|
|
color="green"
|
|
text-color="black"
|
|
class="q-mr-md"
|
|
>
|
|
{% if LNBITS_SERVICE_FEE_MAX > 0 %}
|
|
<span
|
|
v-text='$t("service_fee_max", { amount: "{{ LNBITS_SERVICE_FEE }}", max: "{{ LNBITS_SERVICE_FEE_MAX }}"})'
|
|
></span>
|
|
{%else%}
|
|
<span
|
|
v-text='$t("service_fee", { amount: "{{ LNBITS_SERVICE_FEE }}" })'
|
|
></span>
|
|
{%endif%}
|
|
<q-tooltip
|
|
><span v-text='$t("service_fee_tooltip")'></span
|
|
></q-tooltip>
|
|
</q-badge>
|
|
|
|
{%endif%} {% endblock %}
|
|
<q-badge
|
|
v-if="g.offline"
|
|
color="red"
|
|
text-color="white"
|
|
class="q-mr-md"
|
|
>
|
|
<span>OFFLINE</span>
|
|
</q-badge>
|
|
<lnbits-notifications-btn
|
|
v-if="g.user"
|
|
pubkey="{{ WEBPUSH_PUBKEY }}"
|
|
></lnbits-notifications-btn>
|
|
<q-btn-dropdown
|
|
dense
|
|
flat
|
|
round
|
|
size="sm"
|
|
icon="language"
|
|
class="q-pl-md"
|
|
>
|
|
<q-list v-for="(lang, index) in g.langs" :key="index">
|
|
<q-item
|
|
clickable
|
|
v-close-popup
|
|
:active="activeLanguage(lang.value)"
|
|
@click="changeLanguage(lang.value)"
|
|
><q-item-section>
|
|
<q-item-label
|
|
v-text="lang.display ?? lang.value.toUpperCase()"
|
|
></q-item-label>
|
|
<q-tooltip><span v-text="lang.label"></span></q-tooltip>
|
|
</q-item-section>
|
|
</q-item>
|
|
</q-list>
|
|
</q-btn-dropdown>
|
|
<q-btn-dropdown
|
|
v-if="g.allowedThemes && g.allowedThemes.length > 1"
|
|
dense
|
|
flat
|
|
round
|
|
size="sm"
|
|
icon="format_color_fill"
|
|
class="q-pl-md"
|
|
>
|
|
<div class="row no-wrap q-pa-md">
|
|
<q-btn
|
|
v-if="g.allowedThemes.includes('classic')"
|
|
dense
|
|
flat
|
|
@click="changeColor('classic')"
|
|
icon="circle"
|
|
color="deep-purple"
|
|
size="md"
|
|
><q-tooltip>classic</q-tooltip>
|
|
</q-btn>
|
|
<q-btn
|
|
v-if="g.allowedThemes.includes('bitcoin')"
|
|
dense
|
|
flat
|
|
@click="changeColor('bitcoin')"
|
|
icon="circle"
|
|
color="orange"
|
|
size="md"
|
|
><q-tooltip>bitcoin</q-tooltip>
|
|
</q-btn>
|
|
<q-btn
|
|
v-if="g.allowedThemes.includes('mint')"
|
|
dense
|
|
flat
|
|
@click="changeColor('mint')"
|
|
icon="circle"
|
|
color="green"
|
|
size="md"
|
|
><q-tooltip>mint</q-tooltip> </q-btn
|
|
><q-btn
|
|
v-if="g.allowedThemes.includes('autumn')"
|
|
dense
|
|
flat
|
|
@click="changeColor('autumn')"
|
|
icon="circle"
|
|
color="brown"
|
|
size="md"
|
|
><q-tooltip>autumn</q-tooltip>
|
|
</q-btn>
|
|
<q-btn
|
|
v-if="g.allowedThemes.includes('monochrome')"
|
|
dense
|
|
flat
|
|
@click="changeColor('monochrome')"
|
|
icon="circle"
|
|
color="grey"
|
|
size="md"
|
|
><q-tooltip>monochrome</q-tooltip>
|
|
</q-btn>
|
|
<q-btn
|
|
v-if="g.allowedThemes.includes('salvador')"
|
|
dense
|
|
flat
|
|
@click="changeColor('salvador')"
|
|
icon="circle"
|
|
color="blue-10"
|
|
size="md"
|
|
><q-tooltip>elSalvador</q-tooltip>
|
|
</q-btn>
|
|
<q-btn
|
|
v-if="g.allowedThemes.includes('freedom')"
|
|
dense
|
|
flat
|
|
@click="changeColor('freedom')"
|
|
icon="circle"
|
|
color="pink-13"
|
|
size="md"
|
|
><q-tooltip>freedom</q-tooltip>
|
|
</q-btn>
|
|
<q-btn
|
|
v-if="g.allowedThemes.includes('cyber')"
|
|
dense
|
|
flat
|
|
@click="changeColor('cyber')"
|
|
icon="circle"
|
|
color="light-green-9"
|
|
size="md"
|
|
><q-tooltip>cyber</q-tooltip>
|
|
</q-btn>
|
|
<q-btn
|
|
v-if="g.allowedThemes.includes('flamingo')"
|
|
dense
|
|
flat
|
|
@click="changeColor('flamingo')"
|
|
icon="circle"
|
|
color="pink-3"
|
|
size="md"
|
|
><q-tooltip>flamingo</q-tooltip>
|
|
</q-btn>
|
|
</div>
|
|
</q-btn-dropdown>
|
|
|
|
<q-btn
|
|
dense
|
|
flat
|
|
round
|
|
@click="toggleDarkMode"
|
|
:icon="($q.dark.isActive) ? 'brightness_3' : 'wb_sunny'"
|
|
size="sm"
|
|
>
|
|
<q-tooltip><span v-text="$t('toggle_darkmode')"></span></q-tooltip>
|
|
</q-btn>
|
|
<q-btn-dropdown
|
|
v-if="isUserAuthorized"
|
|
dense
|
|
flat
|
|
round
|
|
size="sm"
|
|
class="q-pl-sm"
|
|
>
|
|
<template v-slot:label>
|
|
<div>
|
|
{%if user and user.config and user.config.picture%}
|
|
<img src="{{user.config.picture}}" style="max-width: 32px" />
|
|
{%else%}
|
|
<q-icon name="account_circle" />
|
|
{%endif%}
|
|
</div>
|
|
</template>
|
|
<q-list>
|
|
<q-item tag="a" href="/account" clickable v-close-popup
|
|
><q-item-section>
|
|
<q-icon name="person" />
|
|
</q-item-section>
|
|
<q-item-section>
|
|
<q-item-label>
|
|
<span v-text="$t('my_account')"></span>
|
|
</q-item-label>
|
|
</q-item-section>
|
|
<q-item-section>
|
|
<q-item-label> </q-item-label>
|
|
</q-item-section>
|
|
</q-item>
|
|
<q-separator></q-separator>
|
|
<q-item clickable v-close-popup @click="logout"
|
|
><q-item-section>
|
|
<q-icon name="logout" />
|
|
</q-item-section>
|
|
<q-item-section>
|
|
<q-item-label>
|
|
<span v-text="$t('logout')"></span>
|
|
</q-item-label>
|
|
</q-item-section>
|
|
<q-item-section>
|
|
<q-item-label> </q-item-label>
|
|
</q-item-section>
|
|
</q-item>
|
|
</q-list>
|
|
</q-btn-dropdown>
|
|
</q-toolbar>
|
|
</q-header>
|
|
|
|
{% block drawer %}
|
|
<q-drawer
|
|
v-model="g.visibleDrawer"
|
|
side="left"
|
|
:width="($q.screen.lt.md) ? 260 : 230"
|
|
show-if-above
|
|
:elevated="$q.screen.lt.md"
|
|
>
|
|
<lnbits-wallet-list></lnbits-wallet-list>
|
|
|
|
<lnbits-manage
|
|
:show-admin="'{{LNBITS_ADMIN_UI}}' == 'True'"
|
|
:show-node="'{{LNBITS_NODE_UI}}' == 'True'"
|
|
></lnbits-manage>
|
|
<lnbits-extension-list class="q-pb-xl"></lnbits-extension-list>
|
|
</q-drawer>
|
|
{% endblock %} {% block page_container %}
|
|
<q-page-container>
|
|
<q-page class="q-px-md q-py-lg" :class="{'q-px-lg': $q.screen.gt.xs}">
|
|
{% block page %}{% endblock %}
|
|
</q-page>
|
|
</q-page-container>
|
|
{% endblock %} {% block footer %}
|
|
|
|
<q-footer
|
|
class="bg-transparent q-px-lg q-py-md"
|
|
:class="{'text-dark': !$q.dark.isActive}"
|
|
>
|
|
<q-space class="q-py-lg lt-md"></q-space>
|
|
<q-toolbar class="gt-sm">
|
|
<q-toolbar-title class="text-caption">
|
|
{{ SITE_TITLE }}, {{SITE_TAGLINE}}
|
|
<br />
|
|
<small
|
|
v-text="$t('lnbits_version') + ': {{LNBITS_VERSION}}'"
|
|
></small>
|
|
</q-toolbar-title>
|
|
<q-space></q-space>
|
|
<q-btn
|
|
flat
|
|
dense
|
|
:color="($q.dark.isActive) ? 'white' : 'primary'"
|
|
type="a"
|
|
href="/docs"
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
>
|
|
<span v-text="$t('api_docs')"></span>
|
|
<q-tooltip
|
|
><span v-text="$t('view_swagger_docs')"></span
|
|
></q-tooltip>
|
|
</q-btn>
|
|
<q-btn
|
|
flat
|
|
dense
|
|
:color="($q.dark.isActive) ? 'white' : 'primary'"
|
|
icon="code"
|
|
type="a"
|
|
href="https://github.com/lnbits/lnbits"
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
>
|
|
<q-tooltip><span v-text="$t('view_github')"></span></q-tooltip>
|
|
</q-btn>
|
|
</q-toolbar>
|
|
</q-footer>
|
|
|
|
{% endblock %}
|
|
</q-layout>
|
|
|
|
{% block vue_templates %}{% endblock %}
|
|
<!---->
|
|
{% for url in INCLUDED_JS %}
|
|
<script src="{{ static_url_for('static', url) }}"></script>
|
|
{% endfor %}
|
|
<!---->
|
|
<script type="text/javascript">
|
|
const SITE_DESCRIPTION = {{ SITE_DESCRIPTION | tojson}}
|
|
const themes = {{ LNBITS_THEME_OPTIONS | tojson }}
|
|
const LNBITS_DENOMINATION = {{ LNBITS_DENOMINATION | tojson }}
|
|
const LNBITS_VERSION = {{ LNBITS_VERSION | tojson }}
|
|
const LNBITS_QR_LOGO = {{ LNBITS_QR_LOGO | tojson }}
|
|
if (themes && themes.length) {
|
|
window.allowedThemes = themes.map(str => str.trim())
|
|
}
|
|
window.langs = [
|
|
{ value: 'en', label: 'English', display: '🇬🇧 EN' },
|
|
{ value: 'de', label: 'Deutsch', display: '🇩🇪 DE' },
|
|
{ value: 'es', label: 'Español', display: '🇪🇸 ES' },
|
|
{ value: 'jp', label: '日本語', display: '🇯🇵 JP' },
|
|
{ value: 'cn', label: '中文', display: '🇨🇳 CN' },
|
|
{ value: 'fr', label: 'Français', display: '🇫🇷 FR' },
|
|
{ value: 'it', label: 'Italiano', display: '🇮🇹 IT' },
|
|
{ value: 'pi', label: 'Pirate', display: '🏴☠️ PI' },
|
|
{ value: 'nl', label: 'Nederlands', display: '🇳🇱 NL' },
|
|
{ value: 'we', label: 'Cymraeg', display: '🏴 CY' },
|
|
{ value: 'pl', label: 'Polski', display: '🇵🇱 PL' },
|
|
{ value: 'pt', label: 'Português', display: '🇵🇹 PT' },
|
|
{ value: 'br', label: 'Português do Brasil', display: '🇧🇷 BR' },
|
|
{ value: 'cs', label: 'Česky', display: '🇨🇿 CS' },
|
|
{ value: 'sk', label: 'Slovensky', display: '🇸🇰 SK' },
|
|
{ value: 'kr', label: '한국어', display: '🇰🇷 KR' }
|
|
]
|
|
</script>
|
|
{% block scripts %}{% endblock %}
|
|
</body>
|
|
</html>
|