1
0
mirror of https://gitlab.com/comunic/comunicapiv3 synced 2025-07-03 14:43:28 +00:00

Administrators can get information about a single user

This commit is contained in:
2021-07-12 17:50:14 +02:00
parent 82717312e6
commit 19887f525e
11 changed files with 106 additions and 29 deletions

View File

@ -0,0 +1,54 @@
//! # Admin API : User information
//!
//! Get information about a single user
//!
//! @author Pierre Hubert
use crate::data::user::User;
#[derive(serde::Serialize)]
pub struct AdminUserInfoAPI {
id: u64,
first_name: String,
last_name: String,
email: String,
account_creation_time: u64,
last_activity: u64,
page_visibility: &'static str,
directory: Option<String>,
account_image: String,
friend_list_public: bool,
is_email_public: bool,
personal_website: Option<String>,
public_note: Option<String>,
location: Option<String>,
block_comments: bool,
allow_posts_from_friends: bool,
allow_mails: bool,
lang: String,
}
impl AdminUserInfoAPI {
pub fn new(user: User) -> Self {
Self {
account_image: user.account_image_url_for_admin(),
friend_list_public: user.public_friends_list,
is_email_public: user.is_email_public,
personal_website: user.personal_website,
public_note: user.public_note,
location: user.location,
block_comments: user.block_comments_on_his_page,
allow_posts_from_friends: user.allow_posts_from_friends,
allow_mails: user.allow_mails,
id: user.id.id(),
first_name: user.first_name,
last_name: user.last_name,
email: user.email,
account_creation_time: user.account_creation_time,
last_activity: user.last_activity,
page_visibility: user.user_page_visibility.to_api(),
directory: user.virtual_directory,
lang: user.lang,
}
}
}

View File

@ -11,4 +11,5 @@ pub mod admin_res_create_reset_token;
pub mod admin_role_api;
pub mod admin_res_create_account;
pub mod admin_log_api;
pub mod admin_search_user_result;
pub mod admin_search_user_result_api;
pub mod admin_user_info_api;

View File

@ -5,7 +5,7 @@ use serde::Serialize;
use crate::api_data::custom_emoji::CustomEmojiAPI;
use crate::data::error::ResultBoxError;
use crate::data::user::{User, UserID, UserPageStatus};
use crate::data::user::{User, UserID, UserPageVisibility};
use crate::data::user::AccountImageVisibility::{COMUNIC_USERS, EVERYONE};
use crate::helpers::{background_image_helper, custom_emojies_helper, friends_helper, likes_helper, user_helper};
use crate::helpers::likes_helper::LikeType;
@ -53,8 +53,8 @@ impl APIUserInfo {
userID: info.id.id(),
firstName: info.first_name.to_string(),
lastName: info.last_name.to_string(),
publicPage: info.status != UserPageStatus::PRIVATE,
openPage: info.status == UserPageStatus::OPEN,
publicPage: info.user_page_visibility != UserPageVisibility::PRIVATE,
openPage: info.user_page_visibility == UserPageVisibility::OPEN,
virtualDirectory: info.virtual_directory.clone().unwrap_or(String::new()),
accountImage: APIUserInfo::get_account_image_url(user_id, info)?,
customEmojis: custom_emojies_helper::get_list_user(&info.id)?