mirror of
				https://gitlab.com/comunic/comunicapiv3
				synced 2025-10-30 23:24:42 +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, | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -4,4 +4,5 @@ | ||||
|  | ||||
| pub mod admin_auth_options; | ||||
| 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_success::AdminAuthSuccess; | ||||
| 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::http_request_handler::HttpRequestHandler; | ||||
| use crate::helpers::{admin_access_token_helper, admin_account_helper}; | ||||
| @@ -41,4 +42,11 @@ pub fn auth_with_reset_token(r: &mut HttpRequestHandler) -> RequestResult { | ||||
| /// Get current admin ID | ||||
| pub fn get_admin_id(r: &mut HttpRequestHandler) -> RequestResult { | ||||
|     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)) | ||||
| } | ||||
|  | ||||
| /// 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 | ||||
| pub fn find_admin_by_email(email: &str) -> Res<Admin> { | ||||
|   | ||||
| @@ -171,6 +171,11 @@ impl QueryInfo { | ||||
|         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 { | ||||
|         self.conditions.insert(key.to_string(), mysql::Value::from(val.id())); | ||||
|         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_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/info", Box::new(admin_account_controller::get_admin_info)), | ||||
|     ] | ||||
| } | ||||
		Reference in New Issue
	
	Block a user