From: Ian Jackson Date: Sat, 7 Nov 2020 00:29:56 +0000 (+0000) Subject: wip moving token reset to server X-Git-Tag: otter-0.2.0~551 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=393673a713a8bc286b21f40f8b2f9b9b41be7e69;p=otter.git wip moving token reset to server Signed-off-by: Ian Jackson --- diff --git a/src/bin/otter.rs b/src/bin/otter.rs index 8a05757b..fec6938e 100644 --- a/src/bin/otter.rs +++ b/src/bin/otter.rs @@ -400,11 +400,11 @@ fn setup_table(ma: &MainOpts, chan: &mut ConnForGame, insns.push(Insn::RemovePlayer { player: st.id }); } - let mut added_players = HashSet::new(); + let mut added_players = vec![]; chan.alter_game(insns, Some(&mut |response| { match response { - &Resp::AddPlayer(player) => { - added_players.insert(player); + &Resp::AddPlayer { player, nick, token, .. } => { + added_players.push((player, nick, token)); }, _ => { }, }; @@ -414,7 +414,7 @@ fn setup_table(ma: &MainOpts, chan: &mut ConnForGame, (added_players,) }; - // ensure players have access tokens + // report any new access tokens { let (_, nick2id) = chan.get_info()?; let mut insns = vec![]; diff --git a/src/cmdlistener.rs b/src/cmdlistener.rs index e0656abd..7178d3de 100644 --- a/src/cmdlistener.rs +++ b/src/cmdlistener.rs @@ -300,7 +300,7 @@ fn execute_game_insn<'cs, 'igr, 'ig : 'igr>( details: MgmtPlayerDetails { timezone, nick } } => { // todo some kind of permissions check for player too - let ig = cs.check_acl(ag, ig, PCH::Instance, &[TP::AddPlayer])?.0; + let (ig, auth) = cs.check_acl(ag, ig, PCH::Instance, &[TP::AddPlayer])?; let (_arecord, acctid) = ag.lookup(&account)?; let nick = nick.ok_or(ME::ParameterMissing)?; let logentry = LogEntry { @@ -318,10 +318,14 @@ fn execute_game_insn<'cs, 'igr, 'ig : 'igr>( tz, }; let (player, logentry) = ig.player_new(gpl, ipl, logentry)?; + + let atr = ig.player_access_reset(ag, player, auth.therefore_ok())?; + (U{ pcs: vec![], log: vec![ logentry ], raw: None }, - Resp::AddPlayer(player), ig) + Resp::AddPlayer { account, nick, player, token: atr }, + ig) }, Insn::ListPieces => readonly(cs,ag,ig, &[TP::ViewPublic], |ig|{ diff --git a/src/commands.rs b/src/commands.rs index eec60177..e494ade2 100644 --- a/src/commands.rs +++ b/src/commands.rs @@ -98,7 +98,10 @@ pub enum MgmtGameResponse { Pieces(Vec), - AddPlayer(PlayerId), + AddPlayer { + account: AccountName, nick: String, + player: PlayerId, token: Option, + }, PlayerAccessToken(Option), }