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:
@@ -2,7 +2,7 @@ use std::collections::HashSet;
|
||||
|
||||
use revolt_database::{
|
||||
util::{permissions::DatabasePermissionQuery, reference::Reference},
|
||||
Database, File, PartialServer, User, ValidatedTicket,
|
||||
AuditLogEntryAction, Database, FieldsServer, File, PartialServer, User, ValidatedTicket
|
||||
};
|
||||
use revolt_models::v0;
|
||||
use revolt_permissions::{calculate_server_permissions, ChannelPermission};
|
||||
@@ -10,6 +10,8 @@ use revolt_result::{create_error, Result};
|
||||
use rocket::{serde::json::Json, State};
|
||||
use validator::Validate;
|
||||
|
||||
use crate::util::audit_log_reason::AuditLogReason;
|
||||
|
||||
/// # Edit Server
|
||||
///
|
||||
/// Edit a server by its id.
|
||||
@@ -18,6 +20,7 @@ use validator::Validate;
|
||||
pub async fn edit(
|
||||
db: &State<Database>,
|
||||
user: User,
|
||||
reason: AuditLogReason,
|
||||
target: Reference<'_>,
|
||||
data: Json<v0::DataEditServer>,
|
||||
validated_ticket: Option<ValidatedTicket>,
|
||||
@@ -176,9 +179,21 @@ pub async fn edit(
|
||||
partial.owner = Some(server.owner.clone());
|
||||
}
|
||||
|
||||
server
|
||||
.update(db, partial, remove.into_iter().map(Into::into).collect())
|
||||
.await?;
|
||||
let remove = remove
|
||||
.into_iter()
|
||||
.map(Into::into)
|
||||
.collect::<Vec<FieldsServer>>();
|
||||
|
||||
let before = server.generate_diff(&partial, &remove);
|
||||
|
||||
server.update(db, partial.clone(), remove).await?;
|
||||
|
||||
AuditLogEntryAction::ServerEdit {
|
||||
before,
|
||||
after: partial,
|
||||
}
|
||||
.insert(db, server.id.clone(), reason, user.id, None)
|
||||
.await;
|
||||
|
||||
Ok(Json(server.into()))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user