unifly_api/controller/session_queries/
admin.rs1use crate::controller::Controller;
2use crate::controller::support::require_session;
3use crate::core_error::CoreError;
4use crate::model::{Admin, EntityId};
5
6impl Controller {
7 pub async fn list_admins(&self) -> Result<Vec<Admin>, CoreError> {
8 let guard = self.inner.session_client.lock().await;
9 let session = require_session(guard.as_ref())?;
10 let raw = session.list_admins().await?;
11 Ok(raw
12 .into_iter()
13 .map(|value| Admin {
14 id: value
15 .get("_id")
16 .and_then(|value| value.as_str())
17 .map_or_else(
18 || EntityId::Legacy("unknown".into()),
19 |value| EntityId::Legacy(value.into()),
20 ),
21 name: value
22 .get("name")
23 .and_then(|value| value.as_str())
24 .unwrap_or("")
25 .to_owned(),
26 email: value
27 .get("email")
28 .and_then(|value| value.as_str())
29 .map(String::from),
30 role: value
31 .get("role")
32 .and_then(|value| value.as_str())
33 .unwrap_or("unknown")
34 .to_owned(),
35 is_super: value
36 .get("is_super")
37 .and_then(serde_json::Value::as_bool)
38 .unwrap_or(false),
39 last_login: None,
40 })
41 .collect())
42 }
43
44 pub async fn list_users(
45 &self,
46 ) -> Result<Vec<crate::session::models::SessionUserEntry>, CoreError> {
47 let guard = self.inner.session_client.lock().await;
48 let session = require_session(guard.as_ref())?;
49 Ok(session.list_users().await?)
50 }
51}