Skip to main content

backbone_catalog/application/auth/
attribute_value_auth.rs

1//! Auth configuration for AttributeValue handlers
2//!
3//! Generated by metaphor-schema. Do not edit manually.
4//!
5//! Implements `ResourcePolicy<AttributeValue>` with entity-specific permission
6//! string constants. Guard middleware logic lives in backbone-auth.
7
8use backbone_auth::{ResourcePolicy, ResourceAction, PermissionGuard, ServicePermissionGuard};
9use async_trait::async_trait;
10
11use crate::application::service::AttributeValueService;
12use crate::domain::entity::AttributeValue;
13
14/// Permission string constants for AttributeValue operations.
15pub mod permissions {
16    pub const LIST:        &str = "attribute_value:list";
17    pub const READ:        &str = "attribute_value:read";
18    pub const CREATE:      &str = "attribute_value:create";
19    pub const UPDATE:      &str = "attribute_value:update";
20    pub const DELETE:      &str = "attribute_value:delete";
21    pub const RESTORE:     &str = "attribute_value:restore";
22    pub const TRASH:       &str = "attribute_value:trash";
23    pub const EMPTY_TRASH: &str = "attribute_value:empty_trash";
24    pub const BULK_CREATE: &str = "attribute_value:bulk_create";
25    pub const UPSERT:      &str = "attribute_value:upsert";
26}
27
28/// Resource policy for AttributeValue — maps CRUD actions to permission strings.
29pub struct AttributeValuePolicy;
30
31#[async_trait]
32impl ResourcePolicy<AttributeValue> for AttributeValuePolicy {
33    async fn can(
34        &self,
35        action: ResourceAction,
36        _entity: &AttributeValue,
37        ctx: &backbone_auth::middleware::AuthContext,
38    ) -> bool {
39        let required = match action {
40            ResourceAction::Read | ResourceAction::List => permissions::READ,
41            ResourceAction::Create => permissions::CREATE,
42            ResourceAction::Update | ResourceAction::Patch => permissions::UPDATE,
43            ResourceAction::Delete | ResourceAction::HardDelete => permissions::DELETE,
44            ResourceAction::Restore => permissions::RESTORE,
45            ResourceAction::Custom(_) => return false,
46        };
47        ctx.permissions.iter().any(|p| p == required)
48    }
49}
50
51/// Permission guard for AttributeValue handlers.
52///
53/// Wraps `AttributeValueService` and checks `AttributeValuePolicy` before delegating.
54pub type AttributeValueGuard = PermissionGuard<AttributeValue>;
55
56/// Service-integrated permission guard for AttributeValue (for use in generated handlers).
57pub type AttributeValueServiceGuard = ServicePermissionGuard<AttributeValue, AttributeValueService, AttributeValuePolicy>;
58
59// <<< CUSTOM
60// END CUSTOM