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}