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

43 lines
1.0 KiB
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 + Sync
{
fn token(&self) -> String;
fn user_id(&self) -> Option<UserID> {
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
}
}
}