openstack_keystone_core/token/
backend.rs1use crate::config::Config;
17use crate::token::{TokenProviderError, types::*};
18
19use crate::keystone::ServiceState;
20
21pub mod fernet;
22pub use fernet::*;
23
24#[cfg_attr(test, mockall::automock)]
26pub trait TokenBackend: Send + Sync {
27 fn set_config(&mut self, g: Config);
29
30 fn decode(&self, credential: &str) -> Result<Token, TokenProviderError>;
32
33 fn encode(&self, token: &Token) -> Result<String, TokenProviderError>;
35}
36
37#[cfg_attr(test, mockall::automock)]
39#[async_trait::async_trait]
40pub trait TokenRestrictionBackend: Send + Sync {
41 async fn get_token_restriction<'a>(
43 &self,
44 state: &ServiceState,
45 id: &'a str,
46 expand_roles: bool,
47 ) -> Result<Option<TokenRestriction>, TokenProviderError>;
48
49 async fn create_token_restriction<'a>(
51 &self,
52 state: &ServiceState,
53 restriction: TokenRestrictionCreate,
54 ) -> Result<TokenRestriction, TokenProviderError>;
55
56 async fn list_token_restrictions<'a>(
58 &self,
59 state: &ServiceState,
60 params: &TokenRestrictionListParameters,
61 ) -> Result<Vec<TokenRestriction>, TokenProviderError>;
62
63 async fn update_token_restriction<'a>(
65 &self,
66 state: &ServiceState,
67 id: &'a str,
68 restriction: TokenRestrictionUpdate,
69 ) -> Result<TokenRestriction, TokenProviderError>;
70
71 async fn delete_token_restriction<'a>(
73 &self,
74 state: &ServiceState,
75 id: &'a str,
76 ) -> Result<(), TokenProviderError>;
77}