cat_gateway/service/common/auth/
none_or_rbac.rs

1//! Either has No Authorization, or RBAC Token.
2
3use catalyst_types::id_uri::IdUri;
4use poem_openapi::SecurityScheme;
5
6use super::{none::NoAuthorization, rbac::scheme::CatalystRBACSecurityScheme};
7
8#[derive(SecurityScheme)]
9#[allow(dead_code, clippy::upper_case_acronyms, clippy::large_enum_variant)]
10/// Endpoint allows Authorization with or without RBAC Token.
11pub(crate) enum NoneOrRBAC {
12    /// Has RBAC Token.
13    RBAC(CatalystRBACSecurityScheme),
14    /// Has No Authorization.
15    None(NoAuthorization),
16}
17
18impl From<NoneOrRBAC> for Option<IdUri> {
19    fn from(value: NoneOrRBAC) -> Self {
20        match value {
21            NoneOrRBAC::RBAC(auth) => Some(auth.into()),
22            NoneOrRBAC::None(_) => None,
23        }
24    }
25}