From 92a08db8fe1ad3632b22cb60a9d775d6d559a251 Mon Sep 17 00:00:00 2001
From: Philippe Loctaux
Date: Tue, 4 Apr 2023 23:16:34 +0200
Subject: [PATCH] ezidam: added access_token guard, oauth/userinfo endpoint
---
crates/ezidam/src/guards.rs | 4 +-
crates/ezidam/src/guards/access_token.rs | 64 ++++++++++++++++++++++
crates/ezidam/src/guards/jwt.rs | 19 +++----
crates/ezidam/src/routes/oauth.rs | 3 +
crates/ezidam/src/routes/oauth/userinfo.rs | 9 +++
5 files changed, 88 insertions(+), 11 deletions(-)
create mode 100644 crates/ezidam/src/guards/access_token.rs
create mode 100644 crates/ezidam/src/routes/oauth/userinfo.rs
diff --git a/crates/ezidam/src/guards.rs b/crates/ezidam/src/guards.rs
index e81a988..bcecbfe 100644
--- a/crates/ezidam/src/guards.rs
+++ b/crates/ezidam/src/guards.rs
@@ -1,3 +1,4 @@
+mod access_token;
mod basic_auth;
mod completed_setup;
mod jwt;
@@ -5,7 +6,8 @@ mod need_setup;
mod refresh_token;
pub use self::jwt::*;
+pub use access_token::AccessToken;
+pub use basic_auth::BasicAuth;
pub use completed_setup::CompletedSetup;
pub use need_setup::NeedSetup;
pub use refresh_token::RefreshToken;
-pub use basic_auth::BasicAuth;
diff --git a/crates/ezidam/src/guards/access_token.rs b/crates/ezidam/src/guards/access_token.rs
new file mode 100644
index 0000000..9d3b86c
--- /dev/null
+++ b/crates/ezidam/src/guards/access_token.rs
@@ -0,0 +1,64 @@
+use crate::guards::validate_jwt;
+use jwt::JwtClaims;
+use rocket::http::Status;
+use rocket::request::{FromRequest, Outcome};
+use rocket::Request;
+
+#[derive(Debug)]
+pub enum BearerAuthError {
+ BadCount,
+ Invalid,
+ Empty,
+ Jwt(super::jwt::Error),
+}
+
+pub struct AccessToken(pub JwtClaims);
+
+impl AccessToken {
+ async fn from_bearer(
+ raw: &str,
+ request: &Request<'_>,
+ ) -> Result