systemprompt_security/authz/
extension.rs1use systemprompt_extension::prelude::*;
2
3#[derive(Debug, Clone, Copy, Default)]
4pub struct AuthzExtension;
5
6impl Extension for AuthzExtension {
7 fn metadata(&self) -> ExtensionMetadata {
8 ExtensionMetadata {
9 id: "authz",
10 name: "Authorization",
11 version: env!("CARGO_PKG_VERSION"),
12 }
13 }
14
15 fn migration_weight(&self) -> u32 {
16 110
17 }
18
19 fn is_required(&self) -> bool {
20 true
21 }
22
23 fn schemas(&self) -> Vec<SchemaDefinition> {
24 vec![
25 SchemaDefinition::new(
26 "access_control_rules",
27 include_str!("schema/access_control_rules.sql"),
28 )
29 .with_required_columns(vec![
30 "id".into(),
31 "entity_type".into(),
32 "entity_id".into(),
33 "rule_type".into(),
34 "rule_value".into(),
35 "access".into(),
36 ]),
37 SchemaDefinition::new(
38 "governance_decisions",
39 include_str!("schema/governance_decisions.sql"),
40 )
41 .with_required_columns(vec![
42 "id".into(),
43 "user_id".into(),
44 "session_id".into(),
45 "tool_name".into(),
46 "decision".into(),
47 "policy".into(),
48 "reason".into(),
49 ]),
50 ]
51 }
52
53 fn dependencies(&self) -> Vec<&'static str> {
54 vec!["users"]
55 }
56}
57
58register_extension!(AuthzExtension);