Skip to main content

cufflink_types/manifest/
authorization.rs

1use serde::{Deserialize, Serialize};
2
3/// Authorization configuration declared in the service manifest.
4#[derive(Debug, Clone, Serialize, Deserialize)]
5pub struct AuthorizationConfig {
6    /// Permission areas declared by this service.
7    #[serde(default)]
8    pub areas: Vec<PermissionAreaDef>,
9    /// Default roles to seed on first deployment.
10    #[serde(default)]
11    pub default_roles: Vec<DefaultRoleDef>,
12}
13
14/// A permission area with its supported operations.
15#[derive(Debug, Clone, Serialize, Deserialize)]
16pub struct PermissionAreaDef {
17    pub name: String,
18    #[serde(default)]
19    pub operations: Vec<String>,
20}
21
22/// A default role seeded on deployment.
23#[derive(Debug, Clone, Serialize, Deserialize)]
24pub struct DefaultRoleDef {
25    pub name: String,
26    #[serde(default, skip_serializing_if = "Option::is_none")]
27    pub description: Option<String>,
28    #[serde(default)]
29    pub permissions: Vec<String>,
30}