Skip to content
Clone
main
36 lines 1.4 KB Rust
use ::session::AuthedUser;
use api::http::{Json, Path, State};
use api::rest::{AppResponseData, NoData};
use crate::errors::ApiError;
use crate::services::dto::MemberPath;
use crate::services::groups::AssignGroupCmd;
use crate::services::service::SpaceService;
#[utoipa::path(
post,
path = "/spaces/{space_name}/members/{user_id}/groups",
tag = "space",
description = "管理员将空间成员分配到指定群组。",
params(MemberPath),
request_body = AssignGroupCmd,
responses(
(status = 200, description = "group assigned", body = AppResponseData<NoData>),
(status = 403, description = "forbidden", body = AppResponseData<NoData>),
(status = 404, description = "not found", body = AppResponseData<NoData>),
(status = 409, description = "already assigned", body = AppResponseData<NoData>),
(status = 400, description = "request failed validation", body = AppResponseData<NoData>),
(status = 401, description = "authentication required", body = AppResponseData<NoData>)
)
)]
pub async fn assign_group(
State(service): State<SpaceService>,
AuthedUser(caller): AuthedUser,
Path(path): Path<MemberPath>,
Json(cmd): Json<AssignGroupCmd>,
) -> Result<AppResponseData<NoData>, ApiError> {
service
.assign_group(caller, &path.space_name, path.user_id, cmd)
.await?;
Ok(AppResponseData::empty())
}