user_validator/
lib.rs

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