mirror of
				https://gitlab.com/comunic/comunicapiv3
				synced 2025-10-31 15:44:05 +00:00 
			
		
		
		
	Can get admin information
This commit is contained in:
		
							
								
								
									
										26
									
								
								src/api_data/admin/admin_info_api.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								src/api_data/admin/admin_info_api.rs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | |||||||
|  | //! # Admin information API | ||||||
|  | //! | ||||||
|  | //! @author Pierre Hubert | ||||||
|  |  | ||||||
|  | use serde::Serialize; | ||||||
|  |  | ||||||
|  | use crate::data::admin::Admin; | ||||||
|  |  | ||||||
|  | #[derive(Serialize)] | ||||||
|  | pub struct AdminInfoAPI { | ||||||
|  |     id: u64, | ||||||
|  |     name: String, | ||||||
|  |     email: String, | ||||||
|  |     time_create: u64, | ||||||
|  | } | ||||||
|  |  | ||||||
|  | impl AdminInfoAPI { | ||||||
|  |     pub fn new(a: &Admin) -> Self { | ||||||
|  |         Self { | ||||||
|  |             id: a.id.id(), | ||||||
|  |             name: a.name.clone(), | ||||||
|  |             email: a.email.clone(), | ||||||
|  |             time_create: a.time_create, | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -5,3 +5,4 @@ | |||||||
| pub mod admin_auth_options; | pub mod admin_auth_options; | ||||||
| pub mod admin_auth_success; | pub mod admin_auth_success; | ||||||
| pub mod admin_id_api; | pub mod admin_id_api; | ||||||
|  | pub mod admin_info_api; | ||||||
| @@ -5,6 +5,7 @@ | |||||||
| use crate::api_data::admin::admin_auth_options::AdminAuthOptions; | use crate::api_data::admin::admin_auth_options::AdminAuthOptions; | ||||||
| use crate::api_data::admin::admin_auth_success::AdminAuthSuccess; | use crate::api_data::admin::admin_auth_success::AdminAuthSuccess; | ||||||
| use crate::api_data::admin::admin_id_api::AdminIDAPI; | use crate::api_data::admin::admin_id_api::AdminIDAPI; | ||||||
|  | use crate::api_data::admin::admin_info_api::AdminInfoAPI; | ||||||
| use crate::data::base_request_handler::BaseRequestHandler; | use crate::data::base_request_handler::BaseRequestHandler; | ||||||
| use crate::data::http_request_handler::HttpRequestHandler; | use crate::data::http_request_handler::HttpRequestHandler; | ||||||
| use crate::helpers::{admin_access_token_helper, admin_account_helper}; | use crate::helpers::{admin_access_token_helper, admin_account_helper}; | ||||||
| @@ -42,3 +43,10 @@ pub fn auth_with_reset_token(r: &mut HttpRequestHandler) -> RequestResult { | |||||||
| pub fn get_admin_id(r: &mut HttpRequestHandler) -> RequestResult { | pub fn get_admin_id(r: &mut HttpRequestHandler) -> RequestResult { | ||||||
|     r.set_response(AdminIDAPI::new(r.admin_id()?)) |     r.set_response(AdminIDAPI::new(r.admin_id()?)) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | /// Get current admin information | ||||||
|  | pub fn get_admin_info(r: &mut HttpRequestHandler) -> RequestResult { | ||||||
|  |     let admin = admin_account_helper::find_admin_by_id(r.admin_id()?)?; | ||||||
|  |  | ||||||
|  |     r.set_response(AdminInfoAPI::new(&admin)) | ||||||
|  | } | ||||||
| @@ -24,6 +24,12 @@ pub fn create(new_admin: &NewAdmin) -> Res<AdminID> { | |||||||
|         .map(|i| AdminID::new(i)) |         .map(|i| AdminID::new(i)) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | /// Get admin information by ID | ||||||
|  | pub fn find_admin_by_id(id: AdminID) -> Res<Admin> { | ||||||
|  |     database::QueryInfo::new(ADMIN_LIST_TABLE) | ||||||
|  |         .cond_admin_id("id", id) | ||||||
|  |         .query_row(db_to_admin) | ||||||
|  | } | ||||||
|  |  | ||||||
| /// Get admin information by admin email address | /// Get admin information by admin email address | ||||||
| pub fn find_admin_by_email(email: &str) -> Res<Admin> { | pub fn find_admin_by_email(email: &str) -> Res<Admin> { | ||||||
|   | |||||||
| @@ -171,6 +171,11 @@ impl QueryInfo { | |||||||
|         self |         self | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     pub fn cond_admin_id(mut self, key: &str, val: AdminID) -> QueryInfo { | ||||||
|  |         self.conditions.insert(key.to_string(), mysql::Value::from(val.id())); | ||||||
|  |         self | ||||||
|  |     } | ||||||
|  |  | ||||||
|     pub fn cond_group_id(mut self, key: &str, val: &GroupID) -> QueryInfo { |     pub fn cond_group_id(mut self, key: &str, val: &GroupID) -> QueryInfo { | ||||||
|         self.conditions.insert(key.to_string(), mysql::Value::from(val.id())); |         self.conditions.insert(key.to_string(), mysql::Value::from(val.id())); | ||||||
|         self |         self | ||||||
|   | |||||||
| @@ -350,5 +350,6 @@ pub fn get_routes() -> Vec<Route> { | |||||||
|         Route::limited_admin_post_without_login("/admin/accounts/auth_options", Box::new(admin_account_controller::get_auth_options), LimitPolicy::FAILURE(5)), |         Route::limited_admin_post_without_login("/admin/accounts/auth_options", Box::new(admin_account_controller::get_auth_options), LimitPolicy::FAILURE(5)), | ||||||
|         Route::limited_admin_post_without_login("/admin/accounts/auth_with_reset_token", Box::new(admin_account_controller::auth_with_reset_token), LimitPolicy::FAILURE(5)), |         Route::limited_admin_post_without_login("/admin/accounts/auth_with_reset_token", Box::new(admin_account_controller::auth_with_reset_token), LimitPolicy::FAILURE(5)), | ||||||
|         Route::admin_post("/admin/accounts/id", Box::new(admin_account_controller::get_admin_id)), |         Route::admin_post("/admin/accounts/id", Box::new(admin_account_controller::get_admin_id)), | ||||||
|  |         Route::admin_post("/admin/accounts/info", Box::new(admin_account_controller::get_admin_info)), | ||||||
|     ] |     ] | ||||||
| } | } | ||||||
		Reference in New Issue
	
	Block a user