feat: Audit Logs (#466)

* fix: squash audit log branch changes

Signed-off-by: Zomatree <me@zomatree.live>

* feat: emoji edit + pronoun

Signed-off-by: Zomatree <me@zomatree.live>

* fix: use tokio instead of async-std

Signed-off-by: Zomatree <me@zomatree.live>

* feat: add slowmode to audit log

Signed-off-by: Zomatree <me@zomatree.live>

* chore: update comments on permissions

Signed-off-by: Zomatree <me@zomatree.live>

---------

Signed-off-by: Zomatree <me@zomatree.live>
This commit is contained in:
Zomatree
2026-07-13 21:39:28 +01:00
committed by GitHub
parent f60c8340f4
commit 502203d37c
57 changed files with 2014 additions and 150 deletions

View File

@@ -1,7 +1,7 @@
use revolt_config::config;
use revolt_database::{
util::{permissions::DatabasePermissionQuery, reference::Reference},
Database, Role, User,
AuditLogEntryAction, Database, Role, User,
};
use revolt_models::v0;
use revolt_permissions::{calculate_server_permissions, ChannelPermission};
@@ -9,6 +9,8 @@ use revolt_result::{create_error, Result};
use rocket::{serde::json::Json, State};
use validator::Validate;
use crate::util::audit_log_reason::AuditLogReason;
/// # Create Role
///
/// Creates a new server role.
@@ -17,6 +19,7 @@ use validator::Validate;
pub async fn create(
db: &State<Database>,
user: User,
reason: AuditLogReason,
target: Reference<'_>,
data: Json<v0::DataCreateRole>,
) -> Result<Json<v0::NewRoleResponse>> {
@@ -42,6 +45,13 @@ pub async fn create(
let role = Role::create(db, &server, data.name).await?;
AuditLogEntryAction::RoleCreate {
role: role.id.clone(),
name: role.name.clone(),
}
.insert(db, server.id, reason, user.id, None)
.await;
Ok(Json(v0::NewRoleResponse {
id: role.id.clone(),
role: role.into(),