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

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()
}
}
}
}