From ff9060ea0987e29e4d468ff7c9fed7cc7109bf2b Mon Sep 17 00:00:00 2001 From: metamuffin Date: Tue, 1 Aug 2023 20:32:35 +0200 Subject: federation possible but inconvinient --- server/src/routes/ui/account/mod.rs | 2 ++ server/src/routes/ui/account/session/token.rs | 5 ++--- server/src/routes/ui/error.rs | 5 +++++ 3 files changed, 9 insertions(+), 3 deletions(-) (limited to 'server/src/routes/ui') diff --git a/server/src/routes/ui/account/mod.rs b/server/src/routes/ui/account/mod.rs index f1b243c..1d36cd8 100644 --- a/server/src/routes/ui/account/mod.rs +++ b/server/src/routes/ui/account/mod.rs @@ -65,6 +65,8 @@ pub struct LoginForm { pub username: String, #[field(validate = len(..64))] pub password: String, + #[field(default = 604800)] // one week + pub expire: u64, } #[get("/account/login")] diff --git a/server/src/routes/ui/account/session/token.rs b/server/src/routes/ui/account/session/token.rs index d4546aa..f82b475 100644 --- a/server/src/routes/ui/account/session/token.rs +++ b/server/src/routes/ui/account/session/token.rs @@ -24,17 +24,16 @@ pub fn create(username: String, expire: Duration) -> String { let cipher = aes_gcm_siv::Aes256GcmSiv::new_from_slice(&*SESSION_KEY).unwrap(); let nonce = [(); 12].map(|_| rand::random()); - eprintln!("SESSION_KEY={SESSION_KEY:?}"); let mut ciphertext = cipher .encrypt(&GenericArray::from(nonce), plaintext.as_slice()) .unwrap(); ciphertext.extend(nonce); - base64::engine::general_purpose::STANDARD.encode(&ciphertext) + base64::engine::general_purpose::URL_SAFE.encode(&ciphertext) } pub fn validate(token: &str) -> anyhow::Result { - let ciphertext = base64::engine::general_purpose::STANDARD.decode(token)?; + let ciphertext = base64::engine::general_purpose::URL_SAFE.decode(token)?; let cipher = aes_gcm_siv::Aes256GcmSiv::new_from_slice(&*SESSION_KEY).unwrap(); let (ciphertext, nonce) = ciphertext.split_at(ciphertext.len() - 12); let plaintext = cipher diff --git a/server/src/routes/ui/error.rs b/server/src/routes/ui/error.rs index 190650f..d911a41 100644 --- a/server/src/routes/ui/error.rs +++ b/server/src/routes/ui/error.rs @@ -91,3 +91,8 @@ impl From for MyError { MyError(anyhow::anyhow!("{err}")) } } +impl From for MyError { + fn from(err: reqwest::Error) -> Self { + MyError(anyhow::anyhow!("{err}")) + } +} -- cgit v1.2.3-70-g09d2