From b5c2be6c9fdc26a1c07f143a3911b5245f9c461c Mon Sep 17 00:00:00 2001 From: Philippe Loctaux
Date: Mon, 13 Mar 2023 23:42:21 +0100
Subject: [PATCH] ezidam: renamed page auth/sign_in to oauth/authorize, started
work on handling oauth requests, big WIP
---
crates/ezidam/src/lib.rs | 1 +
crates/ezidam/src/oauth.rs | 21 +++++
crates/ezidam/src/page.rs | 10 +--
crates/ezidam/src/page/content.rs | 2 +-
crates/ezidam/src/routes.rs | 3 +-
crates/ezidam/src/routes/auth.rs | 95 -----------------------
crates/ezidam/src/routes/oauth.rs | 123 ++++++++++++++++++++++++++++++
7 files changed, 153 insertions(+), 102 deletions(-)
create mode 100644 crates/ezidam/src/oauth.rs
delete mode 100644 crates/ezidam/src/routes/auth.rs
create mode 100644 crates/ezidam/src/routes/oauth.rs
diff --git a/crates/ezidam/src/lib.rs b/crates/ezidam/src/lib.rs
index a528ef1..92531bd 100644
--- a/crates/ezidam/src/lib.rs
+++ b/crates/ezidam/src/lib.rs
@@ -7,6 +7,7 @@ mod file_from_bytes;
mod guards;
mod id;
mod menu;
+mod oauth;
mod page;
mod response_timer;
mod routes;
diff --git a/crates/ezidam/src/oauth.rs b/crates/ezidam/src/oauth.rs
new file mode 100644
index 0000000..6497934
--- /dev/null
+++ b/crates/ezidam/src/oauth.rs
@@ -0,0 +1,21 @@
+use rocket::{FromForm, FromFormField, UriDisplayQuery};
+
+#[derive(Debug, FromFormField, UriDisplayQuery)]
+pub enum ResponseMode {
+ #[field(value = "query")]
+ Query,
+ #[field(value = "fragment")]
+ Fragment,
+ #[field(value = "form_post")]
+ FormPost,
+}
+
+#[derive(Debug, FromForm, UriDisplayQuery)]
+pub struct AuthenticationRequest<'r> {
+ pub response_type: &'r str,
+ pub response_mode: ResponseMode,
+ pub scope: &'r str,
+ pub client_id: &'r str,
+ pub redirect_uri: &'r str,
+ pub state: &'r str,
+}
diff --git a/crates/ezidam/src/page.rs b/crates/ezidam/src/page.rs
index 5767283..fa2a579 100644
--- a/crates/ezidam/src/page.rs
+++ b/crates/ezidam/src/page.rs
@@ -13,7 +13,7 @@ pub enum Page {
Error(Error),
Setup,
Homepage(Homepage),
- SignIn(SignIn),
+ Authorize(Authorize),
}
impl Page {
@@ -23,7 +23,7 @@ impl Page {
Page::Error(_) => "pages/error",
Page::Setup => "pages/setup",
Page::Homepage(_) => "pages/homepage",
- Page::SignIn(_) => "pages/auth/sign_in",
+ Page::Authorize(_) => "pages/oauth/authorize",
}
}
@@ -33,7 +33,7 @@ impl Page {
Page::Error(_) => "Error",
Page::Setup => "Setup",
Page::Homepage(_) => "Home",
- Page::SignIn(_) => "Sign in",
+ Page::Authorize(_) => "Authorize app",
}
}
@@ -43,7 +43,7 @@ impl Page {
Page::Error(_) => None,
Page::Setup => None,
Page::Homepage(_) => Some(Item::Home.into()),
- Page::SignIn(_) => None,
+ Page::Authorize(_) => None,
}
}
@@ -53,7 +53,7 @@ impl Page {
Page::Error(error) => Box::new(error),
Page::Setup => Box::new(()),
Page::Homepage(homepage) => Box::new(homepage),
- Page::SignIn(sig_in) => Box::new(sig_in),
+ Page::Authorize(authorize) => Box::new(authorize),
}
}
}
diff --git a/crates/ezidam/src/page/content.rs b/crates/ezidam/src/page/content.rs
index cef2738..61fb690 100644
--- a/crates/ezidam/src/page/content.rs
+++ b/crates/ezidam/src/page/content.rs
@@ -1,3 +1,3 @@
pub use crate::error::content::*;
-pub use crate::routes::auth::content::*;
+pub use crate::routes::oauth::content::*;
pub use crate::routes::root::content::*;
diff --git a/crates/ezidam/src/routes.rs b/crates/ezidam/src/routes.rs
index a64b2e9..c3218ed 100644
--- a/crates/ezidam/src/routes.rs
+++ b/crates/ezidam/src/routes.rs
@@ -1,6 +1,6 @@
use rocket::{Build, Rocket};
-pub mod auth;
+pub mod oauth;
pub mod root;
pub mod setup;
pub mod well_known;
@@ -11,6 +11,7 @@ pub(self) mod prelude {
pub use crate::file_from_bytes::FileFromBytes;
pub use crate::guards::*;
pub use crate::id::*;
+ pub use crate::oauth::*;
pub use crate::page::{FlashKind, Page};
pub use hash::Password;
pub use id::*;
diff --git a/crates/ezidam/src/routes/auth.rs b/crates/ezidam/src/routes/auth.rs
deleted file mode 100644
index a92705d..0000000
--- a/crates/ezidam/src/routes/auth.rs
+++ /dev/null
@@ -1,95 +0,0 @@
-use super::prelude::*;
-use rocket::{get, post};
-use settings::Settings;
-use users::User;
-
-pub fn routes() -> Vec