Config minimal global session storage

master
fernando 2024-02-13 17:34:21 -05:00
parent 7c7f7b327b
commit 4410eb4240
4 changed files with 44 additions and 8 deletions

View File

@ -1,24 +1,30 @@
use std::collections::HashMap; use std::{collections::HashMap, sync::{Arc, Mutex}};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
pub struct Sessions { pub struct Sessions {
sessions: HashMap<String, SessionData>, sessions: Mutex<HashMap<String, SessionData>>,
} }
impl Sessions { impl Sessions {
pub fn new() -> Self { pub fn new() -> Self {
Sessions { Sessions {
sessions: HashMap::new(), sessions: Mutex::new(HashMap::new()),
} }
} }
pub fn insert(&mut self, session_id: String, session_data: SessionData) { pub fn insert(&self, session_id: String, session_data: SessionData) {
self.sessions.insert(session_id, session_data); let mut map = self.sessions.lock().unwrap();
map.insert(session_id, session_data);
} }
pub fn get(&self, session_id: &str) -> Option<&SessionData> { pub fn get(&self, session_id: &str) -> Option<SessionData> {
self.sessions.get(session_id) let map = self.sessions.lock().unwrap();
match map.get(session_id) {
Some(s) => Some(s.clone()),
None => None,
}
} }
} }
@ -26,3 +32,9 @@ impl Sessions {
pub struct SessionData { pub struct SessionData {
user_id: i32, user_id: i32,
} }
impl SessionData {
pub fn new(user_id: i32) -> Self {
SessionData { user_id }
}
}

20
src/controller/login.rs Normal file
View File

@ -0,0 +1,20 @@
use maud::Markup;
use rocket::{form::Form, http::Status, State};
use crate::auth::session::{SessionData, Sessions};
#[derive(FromForm)]
pub struct LoginData {
email: String,
password: String,
}
#[get("/login")]
pub fn login(sessions: &State<Sessions>) -> &'static str {
sessions.insert(
"123456".into(),
SessionData::new(1),
);
":D"
}

View File

@ -1,5 +1,6 @@
use maud::Markup; use maud::Markup;
pub mod login;
pub mod register; pub mod register;
pub mod user; pub mod user;

View File

@ -14,6 +14,9 @@ fn rocket() -> _ {
.manage(auth::session::Sessions::new()) .manage(auth::session::Sessions::new())
.register("/", catchers![view::not_authorized]) .register("/", catchers![view::not_authorized])
.mount("/", routes![controller::index,]) .mount("/", routes![controller::index,])
.mount("/f", routes![controller::user::create_user,]) .mount("/f", routes![
controller::user::create_user,
controller::login::login,
])
.mount("/static", FileServer::from("static")) .mount("/static", FileServer::from("static"))
} }