From 661fb28d882e5ae8fe32295d21f033967031f0a4 Mon Sep 17 00:00:00 2001 From: Alexandra Date: Mon, 21 Sep 2026 14:48:01 +0200 Subject: [PATCH 1/3] audit logs init --- src/server/dashboard/index.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/server/dashboard/index.md b/src/server/dashboard/index.md index 288f9217..b3096ca8 100644 --- a/src/server/dashboard/index.md +++ b/src/server/dashboard/index.md @@ -85,6 +85,9 @@ Click on a workspace to display its details. Here, you can also: The new workspace is created. +## Audit logs + logs events related to users, projects and workspaces that can be explored through the Admin panel. + ## Settings In the **Settings** tab, you can: - enable/disable the **Check for updates** option From 3ba03d3850704f54b46cd276c4ca0e30fa99b88b Mon Sep 17 00:00:00 2001 From: Alexandra Date: Tue, 29 Sep 2026 17:10:12 +0200 Subject: [PATCH 2/3] audit logs, list of events --- src/server/audit-log-events/index.md | 65 ++++++++++++++++++++++++++++ src/server/dashboard/index.md | 12 ++++- 2 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 src/server/audit-log-events/index.md diff --git a/src/server/audit-log-events/index.md b/src/server/audit-log-events/index.md new file mode 100644 index 00000000..8cfee53b --- /dev/null +++ b/src/server/audit-log-events/index.md @@ -0,0 +1,65 @@ +--- +description: List of events that are tracked in Mergin Maps audit logs. +--- + +# Audit Log Events + +[[toc]] + +Here is a complete list of events tracked in [Audit logs](../dashboard/#audit-logs). + +## User audit events +- `user.login.succeeded` - Successful login +- `user.login.failed` - Failed login attempt +- `user.password.changed` - User changes their password +- `user.password.reset_requested` - User requests password reset +- `user.password.reset_completed` - User finalised password reset +- `user.password.reset_failed` - Password reset failed due to invalid reset or other means +- `user.created` - User account created +- `user.updated` - User profile updated +- `user.marked_for_deletion` - User account scheduled for deletion +- `user.deactivated` - User account set inactive +- `user.restored` - User account restored by admin (reactivated account or cancelled scheduled deletion) +- `user.deleted` - User account permanently deleted +- `user.locked` - User account locked after too many failed logins +- `user.unlocked` - User account unlocked +- `user.admin_panel_access.changed` - Admin user account changed (user became server admin or lost access to the admin panel) + +## Project audit events +- `project.created` - Project created +- `project.updated` - Project settings changed +- `project.transfer_request.initiated` - Project transfer request sent +- `project.transfer_request.received` - Project transfer request received +- `project.transfer_request.completed` - Project transfer completed +- `project.transfer_request.accepted` - Project transfer accepted +- `project.transfer_request.canceled` - Project transfer cancelled (by the original workspace) +- `project.transfer_request.rejected` - Project transfer rejected (by the new workspace) +- `project.marked_for_deletion` - Project scheduled for deletion +- `project.restored` - Project scheduled for deletion restored +- `project.deleted` - Project permanently deleted +- `project.member.added` - User added to a project +- `project.member.updated` - Project member role changed +- `project.member.deleted` - User removed from a project +- `project.access_request.initiated` - User sent a request to access a project +- `project.access_request.accepted` - Project access request accepted +- `project.access_request.canceled` - Project access request cancelled +- `project.version.created` - New project version created +- `project.map_sharing.updated` - Webmap link enabled or disabled +- `project.map_sharing.link_rotated` - Webmap link regenerated +- `project.ogc_api.access_updated` - OGC API link updated (created, regenerated, removed) +- `project.ogc_api.link_rotated` - OGC API link regenerated + +## Workspace audit events +- `workspace.created` - Workspace created +- `workspace.updated` - Workspace settings changed +- `workspace.marked_for_deletion` - Workspace scheduled for deletion +- `workspace.deactivated` - Workspace deactivated +- `workspace.restored` - Workspace reactivated +- `workspace.deleted` - Workspace permanently deleted +- `workspace.member.added` - User added to workspace +- `workspace.member.updated` - Workspace member role changed +- `workspace.member.deleted` - User removed from workspace +- `workspace.invitation.created` - Workspace invitation sent +- `workspace.invitation.updated` - Workspace invitation resent +- `workspace.invitation.accepted` - Workspace invitation accepted +- `workspace.invitation.canceled` - Workspace invitation cancelled or rejected diff --git a/src/server/dashboard/index.md b/src/server/dashboard/index.md index b3096ca8..8739b668 100644 --- a/src/server/dashboard/index.md +++ b/src/server/dashboard/index.md @@ -86,7 +86,17 @@ Click on a workspace to display its details. Here, you can also: The new workspace is created. ## Audit logs - logs events related to users, projects and workspaces that can be explored through the Admin panel. + + +The **Audit Logs** contains records of activity across users, projects and workspaces, such as project updates, user management, permission changes, or login attempts. Read-only actions, such as browsing or downloading, are not logged. + +Logs cannot be edited or deleted. + +You can filter the logs by event type, actor email, user, workspace, project and date range of the event. Click on a log to display more details about the event. + +::: tip Audit logs events +For a complete list of tracked events, see [Audit Log Events](../audit-log-events). +::: ## Settings In the **Settings** tab, you can: From 31125099f663854ebb7d7934f2f3f737caa57599 Mon Sep 17 00:00:00 2001 From: Alexandra Date: Tue, 29 Sep 2026 17:25:53 +0200 Subject: [PATCH 3/3] admin panel delete project --- .../dashboard/admin-panel-project-delete.webp | Bin 0 -> 13898 bytes .../dashboard/admin-panel-project-delete.xcf | Bin 0 -> 43710 bytes src/server/dashboard/index.md | 6 ++++++ 3 files changed, 6 insertions(+) create mode 100644 src/server/dashboard/admin-panel-project-delete.webp create mode 100644 src/server/dashboard/admin-panel-project-delete.xcf diff --git a/src/server/dashboard/admin-panel-project-delete.webp b/src/server/dashboard/admin-panel-project-delete.webp new file mode 100644 index 0000000000000000000000000000000000000000..b5f2681b3ee7f2cb74707544d8736a1a152158ec GIT binary patch literal 13898 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 z%0D*&*J3j$?K%$`Fb-Rw|Dwqy!&<(g#FBrT;&WUeef0+7Pm7r0k}9%PdW$iv6g7OI ztrfx&*B9%XJ-2Z+OQ1+_cA_(oL2#ES96s1t;7SOzY!l$RRJ|cfOQF90V-9d=Uyw|{ zPgnp}LGBUckzvJW64t<&jFHTy3Nv7&&G`<2@u6HQA^3uu5<9Jo(smi`rwGZ(deUD+ z*2T$ zc0|zE;Q<-zKm;tcr;nOp3;=C!#*)M-U=;4Ne>e012YAa>Y=i=tCDW V4uO3iRN-PawXEn`{?Cc;{{U8I0r~&{ literal 0 HcmV?d00001 diff --git a/src/server/dashboard/admin-panel-project-delete.xcf b/src/server/dashboard/admin-panel-project-delete.xcf new file mode 100644 index 0000000000000000000000000000000000000000..c99f8727a26b5774e5ad5ab52e9c31878deecb26 GIT binary patch literal 43710 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