backend/controller/
users.rs1use actix_web::{get, web::Query, HttpResponse, Result};
4
5use crate::{
6 config::{
7 auth::user_info::UserInfo,
8 data::{SharedHttpClient, SharedKeycloakApi},
9 },
10 model::dto::{PageParameters, UserSearchParameters},
11 service,
12};
13
14#[utoipa::path(
19 context_path = "/api/users",
20 params(
21 UserSearchParameters,
22 ),
23 responses(
24 (status = 200, description = "Users matching the username search", body = Vec<UserDto>)
25 ),
26 security(
27 ("oauth2" = [])
28 )
29)]
30#[get("")]
31pub async fn find(
32 search_query: Query<UserSearchParameters>,
33 pagination_query: Query<PageParameters>,
34 user_info: UserInfo,
35 keycloak_api: SharedKeycloakApi,
36 http_client: SharedHttpClient,
37) -> Result<HttpResponse> {
38 let response = service::users::search_by_username(
39 &search_query,
40 &pagination_query,
41 user_info.id,
42 &keycloak_api,
43 &http_client,
44 )
45 .await?;
46 Ok(HttpResponse::Ok().json(response))
47}