You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
839 B
29 lines
839 B
use mio::Token;
|
|
|
|
use crate::check;
|
|
use crate::command::CommandSetPlayer;
|
|
use crate::database::Db;
|
|
use crate::password::Password;
|
|
use crate::queue::SendQueue;
|
|
use crate::{try_option_send_error, try_send_error};
|
|
|
|
impl CommandSetPlayer {
|
|
/// Set the player's password
|
|
pub fn dispatch_password(&self, args: String, token: Token, db: &mut Db) -> SendQueue {
|
|
let player = try_option_send_error!(token, db.get_connected_player(token));
|
|
|
|
match check::player_password(args) {
|
|
check::PlayerCheck::Ok(checked_pass) => {
|
|
let password = try_send_error!(token, Password::new(checked_pass));
|
|
let _ = try_send_error!(token, db.save_password(player.id, &password));
|
|
SendQueue::ok(token)
|
|
}
|
|
check::PlayerCheck::Err(err_vec) => {
|
|
let mut s: String = err_vec.join("\n");
|
|
s.push_str("\n");
|
|
(token, s).into()
|
|
}
|
|
}
|
|
}
|
|
}
|