1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
use actix_session::Session; use serde::{Deserialize, Serialize}; use uuid::Uuid; #[derive(Serialize, Deserialize)] pub struct User { pub userid: Uuid, pub username: String, pub email: String, pub password: String, pub birth: i64, pub permissions: Vec<String>, pub sessions: Vec<Uuid>, } pub fn parse_user( doc: mongodb::bson::document::Document, ) -> Result<User, mongodb::bson::de::Error> { Ok(mongodb::bson::from_bson(mongodb::bson::Bson::Document( doc, ))?) } pub fn validate_session(session: &Session) -> Result<Uuid, actix_web::Error> { match session.get("uuid")? { Some(id) => Ok(id), None => { let id = Uuid::new_v4(); session.set("uuid", id)?; Ok(id) } } }