35 lines
873 B
Rust
35 lines
873 B
Rust
pub mod add_location_params;
|
|
pub mod find_params;
|
|
pub mod register_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) -> u64;
|
|
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
|
|
}
|
|
}
|
|
}
|