Geoffrey-rs/geoffrey_models/src/models/parameters/mod.rs

38 lines
951 B
Rust

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 {
fn token(&self) -> String;
fn user_id(&self) -> Option<UserID> {
None
}
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
}
}
}