1
0
mirror of https://gitlab.com/comunic/comunicapiv3 synced 2025-04-02 19:02:36 +00:00
comunicapiv3/src/data/admin_action_log.rs

68 lines
2.7 KiB
Rust

//! # Admin action log
use crate::data::admin::AdminID;
use crate::data::user::UserID;
#[derive(serde::Serialize, serde::Deserialize, Clone)]
pub enum AdminAction {
AuthWithResetToken,
AuthWithAccessKey { key: String, key_id: u64 },
RegisteredAdminKey { key_id: u64, key_name: String, target: AdminID },
DeletedAdminKey { key_id: u64, key_name: String, target: AdminID },
GeneratedAdminResetToken { target: AdminID },
CreatedAdmin { id: AdminID, name: String, email: String },
UpdatedAdminGeneralSettings { target: AdminID, new_email: String, new_name: String },
AddAdminRole { target: AdminID, role: String },
RemoveAdminRole { target: AdminID, role: String },
AccessUserPage { user_id: UserID, user_name: String },
ChangedEmailAddress { user_id: UserID, user_name: String, old_mail: String, new_mail: String },
UnsupportedAction { raw_data: String },
}
impl AdminAction {
pub fn format_string(&self) -> &'static str {
match self {
AdminAction::AuthWithResetToken => { "Authenticated with a reset token" }
AdminAction::AuthWithAccessKey { .. } =>
{ "Authenticated with key #{key_id} : \"{key}\"" }
AdminAction::RegisteredAdminKey { .. } =>
{ "Registered a new key #{key_id} with name \'{key_name}\' for [admin]{target}[/admin]" }
AdminAction::DeletedAdminKey { .. } =>
{ "Deleted key #{key_id} \'{key_name\' of [admin]{target}[/admin]" }
AdminAction::GeneratedAdminResetToken { .. } =>
{ "Generated new admin access reset token for [admin]{target}[/admin]" }
AdminAction::CreatedAdmin { .. } =>
{ "Created a new administrator [admin]#{id}[/admin] with name \'{name}\' and email \'email\'" }
AdminAction::UpdatedAdminGeneralSettings { .. } =>
{ "Updated general admin settings of [admin]{target}[/admin]. New name: \'{new_name}\' / New email: \'{new_email}\'" }
AdminAction::AddAdminRole { .. } =>
{ "Add a new role to [admin]{target}[/admin] => {role}" }
AdminAction::RemoveAdminRole { .. } =>
{ "Removed a role from [admin]{target}[/admin] => {role}" }
AdminAction::AccessUserPage { .. } =>
{ "Accessed information of user #{user_id} '{user_name}'." }
AdminAction::ChangedEmailAddress { .. } =>
{ "Changed email address of user #{user_id} '{user_name}' from {old_mail} to {new_mail}" }
AdminAction::UnsupportedAction { .. } => { "Unsupported action. Raw data: {raw_data}" }
}
}
}
pub struct AdminActionLog {
pub id: u64,
pub admin_id: AdminID,
pub ip: String,
pub time: u64,
pub action: AdminAction,
}