From 0b00768b843ed98b83f763af5c98b3f2fcbe0cb0 Mon Sep 17 00:00:00 2001 From: Jens Langhammer Date: Tue, 14 Dec 2021 16:13:05 +0100 Subject: [PATCH] events: add flow_execution event type Signed-off-by: Jens Langhammer --- ...alter_notificationtransport_webhook_url.py | 287 +----------------- authentik/events/models.py | 1 + authentik/flows/views/executor.py | 6 + ...ed_0018_alter_eventmatcherpolicy_action.py | 1 + schema.yml | 2 + web/src/locales/en.po | 4 + web/src/locales/fr_FR.po | 4 + web/src/locales/pseudo-LOCALE.po | 4 + web/src/pages/events/utils.ts | 2 + 9 files changed, 25 insertions(+), 286 deletions(-) diff --git a/authentik/events/migrations/0001_squashed_0019_alter_notificationtransport_webhook_url.py b/authentik/events/migrations/0001_squashed_0019_alter_notificationtransport_webhook_url.py index 10a3a04aa..57996d3bc 100644 --- a/authentik/events/migrations/0001_squashed_0019_alter_notificationtransport_webhook_url.py +++ b/authentik/events/migrations/0001_squashed_0019_alter_notificationtransport_webhook_url.py @@ -314,169 +314,10 @@ class Migration(migrations.Migration): old_name="user_json", new_name="user", ), - migrations.AlterField( - model_name="event", - name="action", - field=models.TextField( - choices=[ - ("login", "Login"), - ("login_failed", "Login Failed"), - ("logout", "Logout"), - ("sign_up", "Sign Up"), - ("authorize_application", "Authorize Application"), - ("suspicious_request", "Suspicious Request"), - ("password_set", "Password Set"), - ("invitation_created", "Invite Created"), - ("invitation_used", "Invite Used"), - ("source_linked", "Source Linked"), - ("impersonation_started", "Impersonation Started"), - ("impersonation_ended", "Impersonation Ended"), - ("model_created", "Model Created"), - ("model_updated", "Model Updated"), - ("model_deleted", "Model Deleted"), - ("custom_", "Custom Prefix"), - ] - ), - ), - migrations.AlterField( - model_name="event", - name="action", - field=models.TextField( - choices=[ - ("login", "Login"), - ("login_failed", "Login Failed"), - ("logout", "Logout"), - ("user_write", "User Write"), - ("suspicious_request", "Suspicious Request"), - ("password_set", "Password Set"), - ("invitation_created", "Invite Created"), - ("invitation_used", "Invite Used"), - ("authorize_application", "Authorize Application"), - ("source_linked", "Source Linked"), - ("impersonation_started", "Impersonation Started"), - ("impersonation_ended", "Impersonation Ended"), - ("model_created", "Model Created"), - ("model_updated", "Model Updated"), - ("model_deleted", "Model Deleted"), - ("custom_", "Custom Prefix"), - ] - ), - ), migrations.RemoveField( model_name="event", name="date", ), - migrations.AlterField( - model_name="event", - name="action", - field=models.TextField( - choices=[ - ("login", "Login"), - ("login_failed", "Login Failed"), - ("logout", "Logout"), - ("user_write", "User Write"), - ("suspicious_request", "Suspicious Request"), - ("password_set", "Password Set"), - ("token_view", "Token View"), - ("invitation_created", "Invite Created"), - ("invitation_used", "Invite Used"), - ("authorize_application", "Authorize Application"), - ("source_linked", "Source Linked"), - ("impersonation_started", "Impersonation Started"), - ("impersonation_ended", "Impersonation Ended"), - ("model_created", "Model Created"), - ("model_updated", "Model Updated"), - ("model_deleted", "Model Deleted"), - ("custom_", "Custom Prefix"), - ] - ), - ), - migrations.AlterField( - model_name="event", - name="action", - field=models.TextField( - choices=[ - ("login", "Login"), - ("login_failed", "Login Failed"), - ("logout", "Logout"), - ("user_write", "User Write"), - ("suspicious_request", "Suspicious Request"), - ("password_set", "Password Set"), - ("token_view", "Token View"), - ("invitation_created", "Invite Created"), - ("invitation_used", "Invite Used"), - ("authorize_application", "Authorize Application"), - ("source_linked", "Source Linked"), - ("impersonation_started", "Impersonation Started"), - ("impersonation_ended", "Impersonation Ended"), - ("policy_execution", "Policy Execution"), - ("policy_exception", "Policy Exception"), - ("property_mapping_exception", "Property Mapping Exception"), - ("model_created", "Model Created"), - ("model_updated", "Model Updated"), - ("model_deleted", "Model Deleted"), - ("custom_", "Custom Prefix"), - ] - ), - ), - migrations.AlterField( - model_name="event", - name="action", - field=models.TextField( - choices=[ - ("login", "Login"), - ("login_failed", "Login Failed"), - ("logout", "Logout"), - ("user_write", "User Write"), - ("suspicious_request", "Suspicious Request"), - ("password_set", "Password Set"), - ("token_view", "Token View"), - ("invitation_created", "Invite Created"), - ("invitation_used", "Invite Used"), - ("authorize_application", "Authorize Application"), - ("source_linked", "Source Linked"), - ("impersonation_started", "Impersonation Started"), - ("impersonation_ended", "Impersonation Ended"), - ("policy_execution", "Policy Execution"), - ("policy_exception", "Policy Exception"), - ("property_mapping_exception", "Property Mapping Exception"), - ("model_created", "Model Created"), - ("model_updated", "Model Updated"), - ("model_deleted", "Model Deleted"), - ("update_available", "Update Available"), - ("custom_", "Custom Prefix"), - ] - ), - ), - migrations.AlterField( - model_name="event", - name="action", - field=models.TextField( - choices=[ - ("login", "Login"), - ("login_failed", "Login Failed"), - ("logout", "Logout"), - ("user_write", "User Write"), - ("suspicious_request", "Suspicious Request"), - ("password_set", "Password Set"), - ("token_view", "Token View"), - ("invitation_used", "Invite Used"), - ("authorize_application", "Authorize Application"), - ("source_linked", "Source Linked"), - ("impersonation_started", "Impersonation Started"), - ("impersonation_ended", "Impersonation Ended"), - ("policy_execution", "Policy Execution"), - ("policy_exception", "Policy Exception"), - ("property_mapping_exception", "Property Mapping Exception"), - ("configuration_error", "Configuration Error"), - ("model_created", "Model Created"), - ("model_updated", "Model Updated"), - ("model_deleted", "Model Deleted"), - ("update_available", "Update Available"), - ("custom_", "Custom Prefix"), - ] - ), - ), migrations.CreateModel( name="NotificationTransport", fields=[ @@ -610,68 +451,6 @@ class Migration(migrations.Migration): help_text="Only send notification once, for example when sending a webhook into a chat channel.", ), ), - migrations.AlterField( - model_name="event", - name="action", - field=models.TextField( - choices=[ - ("login", "Login"), - ("login_failed", "Login Failed"), - ("logout", "Logout"), - ("user_write", "User Write"), - ("suspicious_request", "Suspicious Request"), - ("password_set", "Password Set"), - ("token_view", "Token View"), - ("invitation_used", "Invite Used"), - ("authorize_application", "Authorize Application"), - ("source_linked", "Source Linked"), - ("impersonation_started", "Impersonation Started"), - ("impersonation_ended", "Impersonation Ended"), - ("policy_execution", "Policy Execution"), - ("policy_exception", "Policy Exception"), - ("property_mapping_exception", "Property Mapping Exception"), - ("system_task_execution", "System Task Execution"), - ("system_task_exception", "System Task Exception"), - ("configuration_error", "Configuration Error"), - ("model_created", "Model Created"), - ("model_updated", "Model Updated"), - ("model_deleted", "Model Deleted"), - ("update_available", "Update Available"), - ("custom_", "Custom Prefix"), - ] - ), - ), - migrations.AlterField( - model_name="event", - name="action", - field=models.TextField( - choices=[ - ("login", "Login"), - ("login_failed", "Login Failed"), - ("logout", "Logout"), - ("user_write", "User Write"), - ("suspicious_request", "Suspicious Request"), - ("password_set", "Password Set"), - ("secret_view", "Secret View"), - ("invitation_used", "Invite Used"), - ("authorize_application", "Authorize Application"), - ("source_linked", "Source Linked"), - ("impersonation_started", "Impersonation Started"), - ("impersonation_ended", "Impersonation Ended"), - ("policy_execution", "Policy Execution"), - ("policy_exception", "Policy Exception"), - ("property_mapping_exception", "Property Mapping Exception"), - ("system_task_execution", "System Task Execution"), - ("system_task_exception", "System Task Exception"), - ("configuration_error", "Configuration Error"), - ("model_created", "Model Created"), - ("model_updated", "Model Updated"), - ("model_deleted", "Model Deleted"), - ("update_available", "Update Available"), - ("custom_", "Custom Prefix"), - ] - ), - ), migrations.RunPython( code=token_view_to_secret_view, ), @@ -688,76 +467,11 @@ class Migration(migrations.Migration): migrations.RunPython( code=update_expires, ), - migrations.AlterField( - model_name="event", - name="action", - field=models.TextField( - choices=[ - ("login", "Login"), - ("login_failed", "Login Failed"), - ("logout", "Logout"), - ("user_write", "User Write"), - ("suspicious_request", "Suspicious Request"), - ("password_set", "Password Set"), - ("secret_view", "Secret View"), - ("invitation_used", "Invite Used"), - ("authorize_application", "Authorize Application"), - ("source_linked", "Source Linked"), - ("impersonation_started", "Impersonation Started"), - ("impersonation_ended", "Impersonation Ended"), - ("policy_execution", "Policy Execution"), - ("policy_exception", "Policy Exception"), - ("property_mapping_exception", "Property Mapping Exception"), - ("system_task_execution", "System Task Execution"), - ("system_task_exception", "System Task Exception"), - ("configuration_error", "Configuration Error"), - ("model_created", "Model Created"), - ("model_updated", "Model Updated"), - ("model_deleted", "Model Deleted"), - ("email_sent", "Email Sent"), - ("update_available", "Update Available"), - ("custom_", "Custom Prefix"), - ] - ), - ), migrations.AddField( model_name="event", name="tenant", field=models.JSONField(blank=True, default=authentik.events.models.default_tenant), ), - migrations.AlterField( - model_name="event", - name="action", - field=models.TextField( - choices=[ - ("login", "Login"), - ("login_failed", "Login Failed"), - ("logout", "Logout"), - ("user_write", "User Write"), - ("suspicious_request", "Suspicious Request"), - ("password_set", "Password Set"), - ("secret_view", "Secret View"), - ("invitation_used", "Invite Used"), - ("authorize_application", "Authorize Application"), - ("source_linked", "Source Linked"), - ("impersonation_started", "Impersonation Started"), - ("impersonation_ended", "Impersonation Ended"), - ("policy_execution", "Policy Execution"), - ("policy_exception", "Policy Exception"), - ("property_mapping_exception", "Property Mapping Exception"), - ("system_task_execution", "System Task Execution"), - ("system_task_exception", "System Task Exception"), - ("system_exception", "System Exception"), - ("configuration_error", "Configuration Error"), - ("model_created", "Model Created"), - ("model_updated", "Model Updated"), - ("model_deleted", "Model Deleted"), - ("email_sent", "Email Sent"), - ("update_available", "Update Available"), - ("custom_", "Custom Prefix"), - ] - ), - ), migrations.AlterField( model_name="event", name="action", @@ -776,6 +490,7 @@ class Migration(migrations.Migration): ("source_linked", "Source Linked"), ("impersonation_started", "Impersonation Started"), ("impersonation_ended", "Impersonation Ended"), + ("flow_execution", "Flow Execution"), ("policy_execution", "Policy Execution"), ("policy_exception", "Policy Exception"), ("property_mapping_exception", "Property Mapping Exception"), diff --git a/authentik/events/models.py b/authentik/events/models.py index a2aa89680..79df70289 100644 --- a/authentik/events/models.py +++ b/authentik/events/models.py @@ -70,6 +70,7 @@ class EventAction(models.TextChoices): IMPERSONATION_STARTED = "impersonation_started" IMPERSONATION_ENDED = "impersonation_ended" + FLOW_EXECUTION = "flow_execution" POLICY_EXECUTION = "policy_execution" POLICY_EXCEPTION = "policy_exception" PROPERTY_MAPPING_EXCEPTION = "property_mapping_exception" diff --git a/authentik/flows/views/executor.py b/authentik/flows/views/executor.py index d0b3313ce..1e789ac17 100644 --- a/authentik/flows/views/executor.py +++ b/authentik/flows/views/executor.py @@ -371,6 +371,12 @@ class FlowExecutorView(APIView): NEXT_ARG_NAME, "authentik_core:root-redirect" ) self.cancel() + Event.new( + action=EventAction.FLOW_EXECUTION, + flow=self.flow, + designation=self.flow.designation, + successful=True, + ).from_http(self.request) return to_stage_response(self.request, redirect_with_qs(next_param)) def stage_ok(self) -> HttpResponse: diff --git a/authentik/policies/event_matcher/migrations/0001_squashed_0018_alter_eventmatcherpolicy_action.py b/authentik/policies/event_matcher/migrations/0001_squashed_0018_alter_eventmatcherpolicy_action.py index e0bf3faae..af6024573 100644 --- a/authentik/policies/event_matcher/migrations/0001_squashed_0018_alter_eventmatcherpolicy_action.py +++ b/authentik/policies/event_matcher/migrations/0001_squashed_0018_alter_eventmatcherpolicy_action.py @@ -66,6 +66,7 @@ class Migration(migrations.Migration): ("source_linked", "Source Linked"), ("impersonation_started", "Impersonation Started"), ("impersonation_ended", "Impersonation Ended"), + ("flow_execution", "Flow Execution"), ("policy_execution", "Policy Execution"), ("policy_exception", "Policy Exception"), ("property_mapping_exception", "Property Mapping Exception"), diff --git a/schema.yml b/schema.yml index 134add65c..a73f8ba73 100644 --- a/schema.yml +++ b/schema.yml @@ -7539,6 +7539,7 @@ paths: - configuration_error - custom_ - email_sent + - flow_execution - impersonation_ended - impersonation_started - invitation_used @@ -21134,6 +21135,7 @@ components: - source_linked - impersonation_started - impersonation_ended + - flow_execution - policy_execution - policy_exception - property_mapping_exception diff --git a/web/src/locales/en.po b/web/src/locales/en.po index 2936f62f5..451d10764 100644 --- a/web/src/locales/en.po +++ b/web/src/locales/en.po @@ -1985,6 +1985,10 @@ msgstr "Flow" msgid "Flow Overview" msgstr "Flow Overview" +#: src/pages/events/utils.ts +msgid "Flow execution" +msgstr "Flow execution" + #: src/flows/FlowInspector.ts #: src/flows/FlowInspector.ts msgid "Flow inspector" diff --git a/web/src/locales/fr_FR.po b/web/src/locales/fr_FR.po index 3f711fdd6..1416a2de6 100644 --- a/web/src/locales/fr_FR.po +++ b/web/src/locales/fr_FR.po @@ -1970,6 +1970,10 @@ msgstr "Flux" msgid "Flow Overview" msgstr "Aperçu du flux" +#: src/pages/events/utils.ts +msgid "Flow execution" +msgstr "" + #: src/flows/FlowInspector.ts #: src/flows/FlowInspector.ts msgid "Flow inspector" diff --git a/web/src/locales/pseudo-LOCALE.po b/web/src/locales/pseudo-LOCALE.po index f8574f970..b05348885 100644 --- a/web/src/locales/pseudo-LOCALE.po +++ b/web/src/locales/pseudo-LOCALE.po @@ -1977,6 +1977,10 @@ msgstr "" msgid "Flow Overview" msgstr "" +#: src/pages/events/utils.ts +msgid "Flow execution" +msgstr "" + #: src/flows/FlowInspector.ts #: src/flows/FlowInspector.ts msgid "Flow inspector" diff --git a/web/src/pages/events/utils.ts b/web/src/pages/events/utils.ts index 130f3c31a..7810b94d1 100644 --- a/web/src/pages/events/utils.ts +++ b/web/src/pages/events/utils.ts @@ -31,6 +31,8 @@ export function ActionToLabel(action?: EventActions): string { return t`Impersonation started`; case EventActions.ImpersonationEnded: return t`Impersonation ended`; + case EventActions.FlowExecution: + return t`Flow execution`; case EventActions.PolicyExecution: return t`Policy execution`; case EventActions.PolicyException: