2023-05-31 13:52:49 +00:00
|
|
|
//! # User controller
|
|
|
|
//!
|
|
|
|
//! The actions of the user on his account when he is authenticated.
|
|
|
|
|
|
|
|
use crate::controllers::HttpResult;
|
2023-06-05 16:41:56 +00:00
|
|
|
use crate::models::User;
|
2023-05-31 13:52:49 +00:00
|
|
|
use crate::services::login_token_service::LoginToken;
|
|
|
|
use crate::services::users_service;
|
|
|
|
use actix_web::HttpResponse;
|
|
|
|
|
2023-06-05 16:41:56 +00:00
|
|
|
#[derive(serde::Serialize)]
|
|
|
|
struct UserAPI<'a> {
|
|
|
|
#[serde(flatten)]
|
|
|
|
user: &'a User,
|
|
|
|
has_password: bool,
|
|
|
|
}
|
|
|
|
|
2023-05-31 13:52:49 +00:00
|
|
|
/// Get account information
|
|
|
|
pub async fn auth_info(token: LoginToken) -> HttpResult {
|
|
|
|
let user = users_service::get_by_id(token.user_id).await?;
|
|
|
|
|
2023-06-05 16:41:56 +00:00
|
|
|
Ok(HttpResponse::Ok().json(UserAPI {
|
|
|
|
user: &user,
|
|
|
|
has_password: user
|
|
|
|
.password
|
|
|
|
.as_deref()
|
|
|
|
.map(|p| !p.is_empty())
|
|
|
|
.unwrap_or_default(),
|
|
|
|
}))
|
2023-05-31 13:52:49 +00:00
|
|
|
}
|