diff --git a/authentik/outposts/tasks.py b/authentik/outposts/tasks.py
index 2682702360..73f3e92a42 100644
--- a/authentik/outposts/tasks.py
+++ b/authentik/outposts/tasks.py
@@ -222,28 +222,26 @@ def _outpost_single_update(outpost: Outpost, layer=None):
@actor
def outpost_connection_discovery():
"""Checks the local environment and create Service connections."""
- self: Task = CurrentTask.get_task()
- messages = []
+ self = CurrentTask.get_task()
if not CONFIG.get_bool("outposts.discover"):
- messages.append("Outpost integration discovery is disabled")
- self.set_status(TaskStatus.SUCCESSFUL, *messages)
+ self.info("Outpost integration discovery is disabled")
return
# Explicitly check against token filename, as that's
# only present when the integration is enabled
if Path(SERVICE_TOKEN_FILENAME).exists():
- messages.append("Detected in-cluster Kubernetes Config")
+ self.info("Detected in-cluster Kubernetes Config")
if not KubernetesServiceConnection.objects.filter(local=True).exists():
- messages.append("Created Service Connection for in-cluster")
+ self.info("Created Service Connection for in-cluster")
KubernetesServiceConnection.objects.create(
name="Local Kubernetes Cluster", local=True, kubeconfig={}
)
# For development, check for the existence of a kubeconfig file
kubeconfig_path = Path(KUBE_CONFIG_DEFAULT_LOCATION).expanduser()
if kubeconfig_path.exists():
- messages.append("Detected kubeconfig")
+ self.info("Detected kubeconfig")
kubeconfig_local_name = f"k8s-{gethostname()}"
if not KubernetesServiceConnection.objects.filter(name=kubeconfig_local_name).exists():
- messages.append("Creating kubeconfig Service Connection")
+ self.info("Creating kubeconfig Service Connection")
with kubeconfig_path.open("r", encoding="utf8") as _kubeconfig:
KubernetesServiceConnection.objects.create(
name=kubeconfig_local_name,
@@ -252,12 +250,11 @@ def outpost_connection_discovery():
unix_socket_path = urlparse(DEFAULT_UNIX_SOCKET).path
socket = Path(unix_socket_path)
if socket.exists() and access(socket, R_OK):
- messages.append("Detected local docker socket")
+ self.info("Detected local docker socket")
if len(DockerServiceConnection.objects.filter(local=True)) == 0:
- messages.append("Created Service Connection for docker")
+ self.info("Created Service Connection for docker")
DockerServiceConnection.objects.create(
name="Local Docker connection",
local=True,
url=unix_socket_path,
)
- self.set_status(TaskStatus.SUCCESSFUL, *messages)
diff --git a/authentik/root/settings.py b/authentik/root/settings.py
index e736bebf00..479311ab63 100644
--- a/authentik/root/settings.py
+++ b/authentik/root/settings.py
@@ -343,7 +343,9 @@ USE_TZ = True
LOCALE_PATHS = ["./locale"]
+
# Sentry integration
+
env = get_env()
_ERROR_REPORTING = CONFIG.get_bool("error_reporting.enabled", False)
if _ERROR_REPORTING:
@@ -466,10 +468,6 @@ try:
except ImportError:
pass
-# Import schedules after other apps since it relies on tasks and ScheduledModel being
-# registered for its startup.
-TENANT_APPS.append("authentik.tasks.schedules")
-
# Load subapps's settings
for _app in set(SHARED_APPS + TENANT_APPS):
@@ -478,5 +476,9 @@ for _app in set(SHARED_APPS + TENANT_APPS):
_update_settings(f"{_app}.settings")
_update_settings("data.user_settings")
+# Import schedules after other apps since it relies on tasks and ScheduledModel being
+# registered for its startup.
+TENANT_APPS.append("authentik.tasks.schedules")
+
SHARED_APPS = list(OrderedDict.fromkeys(SHARED_APPS + TENANT_APPS))
INSTALLED_APPS = list(OrderedDict.fromkeys(SHARED_APPS + TENANT_APPS))
diff --git a/authentik/tasks/apps.py b/authentik/tasks/apps.py
index 11b1fc6ba9..993390445a 100644
--- a/authentik/tasks/apps.py
+++ b/authentik/tasks/apps.py
@@ -1,4 +1,5 @@
import dramatiq
+from django.conf import settings
from dramatiq.broker import Broker, get_broker
from dramatiq.encoder import PickleEncoder
from dramatiq.middleware import (
diff --git a/authentik/tasks/schedules/apps.py b/authentik/tasks/schedules/apps.py
index 9cb8775556..fa12d47919 100644
--- a/authentik/tasks/schedules/apps.py
+++ b/authentik/tasks/schedules/apps.py
@@ -1,6 +1,7 @@
from authentik.blueprints.apps import ManagedAppConfig
from authentik.lib.utils.reflection import get_apps
from authentik.tasks.schedules.lib import ScheduleSpec
+from django.conf import settings
class AuthentikTasksSchedulesConfig(ManagedAppConfig):
diff --git a/blueprints/schema.json b/blueprints/schema.json
index b6a32ad704..4c2ec2aa99 100644
--- a/blueprints/schema.json
+++ b/blueprints/schema.json
@@ -7503,13 +7503,11 @@
"authentik_events.delete_notificationrule",
"authentik_events.delete_notificationtransport",
"authentik_events.delete_notificationwebhookmapping",
- "authentik_events.run_task",
"authentik_events.view_event",
"authentik_events.view_notification",
"authentik_events.view_notificationrule",
"authentik_events.view_notificationtransport",
"authentik_events.view_notificationwebhookmapping",
- "authentik_events.view_systemtask",
"authentik_flows.add_flow",
"authentik_flows.add_flowstagebinding",
"authentik_flows.add_flowtoken",
@@ -14241,13 +14239,11 @@
"authentik_events.delete_notificationrule",
"authentik_events.delete_notificationtransport",
"authentik_events.delete_notificationwebhookmapping",
- "authentik_events.run_task",
"authentik_events.view_event",
"authentik_events.view_notification",
"authentik_events.view_notificationrule",
"authentik_events.view_notificationtransport",
"authentik_events.view_notificationwebhookmapping",
- "authentik_events.view_systemtask",
"authentik_flows.add_flow",
"authentik_flows.add_flowstagebinding",
"authentik_flows.add_flowtoken",
diff --git a/schema.yml b/schema.yml
index 598228e281..117bdb3264 100644
--- a/schema.yml
+++ b/schema.yml
@@ -347,35 +347,6 @@ paths:
schema:
$ref: '#/components/schemas/GenericError'
description: ''
- /admin/workers/:
- get:
- operationId: admin_workers_list
- description: Get currently connected worker count.
- tags:
- - admin
- security:
- - authentik: []
- responses:
- '200':
- content:
- application/json:
- schema:
- type: array
- items:
- $ref: '#/components/schemas/Worker'
- description: ''
- '400':
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationError'
- description: ''
- '403':
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/GenericError'
- description: ''
/authenticators/admin/all/:
get:
operationId: authenticators_admin_all_list
@@ -8123,145 +8094,6 @@ paths:
schema:
$ref: '#/components/schemas/GenericError'
description: ''
- /events/system_tasks/:
- get:
- operationId: events_system_tasks_list
- description: Read-only view set that returns all background tasks
- parameters:
- - in: query
- name: name
- schema:
- type: string
- - name: ordering
- required: false
- in: query
- description: Which field to use when ordering the results.
- schema:
- type: string
- - name: page
- required: false
- in: query
- description: A page number within the paginated result set.
- schema:
- type: integer
- - name: page_size
- required: false
- in: query
- description: Number of results to return per page.
- schema:
- type: integer
- - name: search
- required: false
- in: query
- description: A search term.
- schema:
- type: string
- - in: query
- name: status
- schema:
- type: string
- enum:
- - error
- - successful
- - unknown
- - warning
- - in: query
- name: uid
- schema:
- type: string
- tags:
- - events
- security:
- - authentik: []
- responses:
- '200':
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/PaginatedSystemTaskList'
- description: ''
- '400':
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationError'
- description: ''
- '403':
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/GenericError'
- description: ''
- /events/system_tasks/{uuid}/:
- get:
- operationId: events_system_tasks_retrieve
- description: Read-only view set that returns all background tasks
- parameters:
- - in: path
- name: uuid
- schema:
- type: string
- format: uuid
- description: A UUID string identifying this System Task.
- required: true
- tags:
- - events
- security:
- - authentik: []
- responses:
- '200':
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/SystemTask'
- description: ''
- '400':
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationError'
- description: ''
- '403':
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/GenericError'
- description: ''
- /events/system_tasks/{uuid}/run/:
- post:
- operationId: events_system_tasks_run_create
- description: Run task
- parameters:
- - in: path
- name: uuid
- schema:
- type: string
- format: uuid
- description: A UUID string identifying this System Task.
- required: true
- tags:
- - events
- security:
- - authentik: []
- responses:
- '204':
- description: Task retried successfully
- '404':
- description: Task not found
- '500':
- description: Failed to retry task
- '400':
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationError'
- description: ''
- '403':
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/GenericError'
- description: ''
/events/transports/:
get:
operationId: events_transports_list
@@ -19699,8 +19531,6 @@ paths:
schema:
$ref: '#/components/schemas/SyncStatus'
description: ''
- '404':
- description: Task not found
'400':
content:
application/json:
@@ -20742,8 +20572,6 @@ paths:
schema:
$ref: '#/components/schemas/SyncStatus'
description: ''
- '404':
- description: Task not found
'400':
content:
application/json:
@@ -23277,8 +23105,6 @@ paths:
schema:
$ref: '#/components/schemas/SyncStatus'
description: ''
- '404':
- description: Task not found
'400':
content:
application/json:
@@ -40901,10 +40727,6 @@ paths:
name: queue_name
schema:
type: string
- - in: query
- name: schedule_uid
- schema:
- type: string
- name: search
required: false
in: query
@@ -47741,14 +47563,8 @@ components:
is_running:
type: boolean
readOnly: true
- tasks:
- type: array
- items:
- $ref: '#/components/schemas/SystemTask'
- readOnly: true
required:
- is_running
- - tasks
KubernetesServiceConnection:
type: object
description: KubernetesServiceConnection Serializer
@@ -51645,18 +51461,6 @@ components:
required:
- pagination
- results
- PaginatedSystemTaskList:
- type: object
- properties:
- pagination:
- $ref: '#/components/schemas/Pagination'
- results:
- type: array
- items:
- $ref: '#/components/schemas/SystemTask'
- required:
- - pagination
- - results
PaginatedTOTPDeviceList:
type: object
properties:
@@ -59997,14 +59801,8 @@ components:
is_running:
type: boolean
readOnly: true
- tasks:
- type: array
- items:
- $ref: '#/components/schemas/SystemTask'
- readOnly: true
required:
- is_running
- - tasks
SystemInfo:
type: object
description: Get system information.
@@ -60080,65 +59878,6 @@ components:
- http_is_secure
- runtime
- server_time
- SystemTask:
- type: object
- description: Serialize TaskInfo and TaskResult
- properties:
- uuid:
- type: string
- format: uuid
- readOnly: true
- name:
- type: string
- full_name:
- type: string
- description: Get full name with UID
- readOnly: true
- uid:
- type: string
- description:
- type: string
- start_timestamp:
- type: string
- format: date-time
- readOnly: true
- finish_timestamp:
- type: string
- format: date-time
- readOnly: true
- duration:
- type: number
- format: double
- readOnly: true
- status:
- $ref: '#/components/schemas/SystemTaskStatusEnum'
- messages:
- type: array
- items:
- $ref: '#/components/schemas/LogEvent'
- expires:
- type: string
- format: date-time
- nullable: true
- expiring:
- type: boolean
- required:
- - description
- - duration
- - finish_timestamp
- - full_name
- - messages
- - name
- - start_timestamp
- - status
- - uuid
- SystemTaskStatusEnum:
- enum:
- - unknown
- - successful
- - warning
- - error
- type: string
TOTPDevice:
type: object
description: Serializer for totp authenticator devices
@@ -60190,10 +59929,9 @@ components:
type: string
format: date-time
description: Task last modified time
- schedule_uid:
- type: string
uid:
type: string
+ readOnly: true
messages:
type: array
items:
@@ -60201,6 +59939,7 @@ components:
required:
- actor_name
- messages
+ - uid
Tenant:
type: object
description: Tenant Serializer
@@ -61848,19 +61587,6 @@ components:
required:
- aaguid
- description
- Worker:
- type: object
- properties:
- worker_id:
- type: string
- version:
- type: string
- version_matching:
- type: boolean
- required:
- - version
- - version_matching
- - worker_id
modelRequest:
oneOf:
- $ref: '#/components/schemas/GoogleWorkspaceProviderRequest'
diff --git a/web/src/admin/Routes.ts b/web/src/admin/Routes.ts
index 88fb143ca3..ee21d270d5 100644
--- a/web/src/admin/Routes.ts
+++ b/web/src/admin/Routes.ts
@@ -16,10 +16,10 @@ export const ROUTES: Route[] = [
await import("@goauthentik/admin/admin-overview/DashboardUserPage");
return html`
${part}`)}`,
- html`