From: Ian Jackson Date: Sun, 19 Jul 2020 17:58:49 +0000 (+0100) Subject: RawToken::new_random X-Git-Tag: otter-0.2.0~1285 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=2bbf754321049e934b6592b69281144633166df2;p=otter.git RawToken::new_random --- diff --git a/src/global.rs b/src/global.rs index e8429323..95f0d11c 100644 --- a/src/global.rs +++ b/src/global.rs @@ -274,6 +274,18 @@ impl AccessId for ClientId { } } +impl RawToken { + #[throws(OE)] + fn new_random() -> Self { + let mut rng = thread_rng(); + let token = RawToken ( + repeat_with(|| rng.sample(Alphanumeric)) + .take(64).collect() + ); + token + } +} + pub fn lookup_token(s : &str) -> Result, OE> { Id::global_tokens(PRIVATE_Y).read().unwrap().get(s).cloned() @@ -292,16 +304,13 @@ impl<'r, Id> FromParam<'r> for InstanceAccess<'r, Id> InstanceAccess { raw_token : token, i : i.clone() } } } - -pub fn record_token( + +#[throws(OE)] +pub fn record_token ( ig : &mut InstanceGuard, iad : InstanceAccessDetails ) -> RawToken { - let mut rng = thread_rng(); - let token = RawToken ( - repeat_with(|| rng.sample(Alphanumeric)) - .take(64).collect() - ); + let token = RawToken::new_random()?; ig.token_register(token.clone(), iad); token }