core: remove old templates
This commit is contained in:
parent
ca223fa4df
commit
d35f524865
|
@ -1,53 +0,0 @@
|
||||||
{% load i18n %}
|
|
||||||
|
|
||||||
<main role="main" class="pf-c-page__main" tabindex="-1" id="main-content">
|
|
||||||
<section class="pf-c-page__main-section pf-m-light">
|
|
||||||
<div class="pf-c-content">
|
|
||||||
<h1>
|
|
||||||
<i class="pf-icon pf-icon-applications"></i>
|
|
||||||
{% trans 'Applications' %}
|
|
||||||
</h1>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<section class="pf-c-page__main-section">
|
|
||||||
{% if applications %}
|
|
||||||
<div class="pf-l-gallery pf-m-gutter">
|
|
||||||
{% for app in applications %}
|
|
||||||
<a href="{{ app.get_launch_url }}" class="pf-c-card pf-m-hoverable pf-m-compact ak-root-link">
|
|
||||||
<div class="pf-c-card__header">
|
|
||||||
{% if app.meta_icon %}
|
|
||||||
<img class="app-icon pf-c-avatar" src="{{ app.meta_icon.url }}" alt="{% trans 'Application Icon' %}">
|
|
||||||
{% else %}
|
|
||||||
<i class="pf-icon pf-icon-arrow"></i>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
<div class="pf-c-card__title">
|
|
||||||
<p id="card-1-check-label">{{ app.name }}</p>
|
|
||||||
<div class="pf-c-content">
|
|
||||||
<small>{{ app.meta_publisher }}</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="pf-c-card__body">
|
|
||||||
{% trans app.meta_description|truncatewords:35 %}
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
{% else %}
|
|
||||||
<div class="pf-c-empty-state pf-m-full-height">
|
|
||||||
<div class="pf-c-empty-state__content">
|
|
||||||
<i class="fas fa-cubes pf-c-empty-state__icon" aria-hidden="true"></i>
|
|
||||||
<h1 class="pf-c-title pf-m-lg">{% trans 'No Applications available.' %}</h1>
|
|
||||||
<div class="pf-c-empty-state__body">
|
|
||||||
{% trans "Either no applications are defined, or you don't have access to any." %}
|
|
||||||
</div>
|
|
||||||
{% if perms.authentik_core.add_application %}
|
|
||||||
<a href="{% url 'authentik_admin:application-create' %}" class="pf-c-button pf-m-primary" type="button">
|
|
||||||
{% trans 'Create Application' %}
|
|
||||||
</a>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
</section>
|
|
||||||
</main>
|
|
|
@ -1,42 +0,0 @@
|
||||||
{% load i18n %}
|
|
||||||
{% load authentik_utils %}
|
|
||||||
|
|
||||||
<div class="pf-c-toolbar__item pf-m-pagination ">
|
|
||||||
<div class="pf-c-pagination pf-m-compact pf-m-hidden pf-m-visible-on-md">
|
|
||||||
<div class="pf-c-pagination pf-m-compact pf-m-compact pf-m-hidden pf-m-visible-on-md">
|
|
||||||
<div class="pf-c-options-menu">
|
|
||||||
<div class="pf-c-options-menu__toggle pf-m-text pf-m-plain">
|
|
||||||
<span class="pf-c-options-menu__toggle-text">
|
|
||||||
{% blocktrans with start_index=page_obj.start_index end_index=page_obj.end_index total_items=paginator.count %}
|
|
||||||
{{ start_index }} - {{ end_index }} of {{ total_items }}
|
|
||||||
{% endblocktrans %}
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<nav class="pf-c-pagination__nav" aria-label="Pagination">
|
|
||||||
<div class="pf-c-pagination__nav-control pf-m-prev">
|
|
||||||
<a class="pf-c-button pf-m-plain"
|
|
||||||
{% if page_obj.has_previous %}
|
|
||||||
href="{{ request.path }}?{% query_transform page=page_obj.previous_page_number %}"
|
|
||||||
{% else %}
|
|
||||||
disabled
|
|
||||||
{% endif %}
|
|
||||||
aria-label="{% trans 'Go to previous page' %}">
|
|
||||||
<i class="fas fa-angle-left" aria-hidden="true"></i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div class="pf-c-pagination__nav-control pf-m-next">
|
|
||||||
<a class="pf-c-button pf-m-plain"
|
|
||||||
{% if page_obj.has_next %}
|
|
||||||
href="{{ request.path }}?{% query_transform page=page_obj.next_page_number %}"
|
|
||||||
{% else %}
|
|
||||||
disabled
|
|
||||||
{% endif %}
|
|
||||||
aria-label="{% trans 'Go to next page' %}">
|
|
||||||
<i class="fas fa-angle-right" aria-hidden="true"></i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
|
@ -1,13 +0,0 @@
|
||||||
|
|
||||||
<div class="pf-c-toolbar__group pf-m-filter-group">
|
|
||||||
<div class="pf-c-toolbar__item pf-m-search-filter">
|
|
||||||
<form class="pf-c-input-group" method="GET">
|
|
||||||
{# include page data for pagination #}
|
|
||||||
<input type="hidden" name="page" value="{{ page_obj.number }}">
|
|
||||||
<input class="pf-c-form-control" name="search" type="search" placeholder="Search..." value="{{ request.GET.search }}">
|
|
||||||
<button class="pf-c-button pf-m-control" type="submit">
|
|
||||||
<i class="fas fa-search" aria-hidden="true"></i>
|
|
||||||
</button>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
|
@ -1,100 +0,0 @@
|
||||||
{% load i18n %}
|
|
||||||
|
|
||||||
<div class="pf-c-card">
|
|
||||||
<div class="pf-c-card__header pf-c-title pf-m-md">
|
|
||||||
<p>{% trans "Tokens can be used to access authentik's API." %}</p>
|
|
||||||
</div>
|
|
||||||
{% if object_list %}
|
|
||||||
<div class="pf-c-toolbar">
|
|
||||||
<div class="pf-c-toolbar__content">
|
|
||||||
{% include 'partials/toolbar_search.html' %}
|
|
||||||
<div class="pf-c-toolbar__bulk-select">
|
|
||||||
<ak-modal-button href="{% url 'authentik_core:user-tokens-create' %}">
|
|
||||||
<ak-spinner-button slot="trigger" class="pf-m-primary">
|
|
||||||
{% trans 'Create' %}
|
|
||||||
</ak-spinner-button>
|
|
||||||
<div slot="modal"></div>
|
|
||||||
</ak-modal-button>
|
|
||||||
</div>
|
|
||||||
{% include 'partials/pagination.html' %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<table class="pf-c-table pf-m-compact pf-m-grid-xl" role="grid">
|
|
||||||
<thead>
|
|
||||||
<tr role="row">
|
|
||||||
<th role="columnheader" scope="col">{% trans 'Identifier' %}</th>
|
|
||||||
<th role="columnheader" scope="col">{% trans 'Expires?' %}</th>
|
|
||||||
<th role="columnheader" scope="col">{% trans 'Expiry Date' %}</th>
|
|
||||||
<th role="columnheader" scope="col">{% trans 'Description' %}</th>
|
|
||||||
<th role="cell"></th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody role="rowgroup">
|
|
||||||
{% for token in object_list %}
|
|
||||||
<tr role="row">
|
|
||||||
<th role="columnheader">
|
|
||||||
<div>{{ token.identifier }}</div>
|
|
||||||
</th>
|
|
||||||
<td role="cell">
|
|
||||||
<span>
|
|
||||||
{{ token.expiring|yesno:"Yes,No" }}
|
|
||||||
</span>
|
|
||||||
</td>
|
|
||||||
<td role="cell">
|
|
||||||
<span>
|
|
||||||
{% if not token.expiring %}
|
|
||||||
-
|
|
||||||
{% else %}
|
|
||||||
{{ token.expires }}
|
|
||||||
{% endif %}
|
|
||||||
</span>
|
|
||||||
</td>
|
|
||||||
<td role="cell">
|
|
||||||
<span>
|
|
||||||
{{ token.description }}
|
|
||||||
</span>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<ak-modal-button href="{% url 'authentik_core:user-tokens-update' identifier=token.identifier %}">
|
|
||||||
<ak-spinner-button slot="trigger" class="pf-m-secondary">
|
|
||||||
{% trans 'Edit' %}
|
|
||||||
</ak-spinner-button>
|
|
||||||
<div slot="modal"></div>
|
|
||||||
</ak-modal-button>
|
|
||||||
<ak-modal-button href="{% url 'authentik_core:user-tokens-delete' identifier=token.identifier %}">
|
|
||||||
<ak-spinner-button slot="trigger" class="pf-m-danger">
|
|
||||||
{% trans 'Delete' %}
|
|
||||||
</ak-spinner-button>
|
|
||||||
<div slot="modal"></div>
|
|
||||||
</ak-modal-button>
|
|
||||||
<ak-token-copy-button identifier="{{ token.identifier }}">
|
|
||||||
{% trans 'Copy token' %}
|
|
||||||
</ak-token-copy-button>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
<div class="pf-c-pagination pf-m-bottom">
|
|
||||||
{% include 'partials/pagination.html' %}
|
|
||||||
</div>
|
|
||||||
{% else %}
|
|
||||||
<div class="pf-c-empty-state">
|
|
||||||
<div class="pf-c-empty-state__content">
|
|
||||||
<i class="fas fa-cubes pf-c-empty-state__icon" aria-hidden="true"></i>
|
|
||||||
<h1 class="pf-c-title pf-m-lg">
|
|
||||||
{% trans 'No Tokens.' %}
|
|
||||||
</h1>
|
|
||||||
<div class="pf-c-empty-state__body">
|
|
||||||
{% trans 'Currently no tokens exist. Click the button below to create one.' %}
|
|
||||||
</div>
|
|
||||||
<ak-modal-button href="{% url 'authentik_core:user-tokens-create' %}">
|
|
||||||
<ak-spinner-button slot="trigger" class="pf-m-primary">
|
|
||||||
{% trans 'Create' %}
|
|
||||||
</ak-spinner-button>
|
|
||||||
<div slot="modal"></div>
|
|
||||||
</ak-modal-button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
|
@ -1,7 +1,7 @@
|
||||||
"""authentik URL Configuration"""
|
"""authentik URL Configuration"""
|
||||||
from django.urls import path
|
from django.urls import path
|
||||||
|
|
||||||
from authentik.core.views import impersonate, library, shell, user
|
from authentik.core.views import impersonate, shell, user
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path("", shell.ShellView.as_view(), name="shell"),
|
path("", shell.ShellView.as_view(), name="shell"),
|
||||||
|
@ -23,8 +23,6 @@ urlpatterns = [
|
||||||
user.TokenDeleteView.as_view(),
|
user.TokenDeleteView.as_view(),
|
||||||
name="user-tokens-delete",
|
name="user-tokens-delete",
|
||||||
),
|
),
|
||||||
# Libray
|
|
||||||
path("library", library.LibraryView.as_view(), name="overview"),
|
|
||||||
# Impersonation
|
# Impersonation
|
||||||
path(
|
path(
|
||||||
"-/impersonation/<int:user_id>/",
|
"-/impersonation/<int:user_id>/",
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
"""authentik library view"""
|
|
||||||
|
|
||||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
|
||||||
from django.views.generic import TemplateView
|
|
||||||
|
|
||||||
from authentik.core.models import Application
|
|
||||||
from authentik.policies.engine import PolicyEngine
|
|
||||||
|
|
||||||
|
|
||||||
class LibraryView(LoginRequiredMixin, TemplateView):
|
|
||||||
"""Overview for logged in user, incase user opens authentik directly
|
|
||||||
and is not being forwarded"""
|
|
||||||
|
|
||||||
template_name = "library.html"
|
|
||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
|
||||||
kwargs["applications"] = []
|
|
||||||
for application in Application.objects.all().order_by("name"):
|
|
||||||
engine = PolicyEngine(application, self.request.user, self.request)
|
|
||||||
engine.build()
|
|
||||||
if engine.passing:
|
|
||||||
kwargs["applications"].append(application)
|
|
||||||
return super().get_context_data(**kwargs)
|
|
|
@ -65,7 +65,8 @@ class ChallengeStageView(StageView):
|
||||||
|
|
||||||
def get(self, request: HttpRequest, *args, **kwargs) -> HttpResponse:
|
def get(self, request: HttpRequest, *args, **kwargs) -> HttpResponse:
|
||||||
challenge = self.get_challenge(*args, **kwargs)
|
challenge = self.get_challenge(*args, **kwargs)
|
||||||
challenge.initial_data["title"] = self.executor.flow.title
|
if "title" not in challenge.initial_data:
|
||||||
|
challenge.initial_data["title"] = self.executor.flow.title
|
||||||
if not challenge.is_valid():
|
if not challenge.is_valid():
|
||||||
LOGGER.warning(challenge.errors)
|
LOGGER.warning(challenge.errors)
|
||||||
return HttpChallengeResponse(challenge)
|
return HttpChallengeResponse(challenge)
|
||||||
|
|
|
@ -103,7 +103,7 @@ class TestIdentificationStage(TestCase):
|
||||||
self.assertJSONEqual(
|
self.assertJSONEqual(
|
||||||
force_str(response.content),
|
force_str(response.content),
|
||||||
{
|
{
|
||||||
"type": ChallengeTypes.native,
|
"type": ChallengeTypes.native.value,
|
||||||
"component": "ak-stage-identification",
|
"component": "ak-stage-identification",
|
||||||
"input_type": "email",
|
"input_type": "email",
|
||||||
"enroll_url": "/flows/unique-enrollment-string/",
|
"enroll_url": "/flows/unique-enrollment-string/",
|
||||||
|
@ -142,7 +142,7 @@ class TestIdentificationStage(TestCase):
|
||||||
self.assertJSONEqual(
|
self.assertJSONEqual(
|
||||||
force_str(response.content),
|
force_str(response.content),
|
||||||
{
|
{
|
||||||
"type": ChallengeTypes.native,
|
"type": ChallengeTypes.native.value,
|
||||||
"component": "ak-stage-identification",
|
"component": "ak-stage-identification",
|
||||||
"input_type": "email",
|
"input_type": "email",
|
||||||
"recovery_url": "/flows/unique-recovery-string/",
|
"recovery_url": "/flows/unique-recovery-string/",
|
||||||
|
|
|
@ -21,7 +21,7 @@ export class AutosubmitStage extends BaseStage {
|
||||||
}
|
}
|
||||||
|
|
||||||
updated(): void {
|
updated(): void {
|
||||||
this.shadowRoot?.querySelectorAll("form").forEach((form) => {form.submit()});
|
this.shadowRoot?.querySelectorAll("form").forEach((form) => {form.submit();});
|
||||||
}
|
}
|
||||||
|
|
||||||
render(): TemplateResult {
|
render(): TemplateResult {
|
||||||
|
|
Reference in New Issue