From 69c5d2d1dd49f8bb5695d09cbbae4286da17cf6e Mon Sep 17 00:00:00 2001 From: Erik Hollensbe Date: Mon, 24 Jan 2022 12:25:19 -0800 Subject: [PATCH] update readme Signed-off-by: Erik Hollensbe --- README.md | 46 ++++++++++++++++++++++------------------------ 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 313eb37..6a86c67 100644 --- a/README.md +++ b/README.md @@ -49,22 +49,12 @@ async fn validate_authtoken( app: App, mut authstate: AuthedState, ) -> HTTPResult { - let token = req.headers().get("X-AuthToken"); - if token.is_none() { - return Err(Error::StatusCode(StatusCode::UNAUTHORIZED)); + if let (Some(token), Some(state)) = (req.headers().get("X-AuthToken"), app.state().await) { + authstate.authed = Some(state.clone().lock().await.authtoken == token); + Ok((req, resp, authstate)) + } else { + Err(Error::StatusCode(StatusCode::UNAUTHORIZED)) } - - let token = token.unwrap(); - - let state = app.state().await; - if state.is_none() { - return Err(Error::StatusCode(StatusCode::UNAUTHORIZED)); - } - - let state = state.unwrap(); - authstate.authed = Some(state.clone().lock().await.authtoken == token); - - return Ok((req, resp, authstate)); } // our `hello` responder; it simply echoes the `name` parameter provided in the @@ -76,18 +66,26 @@ async fn hello( _app: App, authstate: AuthedState, ) -> HTTPResult { - if authstate.authed.is_some() && !authstate.authed.unwrap() { - return Err(Error::StatusCode(StatusCode::UNAUTHORIZED)); - } - let name = params.get("name").unwrap(); let bytes = Body::from(format!("hello, {}!\n", name)); - return Ok(( - req, - Some(Response::builder().status(200).body(bytes).unwrap()), - authstate, - )); + if let Some(authed) = authstate.authed { + if authed { + return Ok(( + req, + Some(Response::builder().status(200).body(bytes).unwrap()), + authstate, + )); + } + } else if authstate.authed.is_none() { + return Ok(( + req, + Some(Response::builder().status(200).body(bytes).unwrap()), + authstate, + )); + } + + Err(Error::StatusCode(StatusCode::UNAUTHORIZED)) } // Our global application state; must be `Clone`.