mirror of
https://github.com/simple-login/app.git
synced 2026-04-07 19:27:34 +00:00
Update templates
This commit is contained in:
committed by
Adrià Casajús
parent
d73e685c3b
commit
341cb036fa
@@ -7,14 +7,8 @@ repos:
|
||||
hooks:
|
||||
- id: check-yaml
|
||||
- id: trailing-whitespace
|
||||
- repo: https://github.com/trim21/dprint-pre-commit
|
||||
rev: "d93f30aac23560a1999a1f4a0f290323fda0c1a4"
|
||||
hooks:
|
||||
- id: dprint
|
||||
types: [file]
|
||||
files: \.html$
|
||||
- repo: https://github.com/djlint/djLint
|
||||
rev: v1.36.4
|
||||
rev: v1.35.3
|
||||
hooks:
|
||||
- id: djlint-jinja
|
||||
types: [file]
|
||||
|
||||
+79
-80
@@ -2,89 +2,86 @@
|
||||
name = "SimpleLogin"
|
||||
version = "0.1.0"
|
||||
description = "SimpleLogin partner API"
|
||||
authors = [ {name="SimpleLogin", email="dev@simplelogin.io"}]
|
||||
authors = [{ name = "SimpleLogin", email = "dev@simplelogin.io" }]
|
||||
license = "MIT"
|
||||
repository = "https://github.com/simple-login/app"
|
||||
keywords = ["email", "alias", "privacy", "oauth2", "openid"]
|
||||
packages = [
|
||||
{ include = "app/" },
|
||||
{ include = "migrations/" },
|
||||
]
|
||||
packages = [{ include = "app/" }, { include = "migrations/" }]
|
||||
include = ["templates/*", "templates/**/*", "local_data/*.txt"]
|
||||
|
||||
requires-python = "~=3.12.0"
|
||||
|
||||
dependencies = [
|
||||
"flask ~= 1.1.2",
|
||||
"flask_login ~= 0.5.0",
|
||||
"wtforms ~= 2.3.3",
|
||||
"unidecode ~= 1.1.1",
|
||||
"gunicorn ~= 20.0.4",
|
||||
"bcrypt ~= 3.2.0",
|
||||
"python-dotenv ~= 0.14.0",
|
||||
"ipython ~= 7.31.1",
|
||||
"sqlalchemy_utils ~= 0.36.8",
|
||||
"psycopg2-binary ~= 2.9.10",
|
||||
"sentry_sdk ~= 2.20.0",
|
||||
"blinker ~= 1.9.0",
|
||||
"arrow ~= 0.16.0",
|
||||
"Flask-WTF ~= 0.14.3",
|
||||
"boto3 ~= 1.35.37",
|
||||
"Flask-Migrate ~= 2.5.3",
|
||||
"flask_admin ~= 1.5.6",
|
||||
"flask-cors ~= 3.0.9",
|
||||
"watchtower ~= 0.8.0",
|
||||
"sqlalchemy-utils == 0.36.8",
|
||||
"jwcrypto ~= 0.8",
|
||||
"yacron~=0.19.0",
|
||||
"flask-debugtoolbar ~= 0.11.0",
|
||||
"requests_oauthlib ~= 1.3.0",
|
||||
"pyopenssl ~= 19.1.0",
|
||||
"aiosmtpd ~= 1.2",
|
||||
"dnspython ~= 2.7.0",
|
||||
"coloredlogs ~= 14.0",
|
||||
"pycryptodome ~= 3.9.8",
|
||||
"phpserialize ~= 1.3",
|
||||
"dkimpy == 1.0.5",
|
||||
"pyotp ~= 2.4.0",
|
||||
"flask_profiler ~= 1.8.1",
|
||||
"facebook-sdk ~= 3.1.0",
|
||||
"google-api-python-client ~= 1.12.3",
|
||||
"google-auth-httplib2 ~= 0.0.4",
|
||||
"python-gnupg ~= 0.4.6",
|
||||
"webauthn ~= 0.4.7",
|
||||
"flask ~= 1.1.2",
|
||||
"flask_login ~= 0.5.0",
|
||||
"wtforms ~= 2.3.3",
|
||||
"unidecode ~= 1.1.1",
|
||||
"gunicorn ~= 20.0.4",
|
||||
"bcrypt ~= 3.2.0",
|
||||
"python-dotenv ~= 0.14.0",
|
||||
"ipython ~= 7.31.1",
|
||||
"sqlalchemy_utils ~= 0.36.8",
|
||||
"psycopg2-binary ~= 2.9.10",
|
||||
"sentry_sdk ~= 2.20.0",
|
||||
"blinker ~= 1.9.0",
|
||||
"arrow ~= 0.16.0",
|
||||
"Flask-WTF ~= 0.14.3",
|
||||
"boto3 ~= 1.35.37",
|
||||
"Flask-Migrate ~= 2.5.3",
|
||||
"flask_admin ~= 1.5.6",
|
||||
"flask-cors ~= 3.0.9",
|
||||
"watchtower ~= 0.8.0",
|
||||
"sqlalchemy-utils == 0.36.8",
|
||||
"jwcrypto ~= 0.8",
|
||||
"yacron~=0.19.0",
|
||||
"flask-debugtoolbar ~= 0.11.0",
|
||||
"requests_oauthlib ~= 1.3.0",
|
||||
"pyopenssl ~= 19.1.0",
|
||||
"aiosmtpd ~= 1.2",
|
||||
"dnspython ~= 2.7.0",
|
||||
"coloredlogs ~= 14.0",
|
||||
"pycryptodome ~= 3.9.8",
|
||||
"phpserialize ~= 1.3",
|
||||
"dkimpy == 1.0.5",
|
||||
"pyotp ~= 2.4.0",
|
||||
"flask_profiler ~= 1.8.1",
|
||||
"facebook-sdk ~= 3.1.0",
|
||||
"google-api-python-client ~= 1.12.3",
|
||||
"google-auth-httplib2 ~= 0.0.4",
|
||||
"python-gnupg ~= 0.4.6",
|
||||
"webauthn ~= 0.4.7",
|
||||
|
||||
# Git dependency until pyspf creates a new release
|
||||
#"pyspf @ git+https://github.com/sdgathman/pyspf.git@665a6df079485a9824be0829e7d71088453db7f6",
|
||||
"pyspf ~= 2.0.14",
|
||||
# Git dependency until pyspf creates a new release
|
||||
#"pyspf @ git+https://github.com/sdgathman/pyspf.git@665a6df079485a9824be0829e7d71088453db7f6",
|
||||
"pyspf ~= 2.0.14",
|
||||
|
||||
"Flask-Limiter == 1.5",
|
||||
"memory_profiler ~= 0.57.0",
|
||||
"gevent ~= 24.11.1",
|
||||
"email-validator ~= 2.2.0",
|
||||
"PGPy == 0.5.4",
|
||||
"coinbase-commerce ~= 1.0.1",
|
||||
"requests ~= 2.25.1",
|
||||
"newrelic ~= 8.8.0",
|
||||
"flanker ~= 0.9.11",
|
||||
"pyre2 ~= 0.3.6",
|
||||
"tldextract ~= 3.1.2",
|
||||
"flask-debugtoolbar-sqlalchemy ~= 0.2.0",
|
||||
"twilio ~= 7.3.2",
|
||||
"Deprecated ~= 1.2.13",
|
||||
"MarkupSafe~=1.1.1",
|
||||
"cryptography ~= 37.0.1",
|
||||
"SQLAlchemy ~= 1.3.24",
|
||||
"redis==5.2.1",
|
||||
"newrelic-telemetry-sdk ~= 0.5.0",
|
||||
"aiospamc == 0.10",
|
||||
"itsdangerous ~= 1.1.0",
|
||||
"werkzeug ~= 1.0.1",
|
||||
"alembic ~= 1.4.3",
|
||||
"limits ~= 4.0.1",
|
||||
"strictyaml ~= 1.7.3",
|
||||
"Flask-Limiter == 1.5",
|
||||
"memory_profiler ~= 0.57.0",
|
||||
"gevent ~= 24.11.1",
|
||||
"email-validator ~= 2.2.0",
|
||||
"PGPy == 0.5.4",
|
||||
"coinbase-commerce ~= 1.0.1",
|
||||
"requests ~= 2.25.1",
|
||||
"newrelic ~= 8.8.0",
|
||||
"flanker ~= 0.9.11",
|
||||
"pyre2 ~= 0.3.6",
|
||||
"tldextract ~= 3.1.2",
|
||||
"flask-debugtoolbar-sqlalchemy ~= 0.2.0",
|
||||
"twilio ~= 7.3.2",
|
||||
"Deprecated ~= 1.2.13",
|
||||
"MarkupSafe~=1.1.1",
|
||||
"cryptography ~= 37.0.1",
|
||||
"SQLAlchemy ~= 1.3.24",
|
||||
"redis==5.2.1",
|
||||
"newrelic-telemetry-sdk ~= 0.5.0",
|
||||
"aiospamc == 0.10",
|
||||
"itsdangerous ~= 1.1.0",
|
||||
"werkzeug ~= 1.0.1",
|
||||
"alembic ~= 1.4.3",
|
||||
"limits ~= 4.0.1",
|
||||
"strictyaml ~= 1.7.3",
|
||||
|
||||
"sl-pgp"
|
||||
"sl-pgp",
|
||||
]
|
||||
|
||||
[tool.black]
|
||||
@@ -134,17 +131,19 @@ ignore = "H006,H013,H016,H017,H019,H021,H025,H030,H031,T003,J004,J018,T001"
|
||||
|
||||
[tool.uv]
|
||||
# Declare sl-pgp-rs dependency link so uv can find it
|
||||
find-links = ["https://github.com/simple-login/sl-pgp-rs/releases/download/0.1.1/index.html"]
|
||||
find-links = [
|
||||
"https://github.com/simple-login/sl-pgp-rs/releases/download/0.1.1/index.html",
|
||||
]
|
||||
|
||||
[dependency-groups]
|
||||
dev = [
|
||||
"pytest ~= 7.0.0",
|
||||
"pytest-cov ~= 3.0.0",
|
||||
"pre-commit ~= 4.1.0",
|
||||
"black ~= 22.1.0",
|
||||
"djlint==1.34.1",
|
||||
"pylint ~= 2.14.4",
|
||||
"ruff ~= 0.1.5",
|
||||
"pytest ~= 7.0.0",
|
||||
"pytest-cov ~= 3.0.0",
|
||||
"pre-commit ~= 4.1.0",
|
||||
"black ~= 22.1.0",
|
||||
"djlint==1.35.3",
|
||||
"pylint ~= 2.14.4",
|
||||
"ruff ~= 0.1.5",
|
||||
]
|
||||
|
||||
[build-system]
|
||||
|
||||
@@ -890,7 +890,7 @@
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<form action="{{ url_for("admin.custom_domain_search.delete_custom_domain") }}"
|
||||
<form action="{{ url_for('admin.custom_domain_search.delete_custom_domain') }}"
|
||||
method="POST"
|
||||
id="deleteDomainForm{{ domain.id }}">
|
||||
<div class="modal-body">
|
||||
|
||||
@@ -60,7 +60,8 @@
|
||||
{% if pu %}
|
||||
|
||||
<a href="?query={{ pu.partner_email }}&search_type=partner">{{ pu.partner_email }}</a>
|
||||
<br><small class="text-muted"><a href="?query={{ pu.external_user_id }}&search_type=partner">{{ pu.external_user_id }}</a></small>
|
||||
<br>
|
||||
<small class="text-muted"><a href="?query={{ pu.external_user_id }}&search_type=partner">{{ pu.external_user_id }}</a></small>
|
||||
{% else %}
|
||||
<span class="text-muted">Not linked</span>
|
||||
{% endif %}
|
||||
@@ -262,7 +263,7 @@
|
||||
{% endif %}
|
||||
{% if user.enable_otp or user.fido_uuid %}
|
||||
|
||||
<form action="{{ url_for("admin.email_search.disable_2fa") }}"
|
||||
<form action="{{ url_for('admin.email_search.disable_2fa') }}"
|
||||
method="POST"
|
||||
class="mb-2">
|
||||
<input type="hidden" name="user_id" value="{{ user.id }}">
|
||||
@@ -283,7 +284,7 @@
|
||||
{% endif %}
|
||||
{% if user.delete_on %}
|
||||
|
||||
<form action="{{ url_for("admin.email_search.stop_user_deletion") }}"
|
||||
<form action="{{ url_for('admin.email_search.stop_user_deletion') }}"
|
||||
method="POST"
|
||||
class="mb-2">
|
||||
<input type="hidden" name="user_id" value="{{ user.id }}">
|
||||
@@ -378,7 +379,7 @@
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<form action="{{ url_for("admin.email_search.mark_abuser") }}"
|
||||
<form action="{{ url_for('admin.email_search.mark_abuser') }}"
|
||||
method="POST">
|
||||
<div class="modal-body">
|
||||
<input type="hidden" name="user_id" value="{{ user.id }}">
|
||||
@@ -426,7 +427,7 @@
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<form action="{{ url_for("admin.email_search.unmark_abuser") }}"
|
||||
<form action="{{ url_for('admin.email_search.unmark_abuser') }}"
|
||||
method="POST">
|
||||
<div class="modal-body">
|
||||
<input type="hidden" name="user_id" value="{{ user.id }}">
|
||||
@@ -475,7 +476,7 @@
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<form action="{{ url_for("admin.email_search.delete_partner_link") }}"
|
||||
<form action="{{ url_for('admin.email_search.delete_partner_link') }}"
|
||||
method="POST"
|
||||
id="unlinkProtonForm{{ user.id }}">
|
||||
<div class="modal-body">
|
||||
@@ -545,7 +546,7 @@
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<form action="{{ url_for("admin.email_search.delete_user") }}"
|
||||
<form action="{{ url_for('admin.email_search.delete_user') }}"
|
||||
method="POST"
|
||||
id="deleteUserForm{{ user.id }}">
|
||||
<div class="modal-body">
|
||||
@@ -613,7 +614,7 @@
|
||||
<span>×</span>
|
||||
</button>
|
||||
</div>
|
||||
<form action="{{ url_for("admin.email_search.update_subdomain_quota") }}"
|
||||
<form action="{{ url_for('admin.email_search.update_subdomain_quota') }}"
|
||||
method="POST"
|
||||
id="subdomainQuotaForm{{ user.id }}">
|
||||
<div class="modal-body">
|
||||
@@ -649,7 +650,7 @@
|
||||
<span>×</span>
|
||||
</button>
|
||||
</div>
|
||||
<form action="{{ url_for("admin.email_search.update_directory_quota") }}"
|
||||
<form action="{{ url_for('admin.email_search.update_directory_quota') }}"
|
||||
method="POST"
|
||||
id="directoryQuotaForm{{ user.id }}">
|
||||
<div class="modal-body">
|
||||
@@ -681,7 +682,7 @@
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-md-6 mb-3">
|
||||
<form action="{{ url_for("admin.email_search.update_subdomain_quota") }}"
|
||||
<form action="{{ url_for('admin.email_search.update_subdomain_quota') }}"
|
||||
method="POST">
|
||||
<input type="hidden" name="user_id" value="{{ user.id }}">
|
||||
<label class="font-weight-bold">Subdomain Quota</label>
|
||||
@@ -704,7 +705,7 @@
|
||||
</form>
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<form action="{{ url_for("admin.email_search.update_directory_quota") }}"
|
||||
<form action="{{ url_for('admin.email_search.update_directory_quota') }}"
|
||||
method="POST">
|
||||
<input type="hidden" name="user_id" value="{{ user.id }}">
|
||||
<label class="font-weight-bold">Directory Quota</label>
|
||||
@@ -759,7 +760,7 @@
|
||||
{% for mailbox in mboxes %}
|
||||
|
||||
<tr class="{% if highlight_mailbox_email and mailbox.email == highlight_mailbox_email %}
|
||||
table-warning{% endif %}">
|
||||
table-warning{% endif %}">
|
||||
<td>
|
||||
<code>{{ mailbox.id }}</code>
|
||||
</td>
|
||||
@@ -838,7 +839,7 @@
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<form action="{{ url_for("admin.email_search.set_default_mailbox") }}"
|
||||
<form action="{{ url_for('admin.email_search.set_default_mailbox') }}"
|
||||
method="POST">
|
||||
<div class="modal-body">
|
||||
<input type="hidden" name="mailbox_id" value="{{ mailbox.id }}">
|
||||
@@ -882,7 +883,7 @@
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<form action="{{ url_for("admin.email_search.admin_reenable_mailbox") }}"
|
||||
<form action="{{ url_for('admin.email_search.admin_reenable_mailbox') }}"
|
||||
method="POST">
|
||||
<div class="modal-body">
|
||||
<input type="hidden" name="mailbox_id" value="{{ mailbox.id }}">
|
||||
@@ -933,7 +934,7 @@
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<form action="{{ url_for("admin.email_search.send_mailbox_disable_warning") }}"
|
||||
<form action="{{ url_for('admin.email_search.send_mailbox_disable_warning') }}"
|
||||
method="POST">
|
||||
<div class="modal-body">
|
||||
<input type="hidden" name="mailbox_id" value="{{ mailbox.id }}">
|
||||
@@ -975,7 +976,7 @@
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<form action="{{ url_for("admin.email_search.admin_disable_mailbox") }}"
|
||||
<form action="{{ url_for('admin.email_search.admin_disable_mailbox') }}"
|
||||
method="POST">
|
||||
<div class="modal-body">
|
||||
<input type="hidden" name="mailbox_id" value="{{ mailbox.id }}">
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<tr>
|
||||
<td>{{ user.id }}</td>
|
||||
<td>
|
||||
<a href="{{ url_for("admin.email_search.index", query=user.email) }}">{{ user.email }}</a>
|
||||
<a href="{{ url_for('admin.email_search.index', query=user.email) }}">{{ user.email }}</a>
|
||||
</td>
|
||||
{% if user.activated %}
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
<td class="text-success">
|
||||
Enabled
|
||||
<form class="d-inline"
|
||||
action="{{ url_for("admin.email_domain_search.disable_user") }}"
|
||||
action="{{ url_for('admin.email_domain_search.disable_user') }}"
|
||||
method="POST">
|
||||
<input type="hidden" name="user_id" value="{{ user.id }}">
|
||||
<input type="hidden" name="query" value="{{ query }}">
|
||||
@@ -65,7 +65,7 @@
|
||||
<td>{{ user.updated_at }}</td>
|
||||
<td>
|
||||
<form class="d-inline"
|
||||
action="{{ url_for("admin.email_search.update_subdomain_quota") }}"
|
||||
action="{{ url_for('admin.email_search.update_subdomain_quota') }}"
|
||||
method="POST">
|
||||
<input type="hidden" name="user_id" value="{{ user.id }}">
|
||||
<div class="input-group input-group-sm" style="max-width: 120px;">
|
||||
@@ -89,7 +89,7 @@
|
||||
<td class="flex">
|
||||
<a href="?query={{ pu.partner_email }}">{{ pu.partner_email }}</a>
|
||||
<form class="d-inline"
|
||||
action="{{ url_for("admin.email_search.delete_partner_link") }}"
|
||||
action="{{ url_for('admin.email_search.delete_partner_link') }}"
|
||||
method="POST">
|
||||
<input type="hidden" name="user_id" value="{{ user.id }}">
|
||||
<button type="submit"
|
||||
@@ -104,7 +104,7 @@
|
||||
|
||||
<td>
|
||||
<form class="d-inline"
|
||||
action="{{ url_for("admin.email_search.stop_user_deletion") }}"
|
||||
action="{{ url_for('admin.email_search.stop_user_deletion') }}"
|
||||
method="POST">
|
||||
<input type="hidden" name="user_id" value="{{ user.id }}">
|
||||
<button type="submit"
|
||||
|
||||
@@ -443,7 +443,7 @@ wheels = [
|
||||
|
||||
[[package]]
|
||||
name = "djlint"
|
||||
version = "1.34.1"
|
||||
version = "1.35.3"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "click" },
|
||||
@@ -458,9 +458,9 @@ dependencies = [
|
||||
{ name = "regex" },
|
||||
{ name = "tqdm" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/c4/a8/b8ed0b5e924985d3b4272940f785a7bf5baa41713dc30a0c087939aaf7c8/djlint-1.34.1.tar.gz", hash = "sha256:db93fa008d19eaadb0454edf1704931d14469d48508daba2df9941111f408346", size = 44066, upload-time = "2023-12-20T19:26:20.13Z" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/a7/e6/4b633476fa2ebbd09ade007f052617227fb0c250e7f708d6e56e9f6c4b85/djlint-1.35.3.tar.gz", hash = "sha256:780ea3e25662fca89033fa96ecf656099954d6f81dce039eac90f4bba3cbe850", size = 45902, upload-time = "2024-10-30T07:59:59.674Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/7f/0c/bf400cf2a7af5aaa45cc3c54805220dea0bc88b500b414379d37fd0aff12/djlint-1.34.1-py3-none-any.whl", hash = "sha256:96ff1c464fb6f061130ebc88663a2ea524d7ec51f4b56221a2b3f0320a3cfce8", size = 48988, upload-time = "2023-12-20T19:26:17.319Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/cd/f9/1788c861b4f8aea24bc8f216e57877354f138a3730cafb407f8ec4cc6cd2/djlint-1.35.3-py3-none-any.whl", hash = "sha256:bf2f23798909f9c5a110925c369538383de0141f9a2be37ee0d26422d41b7543", size = 50744, upload-time = "2024-10-30T07:59:58.293Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -1912,7 +1912,7 @@ requires-dist = [
|
||||
[package.metadata.requires-dev]
|
||||
dev = [
|
||||
{ name = "black", specifier = "~=22.1.0" },
|
||||
{ name = "djlint", specifier = "==1.34.1" },
|
||||
{ name = "djlint", specifier = "==1.35.3" },
|
||||
{ name = "pre-commit", specifier = "~=4.1.0" },
|
||||
{ name = "pylint", specifier = "~=2.14.4" },
|
||||
{ name = "pytest", specifier = "~=7.0.0" },
|
||||
|
||||
Reference in New Issue
Block a user