bios_iam/console_app/api/
iam_ca_cert_manage_api.rs

1use tardis::web::context_extractor::TardisContextExtractor;
2use tardis::web::poem_openapi;
3use tardis::web::poem_openapi::{param::Path, payload::Json};
4use tardis::web::web_resp::{TardisApiResult, TardisResp, Void};
5
6use bios_basic::rbum::dto::rbum_cert_dto::RbumCertSummaryWithSkResp;
7use bios_basic::rbum::dto::rbum_rel_dto::RbumRelBoneResp;
8
9use crate::basic::dto::iam_cert_dto::IamCertModifyVisibilityRequest;
10use crate::basic::serv::iam_cert_serv::IamCertServ;
11use crate::iam_constants;
12use bios_basic::helper::request_helper::try_set_real_ip_from_req_to_ctx;
13use tardis::web::poem::Request;
14#[derive(Clone, Default)]
15pub struct IamCaCertManageApi;
16
17/// Tenant Console Cert manage API
18/// 租户控制台证书管理API
19#[poem_openapi::OpenApi(prefix_path = "/ca/cert/manage", tag = "bios_basic::ApiTag::Tenant")]
20impl IamCaCertManageApi {
21    /// get manage cert
22    /// 获取证书
23    #[oai(path = "/:id", method = "get")]
24    async fn get_manage_cert(&self, id: Path<String>, ctx: TardisContextExtractor, request: &Request) -> TardisApiResult<RbumCertSummaryWithSkResp> {
25        try_set_real_ip_from_req_to_ctx(request, &ctx.0).await?;
26        let funs = iam_constants::get_tardis_inst();
27        let ctx = IamCertServ::use_sys_or_tenant_ctx_unsafe(ctx.0)?;
28        let cert = IamCertServ::get_3th_kind_cert_by_id(&id.0, true, &funs, &ctx).await?;
29        ctx.execute_task().await?;
30        TardisResp::ok(cert)
31    }
32
33    /// get manage cert
34    /// 获取证书
35    #[oai(path = "/:id", method = "put")]
36    async fn modify_sk_visibility(&self, id: Path<String>, body: Json<IamCertModifyVisibilityRequest>, ctx: TardisContextExtractor, request: &Request) -> TardisApiResult<Void> {
37        try_set_real_ip_from_req_to_ctx(request, &ctx.0).await?;
38        let mut funs = iam_constants::get_tardis_inst();
39        let ctx = IamCertServ::use_sys_or_tenant_ctx_unsafe(ctx.0)?;
40        funs.begin().await?;
41        IamCertServ::modify_sk_visibility(&id.0, body.0, &funs, &ctx).await?;
42        funs.commit().await?;
43        ctx.execute_task().await?;
44        TardisResp::ok(Void)
45    }
46
47    /// Find Manage Certs By item Id
48    /// 根据item_id查找证书
49    #[oai(path = "/rel/:item_id", method = "get")]
50    async fn find_certs(&self, item_id: Path<String>, ctx: TardisContextExtractor, request: &Request) -> TardisApiResult<Vec<RbumRelBoneResp>> {
51        try_set_real_ip_from_req_to_ctx(request, &ctx.0).await?;
52        let funs = iam_constants::get_tardis_inst();
53        let ctx = IamCertServ::use_sys_or_tenant_ctx_unsafe(ctx.0)?;
54        let rbum_certs = IamCertServ::find_to_simple_rel_cert(&item_id.0, None, None, &funs, &ctx).await?;
55        ctx.execute_task().await?;
56        TardisResp::ok(rbum_certs)
57    }
58}