pub mod add_item_params; pub mod add_location_params; pub mod add_token_params; pub mod find_params; pub mod register_params; pub mod selling_params; use crate::models::player::{Player, UserID}; use crate::models::token::{Permissions, Token}; use crate::models::CommandLevel; use serde::de::DeserializeOwned; use serde::Serialize; use std::fmt::Debug; pub trait CommandRequest: Serialize + DeserializeOwned + Debug + Clone + Send + 'static + Sync { fn token(&self) -> String; fn user_id(&self) -> Option { None } fn set_token(&mut self, token: String); fn set_user_id(&mut self, _: UserID) {} fn check_permission( &self, player: &Player, command_level: &CommandLevel, token: &Token, ) -> bool { if player.auth_level >= *command_level { if *command_level == CommandLevel::ADMIN { token.check_permission(Permissions::Admin) } else { true } } else { false } } }