1
0
mirror of https://gitlab.com/comunic/comunicapiv3 synced 2024-11-26 07:19:22 +00:00

Can get current user email address easily

This commit is contained in:
Pierre HUBERT 2021-02-17 18:30:36 +01:00
parent 9f6b00a62b
commit 312e6fb949
4 changed files with 29 additions and 0 deletions

View File

@ -11,6 +11,7 @@ pub mod server_config;
pub mod http_error;
pub mod login_success;
pub mod current_user_id;
pub mod user_mail_address;
pub mod user_info;
pub mod custom_emoji;
pub mod res_find_user_by_virtual_directory;

View File

@ -0,0 +1,20 @@
//! # Get current user email address result
//!
//! @author Pierre Hubert
use serde::Serialize;
use crate::data::user::User;
#[derive(Serialize)]
pub struct UserMailAddressAPI {
mail: String,
}
impl UserMailAddressAPI {
pub fn new(user: &User) -> Self {
Self {
mail: user.email.to_string()
}
}
}

View File

@ -7,6 +7,7 @@ use crate::api_data::res_check_email_exists::ResCheckEmailExists;
use crate::api_data::res_check_security_answers::ResCheckSecurityAnswers;
use crate::api_data::res_check_security_questions_exists::ResCheckSecurityQuestionsExists;
use crate::api_data::res_get_security_questions::ResGetSecurityQuestions;
use crate::api_data::user_mail_address::UserMailAddressAPI;
use crate::constants::PASSWORD_RESET_TOKEN_LENGTH;
use crate::data::base_request_handler::BaseRequestHandler;
use crate::data::error::ResultBoxError;
@ -110,6 +111,12 @@ pub fn user_id(request: &mut HttpRequestHandler) -> RequestResult {
request.set_response(CurrentUserID::new(&request.user_id()?))
}
/// Get current user email address
pub fn get_mail(r: &mut HttpRequestHandler) -> RequestResult {
let user = user_helper::find_user_by_id(r.user_id_ref()?)?;
r.set_response(UserMailAddressAPI::new(&user))
}
/// Check out whether an email address exists or not
pub fn exists_mail(r: &mut HttpRequestHandler) -> RequestResult {
let email = r.post_email("email")?;

View File

@ -140,6 +140,7 @@ pub fn get_routes() -> Vec<Route> {
Route::post("/user/disconnectUSER", Box::new(account_controller::logout_user)), // TODO : remove
Route::post("/account/disconnect_all_devices", Box::new(account_controller::disconnect_all_devices)),
Route::post("/account/id", Box::new(account_controller::user_id)),
Route::post("/account/mail", Box::new(account_controller::get_mail)),
Route::post("/user/getCurrentUserID", Box::new(account_controller::user_id)), // TODO : remove
Route::limited_post_without_login("/account/exists_email", Box::new(account_controller::exists_mail), LimitPolicy::ANY(30)),
Route::limited_post_without_login("/account/has_security_questions", Box::new(account_controller::has_security_questions), LimitPolicy::FAILURE(10)),