Skip to content

Feat/admin audit logging - #3125

Open
GhassenKefi wants to merge 6 commits into
mainfrom
feat/admin-audit-logging
Open

GhassenKefi wants to merge 6 commits into
mainfrom
feat/admin-audit-logging

Conversation

@GhassenKefi

Copy link
Copy Markdown

🖼️ Screenshots

🏚️ Before 🏡 After
B A

🏁 Checklist

  • ⛑️ Tests (unit and/or integration) are included or not needed
  • 🔙 Backport requests are created or not needed: /backport to stableX.X
  • 📅 Milestone is set
  • 🌸 PR title is meaningful (if it should be in the changelog: is it meaningful to users?)

🤖 AI (if applicable)

  • The content of this PR was partly or fully generated using AI

…tries

The audit log entries for deleted tables, views and rows and for
transferred tables and applications now carry an operation and named
parameters, with the messages unchanged. The operations are collected
in the new OCA\Tables\AuditLog\Operation enum, with a short description
of each for the documentation, and AuditLogServiceInterface::log() now
takes the operation.

The entries only carry IDs and user IDs. The full table, view and row
were passed as parameters before, which put the cell values of deleted
rows into the audit log.

A table transfer now logs the previous owner as fromUserId instead of
the user doing the transfer, which was empty when run through occ. The
application transfer entry now also names the previous owner, and goes
through the audit log service like the other entries.

Assisted-by: ClaudeCode:claude-opus-5-5
Signed-off-by: Ghassen kefi <ghassen.kefi.dev@gmail.com>
Creating a share of a table, view or application (with a user, group,
team, remote user or by public link), changing the permissions of a
share and deleting a share are now written to the admin audit log.
Tables shares are not core shares, so admin_audit did not see them.

Deleting a share through the share review skips the manage permission
check and is logged with its own message. Receiving a federated share
from another server and entering a wrong password for a password
protected public link share are logged too, the latter through the
authFailed() hook of AuthPublicShareController.

The share token and password are never logged.

Assisted-by: ClaudeCode:claude-opus-5-5
Signed-off-by: Ghassen kefi <ghassen.kefi.dev@gmail.com>
…e audit log

Creating a table (from the web interface, the API, occ tables:add or a
template), archiving and unarchiving it, and deleting a column are now
written to the admin audit log. Deleting a column removes its values
from every row, so it is logged like a deletion.

Columns removed together with their table are not logged separately, as
the table deletion is already logged. Tables imported through the user
migration are the user's own data and are not logged. Other table
updates (title, emoji, description, sorting) are not logged.

Assisted-by: ClaudeCode:claude-opus-5-5
Signed-off-by: Ghassen kefi <ghassen.kefi.dev@gmail.com>
Creating a view and changing its filter, columns or view settings are
now written to the admin audit log. These settings decide which rows
and columns the people the view is shared with can see, so the entry
lists which of them changed. Changes to the title, emoji, description,
sorting or layout of a view are not logged.

Assisted-by: ClaudeCode:claude-opus-5-5
Signed-off-by: Ghassen kefi <ghassen.kefi.dev@gmail.com>
Creating, updating and deleting an application (context) are now
written to the admin audit log. Adding a table or view to an
application exposes it to everyone the application is shared with, so
the update entry lists the added and removed nodes, and the create
entry lists the nodes the application starts with. Deleting an
application also deletes its pages and shares.

The name, icon and description of an application are not logged.

Assisted-by: ClaudeCode:claude-opus-5-5
Signed-off-by: Ghassen kefi <ghassen.kefi.dev@gmail.com>
Importing rows from a spreadsheet into a table or view is now written
to the admin audit log, for both the current import (including the
background job) and the legacy API endpoints. Only the number of
inserted and updated rows and created columns is logged, never the
imported values. Failed imports are not logged.

Assisted-by: ClaudeCode:claude-opus-5-5
Signed-off-by: Ghassen kefi <ghassen.kefi.dev@gmail.com>
@GhassenKefi GhassenKefi added enhancement New feature or request 3. to review Waiting for reviews AI assisted labels Oct 19, 2026
@GhassenKefi GhassenKefi self-assigned this Oct 19, 2026
@GhassenKefi
GhassenKefi requested a review from samin-z October 19, 2026 17:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

3. to review Waiting for reviews AI assisted enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant