From: Ian Jackson Date: Fri, 31 Jul 2020 22:38:35 +0000 (+0100) Subject: wip player access X-Git-Tag: otter-0.2.0~1210 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=f0125bf750a2da57be0bd6a858ba405a74270b0c;p=otter.git wip player access --- diff --git a/src/global.rs b/src/global.rs index d068d0e6..d5c5e7dd 100644 --- a/src/global.rs +++ b/src/global.rs @@ -429,22 +429,27 @@ impl InstanceGuard<'_> { } #[throws(OE)] - pub fn player_access_reset(&mut self, player: PlayerId) -> RawToken { + 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 - self.tokens_deregister_for_id(|id:PlayerId| id==player); + self.tokens_deregister_for_id(|id:PlayerId| players.contains(&id)); self.save_access_now()?; - let iad = InstanceAccessDetails { - gref : self.gref.clone(), - ident : player - }; - let token = RawToken::new_random()?; - self.token_register(token.clone(), iad); + let mut tokens = vec![]; + for &player in players { + let iad = InstanceAccessDetails { + gref : self.gref.clone(), + ident : player + }; + let token = RawToken::new_random()?; + self.token_register(token.clone(), iad); + tokens.push(token); + } self.save_access_now()?; // If the save fails, we don't return the token so no-one can use // it. Therefore we don't need to bother deleting it. - token + tokens } fn token_register(