diff --git a/crates/ezidam/src/routes/settings.rs b/crates/ezidam/src/routes/settings.rs index f9d4fea..9f6ec5b 100644 --- a/crates/ezidam/src/routes/settings.rs +++ b/crates/ezidam/src/routes/settings.rs @@ -12,6 +12,7 @@ pub fn routes() -> Vec { user_settings_personal, user_settings_personal_form, user_settings_security, + user_settings_security_logout_everywhere, ] } @@ -39,5 +40,6 @@ pub mod content { #[derive(Clone)] pub struct UserSecuritySettings { pub user: JwtClaims, + pub logout_time_effective: i64, } } diff --git a/crates/ezidam/src/routes/settings/security.rs b/crates/ezidam/src/routes/settings/security.rs index 213f5f5..3b57336 100644 --- a/crates/ezidam/src/routes/settings/security.rs +++ b/crates/ezidam/src/routes/settings/security.rs @@ -1,15 +1,128 @@ use crate::routes::prelude::*; -use rocket::get; +use crate::tokens::{generate_jwt, generate_refresh_token}; +use crate::tokens::{ + JWT_COOKIE_NAME, JWT_DURATION_MINUTES, REFRESH_TOKEN_COOKIE_NAME, REFRESH_TOKEN_DURATION_DAYS, +}; +use apps::App; +use jwt::database::Key; +use jwt::PrivateKey; +use refresh_tokens::RefreshToken; +use rocket::http::{Cookie, CookieJar, SameSite}; +use rocket::time::Duration; +use rocket::{get, post}; +use settings::Settings; +use std::net::IpAddr; +use users::User; #[get("/settings/security")] pub async fn user_settings_security( jwt_user: JwtUser, flash: Option>, ) -> Result