From a54fb74681c0d69731b57debece0a043b7e911df Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sat, 1 Aug 2020 00:20:27 +0100 Subject: [PATCH] fix player access errors --- src/commands.rs | 2 ++ src/global.rs | 10 ++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/commands.rs b/src/commands.rs index d34f29b8..e0887026 100644 --- a/src/commands.rs +++ b/src/commands.rs @@ -17,6 +17,7 @@ pub enum MgmtCommand { pub enum MgmtGameInstruction { Noop { }, AddPiece(PiecesSpec), + // todo: RemovePiece AddPlayer(PlayerState), RemovePlayer(PlayerId), } @@ -50,6 +51,7 @@ pub enum MgmtError { GameBeingDestroyed, GameNotFound, GameCorrupted, + PlayerNotFound, LimitExceeded, SVGProcessingFailed(#[from] SVGProcessingError), GameError(#[from] GameError), diff --git a/src/global.rs b/src/global.rs index d5c5e7dd..79944ddc 100644 --- a/src/global.rs +++ b/src/global.rs @@ -428,12 +428,15 @@ impl InstanceGuard<'_> { self.token_register(token, iad); } - #[throws(OE)] + #[throws(MgmtError)] pub fn player_access_reset(&mut self, players: &[PlayerId]) -> Vec { // tokens can't persist unless game is never destroyed ? // so a game is like a tables, and persistent // xxx boxes feature maybe + for &player in players { + self.c.g.gs.players.get(player).ok_or(MgmtError::PlayerNotFound)?; + } self.tokens_deregister_for_id(|id:PlayerId| players.contains(&id)); self.save_access_now()?; let mut tokens = vec![]; @@ -442,7 +445,7 @@ impl InstanceGuard<'_> { gref : self.gref.clone(), ident : player }; - let token = RawToken::new_random()?; + let token = RawToken::new_random(); self.token_register(token.clone(), iad); tokens.push(token); } @@ -618,7 +621,6 @@ impl AccessId for ClientId { } impl RawToken { - #[throws(OE)] fn new_random() -> Self { let mut rng = thread_rng(); let token = RawToken ( @@ -653,7 +655,7 @@ pub fn record_token ( ig : &mut InstanceGuard, iad : InstanceAccessDetails ) -> RawToken { - let token = RawToken::new_random()?; + let token = RawToken::new_random(); ig.token_register(token.clone(), iad); token } -- 2.30.2