splent-feature-github 0.4.1__tar.gz → 0.5.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {splent_feature_github-0.4.1/src/splent_feature_github.egg-info → splent_feature_github-0.5.1}/PKG-INFO +2 -1
- {splent_feature_github-0.4.1 → splent_feature_github-0.5.1}/pyproject.toml +3 -31
- {splent_feature_github-0.4.1 → splent_feature_github-0.5.1/src/splent_feature_github.egg-info}/PKG-INFO +2 -1
- {splent_feature_github-0.4.1 → splent_feature_github-0.5.1}/src/splent_feature_github.egg-info/SOURCES.txt +2 -0
- splent_feature_github-0.5.1/src/splent_feature_github.egg-info/requires.txt +1 -0
- {splent_feature_github-0.4.1 → splent_feature_github-0.5.1}/src/splent_io/splent_feature_github/__init__.py +0 -3
- {splent_feature_github-0.4.1 → splent_feature_github-0.5.1}/src/splent_io/splent_feature_github/assets/css/github.css +2 -2
- splent_feature_github-0.5.1/src/splent_io/splent_feature_github/config.py +15 -0
- {splent_feature_github-0.4.1 → splent_feature_github-0.5.1}/src/splent_io/splent_feature_github/hooks.py +2 -2
- {splent_feature_github-0.4.1 → splent_feature_github-0.5.1}/src/splent_io/splent_feature_github/templates/hooks/github_login_button.html +1 -1
- splent_feature_github-0.5.1/src/splent_io/splent_feature_github/templates/hooks/github_profile_row.html +36 -0
- splent_feature_github-0.5.1/src/splent_io/splent_feature_github/translations/es/LC_MESSAGES/messages.mo +0 -0
- {splent_feature_github-0.4.1 → splent_feature_github-0.5.1}/src/splent_io/splent_feature_github/translations/es/LC_MESSAGES/messages.po +10 -4
- splent_feature_github-0.5.1/src/splent_io/splent_feature_github/translations/messages.pot +40 -0
- splent_feature_github-0.4.1/src/splent_io/splent_feature_github/config.py +0 -27
- splent_feature_github-0.4.1/src/splent_io/splent_feature_github/templates/hooks/github_profile_row.html +0 -43
- splent_feature_github-0.4.1/src/splent_io/splent_feature_github/translations/es/LC_MESSAGES/messages.mo +0 -0
- {splent_feature_github-0.4.1 → splent_feature_github-0.5.1}/COPYING +0 -0
- {splent_feature_github-0.4.1 → splent_feature_github-0.5.1}/COPYING.LESSER +0 -0
- {splent_feature_github-0.4.1 → splent_feature_github-0.5.1}/MANIFEST.in +0 -0
- {splent_feature_github-0.4.1 → splent_feature_github-0.5.1}/README.md +0 -0
- {splent_feature_github-0.4.1 → splent_feature_github-0.5.1}/setup.cfg +0 -0
- {splent_feature_github-0.4.1 → splent_feature_github-0.5.1}/src/splent_feature_github.egg-info/dependency_links.txt +0 -0
- {splent_feature_github-0.4.1 → splent_feature_github-0.5.1}/src/splent_feature_github.egg-info/top_level.txt +0 -0
- {splent_feature_github-0.4.1 → splent_feature_github-0.5.1}/src/splent_io/splent_feature_github/migrations/alembic.ini +0 -0
- {splent_feature_github-0.4.1 → splent_feature_github-0.5.1}/src/splent_io/splent_feature_github/migrations/env.py +0 -0
- {splent_feature_github-0.4.1 → splent_feature_github-0.5.1}/src/splent_io/splent_feature_github/migrations/script.py.mako +0 -0
- {splent_feature_github-0.4.1 → splent_feature_github-0.5.1}/src/splent_io/splent_feature_github/migrations/versions/7ace6050fb3f_splent_feature_github.py +0 -0
- {splent_feature_github-0.4.1 → splent_feature_github-0.5.1}/src/splent_io/splent_feature_github/migrations/versions/github0002_into_ext_identity.py +0 -0
- {splent_feature_github-0.4.1 → splent_feature_github-0.5.1}/src/splent_io/splent_feature_github/models.py +0 -0
- {splent_feature_github-0.4.1 → splent_feature_github-0.5.1}/src/splent_io/splent_feature_github/routes.py +0 -0
- {splent_feature_github-0.4.1 → splent_feature_github-0.5.1}/src/splent_io/splent_feature_github/services.py +0 -0
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: splent_feature_github
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.1
|
|
4
4
|
License-Expression: LGPL-3.0-or-later
|
|
5
5
|
Requires-Python: >=3.13
|
|
6
6
|
Description-Content-Type: text/markdown
|
|
7
7
|
License-File: COPYING
|
|
8
8
|
License-File: COPYING.LESSER
|
|
9
|
+
Requires-Dist: splent_framework>=1.30.0
|
|
9
10
|
Dynamic: license-file
|
|
10
11
|
|
|
11
12
|
# splent_feature_github
|
|
@@ -4,14 +4,14 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "splent_feature_github"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.5.1"
|
|
8
8
|
readme = "README.md"
|
|
9
9
|
requires-python = ">=3.13"
|
|
10
10
|
license = "LGPL-3.0-or-later"
|
|
11
11
|
license-files = ["COPYING", "COPYING.LESSER"]
|
|
12
12
|
|
|
13
13
|
dependencies = [
|
|
14
|
-
|
|
14
|
+
"splent_framework>=1.30.0",
|
|
15
15
|
]
|
|
16
16
|
|
|
17
17
|
[tool.setuptools]
|
|
@@ -25,16 +25,9 @@ exclude = ["*.tests", "*.tests.*"]
|
|
|
25
25
|
[tool.splent]
|
|
26
26
|
cli_version = "1.25.1"
|
|
27
27
|
|
|
28
|
-
# ── Feature Contract (auto-generated) ────────────────────────────────────────
|
|
29
|
-
# Run `splent feature:contract --write` to refresh it from the source.
|
|
30
|
-
# A refresh keeps description, category, tags, env,
|
|
31
|
-
# requires.features_manual (dependencies invisible to static analysis),
|
|
32
|
-
# requires.features_optional (what the scan infers is added to it)
|
|
33
|
-
# and provides.routes_manual (routes built from configuration at
|
|
34
|
-
# registration time, which have no literal path to find in source).
|
|
35
28
|
[tool.splent.contract]
|
|
36
29
|
description = "Sign in and sign up with GitHub, and connect a GitHub account to an account from its profile"
|
|
37
|
-
archetype = "
|
|
30
|
+
archetype = "full"
|
|
38
31
|
|
|
39
32
|
[tool.splent.contract.provides]
|
|
40
33
|
routes = ["/account/connect/github", "/github/authorize", "/github/login"]
|
|
@@ -61,20 +54,6 @@ models = []
|
|
|
61
54
|
hooks = ["auth.login.providers", "layout.head.css", "profile.edit.sections", "signup.providers"]
|
|
62
55
|
routes = true
|
|
63
56
|
|
|
64
|
-
# ── Configuration ─────────────────────────────────────────────────────────────
|
|
65
|
-
# What this feature reads from the environment, and what it falls back to.
|
|
66
|
-
# One line per variable, the value being the default.
|
|
67
|
-
#
|
|
68
|
-
# This is where a default belongs, whether or not the feature ships a
|
|
69
|
-
# container: docker/.env.example only exists for features that bring a
|
|
70
|
-
# service, and a setting is not infrastructure. A product overrides any of
|
|
71
|
-
# these in its own [tool.splent.config]; it never copies the ones it agrees
|
|
72
|
-
# with. `splent product:env --merge` and `splent product:build` both read
|
|
73
|
-
# this, so dev and deploy see the same values.
|
|
74
|
-
#
|
|
75
|
-
# Types map to what an env file can hold: true becomes "true", a list
|
|
76
|
-
# becomes a comma separated string. Keys ending in _HOST_PORT get the
|
|
77
|
-
# product's port offset, so two products can run at once.
|
|
78
57
|
[tool.splent.config]
|
|
79
58
|
# The OAuth app registered at https://github.com/settings/developers.
|
|
80
59
|
# Without both values GitHub sign-in is off: the app logs a warning at start,
|
|
@@ -86,13 +65,6 @@ GITHUB_CLIENT_SECRET = ""
|
|
|
86
65
|
# address, which then has to be confirmed by mail.
|
|
87
66
|
GITHUB_SCOPE = "user:email"
|
|
88
67
|
|
|
89
|
-
# ── Parameters ────────────────────────────────────────────────────────────────
|
|
90
|
-
# The type of each key above, which product:validate checks a product's
|
|
91
|
-
# value against and the framework (1.22.0 and later) resolves at boot:
|
|
92
|
-
# default < product < environment. An older framework ignores it. deploy:
|
|
93
|
-
# the deployment's .env decides it; derivation: the product decides it, and
|
|
94
|
-
# an environment that changes it is drift. A secret never goes in a
|
|
95
|
-
# committed file: product:validate refuses it in the product's pyproject.
|
|
96
68
|
[tool.splent.config_schema]
|
|
97
69
|
GITHUB_CLIENT_ID = { type = "str", bind = "deploy", help = "The client ID of the OAuth app registered at https://github.com/settings/developers." }
|
|
98
70
|
GITHUB_CLIENT_SECRET = { type = "secret", help = "The client secret of that OAuth app." }
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: splent_feature_github
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.1
|
|
4
4
|
License-Expression: LGPL-3.0-or-later
|
|
5
5
|
Requires-Python: >=3.13
|
|
6
6
|
Description-Content-Type: text/markdown
|
|
7
7
|
License-File: COPYING
|
|
8
8
|
License-File: COPYING.LESSER
|
|
9
|
+
Requires-Dist: splent_framework>=1.30.0
|
|
9
10
|
Dynamic: license-file
|
|
10
11
|
|
|
11
12
|
# splent_feature_github
|
|
@@ -6,6 +6,7 @@ pyproject.toml
|
|
|
6
6
|
src/splent_feature_github.egg-info/PKG-INFO
|
|
7
7
|
src/splent_feature_github.egg-info/SOURCES.txt
|
|
8
8
|
src/splent_feature_github.egg-info/dependency_links.txt
|
|
9
|
+
src/splent_feature_github.egg-info/requires.txt
|
|
9
10
|
src/splent_feature_github.egg-info/top_level.txt
|
|
10
11
|
src/splent_io/splent_feature_github/__init__.py
|
|
11
12
|
src/splent_io/splent_feature_github/config.py
|
|
@@ -21,5 +22,6 @@ src/splent_io/splent_feature_github/migrations/versions/7ace6050fb3f_splent_feat
|
|
|
21
22
|
src/splent_io/splent_feature_github/migrations/versions/github0002_into_ext_identity.py
|
|
22
23
|
src/splent_io/splent_feature_github/templates/hooks/github_login_button.html
|
|
23
24
|
src/splent_io/splent_feature_github/templates/hooks/github_profile_row.html
|
|
25
|
+
src/splent_io/splent_feature_github/translations/messages.pot
|
|
24
26
|
src/splent_io/splent_feature_github/translations/es/LC_MESSAGES/messages.mo
|
|
25
27
|
src/splent_io/splent_feature_github/translations/es/LC_MESSAGES/messages.po
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
splent_framework>=1.30.0
|
|
@@ -7,9 +7,6 @@ github_bp = create_blueprint(__name__)
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
def init_feature(app):
|
|
10
|
-
from splent_io.splent_feature_github.config import inject_config
|
|
11
|
-
|
|
12
|
-
inject_config(app)
|
|
13
10
|
# GitHub on identities' registry: identities runs the sign-in, the
|
|
14
11
|
# callback, the connect and the opening of new accounts.
|
|
15
12
|
register_github(app)
|
|
@@ -46,11 +46,11 @@
|
|
|
46
46
|
/* The profile row: the linked account in a field that reads as fixed, or a
|
|
47
47
|
link to connect one that looks like the same field. */
|
|
48
48
|
.form-control.github-identity__field {
|
|
49
|
-
background-color: #f8f9fa;
|
|
49
|
+
background-color: var(--bs-tertiary-bg, #f8f9fa);
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
.form-control.github-identity__connect {
|
|
53
|
-
color: #495057;
|
|
53
|
+
color: var(--bs-secondary-color, #495057);
|
|
54
54
|
cursor: pointer;
|
|
55
55
|
}
|
|
56
56
|
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"""github feature configuration.
|
|
2
|
+
|
|
3
|
+
The OAuth app registered at https://github.com/settings/developers.
|
|
4
|
+
Without both values GitHub sign-in is off: the app logs a warning at start,
|
|
5
|
+
and whoever tries is told it is not available.
|
|
6
|
+
|
|
7
|
+
[tool.splent.config_schema] in pyproject.toml declares every key, the
|
|
8
|
+
secret among them, and the framework resolves each one into app.config,
|
|
9
|
+
typed, right after inject_config: the default, the product's
|
|
10
|
+
[tool.splent.config], then the environment.
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def inject_config(app):
|
|
15
|
+
"""Nothing to derive: the framework resolves every declared key."""
|
|
@@ -25,7 +25,7 @@ ORDER = 10
|
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
def github_login_button():
|
|
28
|
-
from
|
|
28
|
+
from splent_framework.urls import safe_next_url
|
|
29
29
|
|
|
30
30
|
# The login and the sign-up both carry where the reader was heading, in
|
|
31
31
|
# the query string and, after a failed post, in their form.
|
|
@@ -52,7 +52,7 @@ def github_profile_row():
|
|
|
52
52
|
|
|
53
53
|
def github_stylesheet():
|
|
54
54
|
href = url_for("github.assets", subfolder="css", filename="github.css")
|
|
55
|
-
return Markup(
|
|
55
|
+
return Markup('<link rel="stylesheet" href="{}">').format(href)
|
|
56
56
|
|
|
57
57
|
|
|
58
58
|
register_template_hook("auth.login.providers", github_login_button, order=ORDER)
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{# A section of profile's edit page (profile.edit.sections), below the
|
|
2
|
+
profile form. The login links to the account on GitHub. The disconnect
|
|
3
|
+
button opens identities' modal, which posts the provider and account id
|
|
4
|
+
it carries; for the only way the account signs in, a link to set a
|
|
5
|
+
password comes first. The colours are in assets/css/github.css, and the
|
|
6
|
+
mark is simple-icons' (icon(set='brands')), drawn in currentColor. #}
|
|
7
|
+
{% if identity %}
|
|
8
|
+
<div class="mb-4 profile-identity" data-identity="github">
|
|
9
|
+
<label class="form-label fw-semibold">GitHub</label>
|
|
10
|
+
<div class="form-control d-flex align-items-center gap-2 github-identity__field">
|
|
11
|
+
{{ icon('github', set='brands', class_='github-mark') }}
|
|
12
|
+
{% if github_url %}
|
|
13
|
+
<a class="github-identity__value" href="{{ github_url }}" target="_blank" rel="noopener noreferrer">{{ identity.provider_username }}</a>
|
|
14
|
+
{% else %}
|
|
15
|
+
<span class="github-identity__value">{{ identity.provider_id }}</span>
|
|
16
|
+
{% endif %}
|
|
17
|
+
{% if can_disconnect %}
|
|
18
|
+
<button type="button" class="btn btn-sm p-0 github-identity__disconnect" title="{{ _('Disconnect') }}" aria-label="{{ _('Disconnect') }}" data-bs-toggle="modal" data-bs-target="#disconnectModal" data-provider="github" data-provider-id="{{ identity.provider_id }}">
|
|
19
|
+
{{ icon('x') }}
|
|
20
|
+
</button>
|
|
21
|
+
{% else %}
|
|
22
|
+
{# The only way the account signs in: a password of its own comes
|
|
23
|
+
first, on My account, and then it can be disconnected. #}
|
|
24
|
+
<a class="ms-auto small github-identity__set-password" href="{{ url_for('auth.my_account', _anchor='password') }}" data-set-password-first>{{ _('Set a password to disconnect it') }}</a>
|
|
25
|
+
{% endif %}
|
|
26
|
+
</div>
|
|
27
|
+
</div>
|
|
28
|
+
{% else %}
|
|
29
|
+
<div class="mb-4 profile-identity" data-identity="github">
|
|
30
|
+
<label class="form-label fw-semibold">GitHub</label>
|
|
31
|
+
<a href="{{ url_for('github.connect_github') }}" class="form-control text-decoration-none d-flex align-items-center gap-2 github-identity__field github-identity__connect">
|
|
32
|
+
{{ icon('github', set='brands', class_='github-mark') }}
|
|
33
|
+
<span>{{ _('Connect GitHub') }}</span>
|
|
34
|
+
</a>
|
|
35
|
+
</div>
|
|
36
|
+
{% endif %}
|
|
Binary file
|
|
@@ -7,7 +7,7 @@ msgid ""
|
|
|
7
7
|
msgstr ""
|
|
8
8
|
"Project-Id-Version: PROJECT VERSION\n"
|
|
9
9
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
|
10
|
-
"POT-Creation-Date: 2026-10-
|
|
10
|
+
"POT-Creation-Date: 2026-10-31 02:14+0000\n"
|
|
11
11
|
"PO-Revision-Date: 2026-10-21 00:18+0200\n"
|
|
12
12
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
13
13
|
"Language: es\n"
|
|
@@ -18,18 +18,24 @@ msgstr ""
|
|
|
18
18
|
"Content-Transfer-Encoding: 8bit\n"
|
|
19
19
|
"Generated-By: Babel 2.18.0\n"
|
|
20
20
|
|
|
21
|
-
#: src/splent_io/splent_feature_github/services.py:
|
|
21
|
+
#: src/splent_io/splent_feature_github/services.py:53
|
|
22
22
|
#, python-format
|
|
23
23
|
msgid "%(provider)s did not say who you are. Please try again."
|
|
24
24
|
msgstr "%(provider)s no dijo quién eres. Inténtalo de nuevo."
|
|
25
25
|
|
|
26
|
+
#: src/splent_io/splent_feature_github/templates/hooks/github_login_button.html:6
|
|
27
|
+
msgid "Continue with GitHub"
|
|
28
|
+
msgstr "Continuar con GitHub"
|
|
29
|
+
|
|
26
30
|
#: src/splent_io/splent_feature_github/templates/hooks/github_profile_row.html:18
|
|
27
31
|
msgid "Disconnect"
|
|
28
32
|
msgstr "Desconectar"
|
|
29
33
|
|
|
34
|
+
#: src/splent_io/splent_feature_github/templates/hooks/github_profile_row.html:24
|
|
35
|
+
msgid "Set a password to disconnect it"
|
|
36
|
+
msgstr "Establece una contraseña para desconectarla"
|
|
37
|
+
|
|
30
38
|
#: src/splent_io/splent_feature_github/templates/hooks/github_profile_row.html:33
|
|
31
39
|
msgid "Connect GitHub"
|
|
32
40
|
msgstr "Conectar GitHub"
|
|
33
41
|
|
|
34
|
-
msgid "Set a password to disconnect it"
|
|
35
|
-
msgstr "Establece una contraseña para desconectarla"
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Translations template for PROJECT.
|
|
2
|
+
# Copyright (C) 2026 ORGANIZATION
|
|
3
|
+
# This file is distributed under the same license as the PROJECT project.
|
|
4
|
+
# FIRST AUTHOR <EMAIL@ADDRESS>, 2026.
|
|
5
|
+
#
|
|
6
|
+
#, fuzzy
|
|
7
|
+
msgid ""
|
|
8
|
+
msgstr ""
|
|
9
|
+
"Project-Id-Version: PROJECT VERSION\n"
|
|
10
|
+
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
|
11
|
+
"POT-Creation-Date: 2026-10-31 02:14+0000\n"
|
|
12
|
+
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
|
13
|
+
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
14
|
+
"Language-Team: LANGUAGE <LL@li.org>\n"
|
|
15
|
+
"MIME-Version: 1.0\n"
|
|
16
|
+
"Content-Type: text/plain; charset=utf-8\n"
|
|
17
|
+
"Content-Transfer-Encoding: 8bit\n"
|
|
18
|
+
"Generated-By: Babel 2.18.0\n"
|
|
19
|
+
|
|
20
|
+
#: src/splent_io/splent_feature_github/services.py:53
|
|
21
|
+
#, python-format
|
|
22
|
+
msgid "%(provider)s did not say who you are. Please try again."
|
|
23
|
+
msgstr ""
|
|
24
|
+
|
|
25
|
+
#: src/splent_io/splent_feature_github/templates/hooks/github_login_button.html:6
|
|
26
|
+
msgid "Continue with GitHub"
|
|
27
|
+
msgstr ""
|
|
28
|
+
|
|
29
|
+
#: src/splent_io/splent_feature_github/templates/hooks/github_profile_row.html:18
|
|
30
|
+
msgid "Disconnect"
|
|
31
|
+
msgstr ""
|
|
32
|
+
|
|
33
|
+
#: src/splent_io/splent_feature_github/templates/hooks/github_profile_row.html:24
|
|
34
|
+
msgid "Set a password to disconnect it"
|
|
35
|
+
msgstr ""
|
|
36
|
+
|
|
37
|
+
#: src/splent_io/splent_feature_github/templates/hooks/github_profile_row.html:33
|
|
38
|
+
msgid "Connect GitHub"
|
|
39
|
+
msgstr ""
|
|
40
|
+
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
github feature configuration.
|
|
3
|
-
|
|
4
|
-
The OAuth app registered at https://github.com/settings/developers.
|
|
5
|
-
Without both values GitHub sign-in is off: the app logs a warning at start,
|
|
6
|
-
and whoever tries is told it is not available.
|
|
7
|
-
|
|
8
|
-
[tool.splent.config_schema] in pyproject.toml declares each one's type, the
|
|
9
|
-
secret among them. A framework that reads it (1.22.0 and later) resolves
|
|
10
|
-
them itself right after inject_config, and the product's value reaches
|
|
11
|
-
app.config as written, so services.py reads the scope with its default. An
|
|
12
|
-
older one leaves them to this module.
|
|
13
|
-
"""
|
|
14
|
-
|
|
15
|
-
import os
|
|
16
|
-
|
|
17
|
-
from splent_io.splent_feature_github.services import DEFAULT_SCOPE
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
def inject_config(app):
|
|
21
|
-
app.config.update(
|
|
22
|
-
{
|
|
23
|
-
"GITHUB_CLIENT_ID": os.getenv("GITHUB_CLIENT_ID", ""),
|
|
24
|
-
"GITHUB_CLIENT_SECRET": os.getenv("GITHUB_CLIENT_SECRET", ""),
|
|
25
|
-
"GITHUB_SCOPE": os.getenv("GITHUB_SCOPE", "").strip() or DEFAULT_SCOPE,
|
|
26
|
-
}
|
|
27
|
-
)
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
{# A section of profile's edit page (profile.edit.sections), below the
|
|
2
|
-
profile form. The login links to the account on GitHub. The disconnect
|
|
3
|
-
button opens identities' modal, which posts the provider and account id
|
|
4
|
-
it carries; for the only way the account signs in, a link to set a
|
|
5
|
-
password comes first. The colours are in assets/css/github.css, and the
|
|
6
|
-
mark is drawn in currentColor. #}
|
|
7
|
-
{% if identity %}
|
|
8
|
-
<div class="mb-4 profile-identity" data-identity="github">
|
|
9
|
-
<label class="form-label fw-semibold">GitHub</label>
|
|
10
|
-
<div class="form-control d-flex align-items-center gap-2 github-identity__field">
|
|
11
|
-
<svg class="github-mark" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
|
|
12
|
-
<path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v 3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/>
|
|
13
|
-
</svg>
|
|
14
|
-
{% if github_url %}
|
|
15
|
-
<a class="github-identity__value" href="{{ github_url }}" target="_blank" rel="noopener noreferrer">{{ identity.provider_username }}</a>
|
|
16
|
-
{% else %}
|
|
17
|
-
<span class="github-identity__value">{{ identity.provider_id }}</span>
|
|
18
|
-
{% endif %}
|
|
19
|
-
{% if can_disconnect %}
|
|
20
|
-
<button type="button" class="btn btn-sm p-0 github-identity__disconnect" title="{{ _('Disconnect') }}" aria-label="{{ _('Disconnect') }}" data-bs-toggle="modal" data-bs-target="#disconnectModal" data-provider="github" data-provider-id="{{ identity.provider_id }}">
|
|
21
|
-
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
|
|
22
|
-
<line x1="18" y1="6" x2="6" y2="18"></line>
|
|
23
|
-
<line x1="6" y1="6" x2="18" y2="18"></line>
|
|
24
|
-
</svg>
|
|
25
|
-
</button>
|
|
26
|
-
{% else %}
|
|
27
|
-
{# The only way the account signs in: a password of its own comes
|
|
28
|
-
first, on My account, and then it can be disconnected. #}
|
|
29
|
-
<a class="ms-auto small github-identity__set-password" href="{{ url_for('auth.my_account', _anchor='password') }}" data-set-password-first>{{ _('Set a password to disconnect it') }}</a>
|
|
30
|
-
{% endif %}
|
|
31
|
-
</div>
|
|
32
|
-
</div>
|
|
33
|
-
{% else %}
|
|
34
|
-
<div class="mb-4 profile-identity" data-identity="github">
|
|
35
|
-
<label class="form-label fw-semibold">GitHub</label>
|
|
36
|
-
<a href="{{ url_for('github.connect_github') }}" class="form-control text-decoration-none d-flex align-items-center gap-2 github-identity__field github-identity__connect">
|
|
37
|
-
<svg class="github-mark" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
|
|
38
|
-
<path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v 3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/>
|
|
39
|
-
</svg>
|
|
40
|
-
<span>{{ _('Connect GitHub') }}</span>
|
|
41
|
-
</a>
|
|
42
|
-
</div>
|
|
43
|
-
{% endif %}
|
|
Binary file
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|