mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-02 01:10:23 +08:00
Add API key allowed IP data types
This commit is contained in:
@@ -24,6 +24,7 @@ pub struct StoredAuthApiKeySnapshot {
|
||||
pub api_key_allowed_providers: Option<Vec<String>>,
|
||||
pub api_key_allowed_api_formats: Option<Vec<String>>,
|
||||
pub api_key_allowed_models: Option<Vec<String>>,
|
||||
pub api_key_allowed_ips: Option<Vec<String>>,
|
||||
}
|
||||
|
||||
impl StoredAuthApiKeySnapshot {
|
||||
@@ -97,9 +98,18 @@ impl StoredAuthApiKeySnapshot {
|
||||
api_key_allowed_models,
|
||||
"api_keys.allowed_models",
|
||||
)?,
|
||||
api_key_allowed_ips: None,
|
||||
})
|
||||
}
|
||||
|
||||
pub fn with_api_key_allowed_ips(
|
||||
mut self,
|
||||
api_key_allowed_ips: Option<serde_json::Value>,
|
||||
) -> Result<Self, crate::DataLayerError> {
|
||||
self.api_key_allowed_ips = parse_string_list(api_key_allowed_ips, "api_keys.allowed_ips")?;
|
||||
Ok(self)
|
||||
}
|
||||
|
||||
pub fn is_currently_usable(&self, now_unix_secs: u64) -> bool {
|
||||
if !self.user_is_active || self.user_is_deleted {
|
||||
return false;
|
||||
@@ -148,6 +158,7 @@ pub struct ResolvedAuthApiKeySnapshot {
|
||||
pub api_key_allowed_providers: Option<Vec<String>>,
|
||||
pub api_key_allowed_api_formats: Option<Vec<String>>,
|
||||
pub api_key_allowed_models: Option<Vec<String>>,
|
||||
pub api_key_allowed_ips: Option<Vec<String>>,
|
||||
pub currently_usable: bool,
|
||||
}
|
||||
|
||||
@@ -177,6 +188,7 @@ impl ResolvedAuthApiKeySnapshot {
|
||||
api_key_allowed_providers: snapshot.api_key_allowed_providers,
|
||||
api_key_allowed_api_formats: snapshot.api_key_allowed_api_formats,
|
||||
api_key_allowed_models: snapshot.api_key_allowed_models,
|
||||
api_key_allowed_ips: snapshot.api_key_allowed_ips,
|
||||
currently_usable,
|
||||
};
|
||||
resolved.constrain_non_standalone_api_key_policy_to_user_policy();
|
||||
@@ -332,6 +344,7 @@ pub struct StoredAuthApiKeyExportRecord {
|
||||
pub allowed_providers: Option<Vec<String>>,
|
||||
pub allowed_api_formats: Option<Vec<String>>,
|
||||
pub allowed_models: Option<Vec<String>>,
|
||||
pub allowed_ips: Option<Vec<String>>,
|
||||
pub rate_limit: Option<i32>,
|
||||
pub concurrent_limit: Option<i32>,
|
||||
pub force_capabilities: Option<serde_json::Value>,
|
||||
@@ -403,6 +416,7 @@ impl StoredAuthApiKeyExportRecord {
|
||||
"api_keys.allowed_api_formats",
|
||||
)?,
|
||||
allowed_models: parse_string_list(allowed_models, "api_keys.allowed_models")?,
|
||||
allowed_ips: None,
|
||||
rate_limit,
|
||||
concurrent_limit,
|
||||
force_capabilities,
|
||||
@@ -444,6 +458,14 @@ impl StoredAuthApiKeyExportRecord {
|
||||
self.feature_settings = normalize_optional_json(feature_settings);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn with_allowed_ips(
|
||||
mut self,
|
||||
allowed_ips: Option<serde_json::Value>,
|
||||
) -> Result<Self, crate::DataLayerError> {
|
||||
self.allowed_ips = parse_string_list(allowed_ips, "api_keys.allowed_ips")?;
|
||||
Ok(self)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, serde::Serialize, serde::Deserialize)]
|
||||
@@ -469,6 +491,7 @@ pub struct CreateUserApiKeyRecord {
|
||||
pub allowed_providers: Option<Vec<String>>,
|
||||
pub allowed_api_formats: Option<Vec<String>>,
|
||||
pub allowed_models: Option<Vec<String>>,
|
||||
pub allowed_ips: Option<Vec<String>>,
|
||||
pub rate_limit: i32,
|
||||
pub concurrent_limit: Option<i32>,
|
||||
pub force_capabilities: Option<serde_json::Value>,
|
||||
@@ -487,6 +510,7 @@ pub struct UpdateUserApiKeyBasicRecord {
|
||||
pub name: Option<String>,
|
||||
pub rate_limit: Option<i32>,
|
||||
pub concurrent_limit: Option<i32>,
|
||||
pub allowed_ips: Option<Option<Vec<String>>>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq)]
|
||||
@@ -499,6 +523,7 @@ pub struct CreateStandaloneApiKeyRecord {
|
||||
pub allowed_providers: Option<Vec<String>>,
|
||||
pub allowed_api_formats: Option<Vec<String>>,
|
||||
pub allowed_models: Option<Vec<String>>,
|
||||
pub allowed_ips: Option<Vec<String>>,
|
||||
pub rate_limit: Option<i32>,
|
||||
pub concurrent_limit: Option<i32>,
|
||||
pub force_capabilities: Option<serde_json::Value>,
|
||||
@@ -521,6 +546,7 @@ pub struct UpdateStandaloneApiKeyBasicRecord {
|
||||
pub allowed_providers: Option<Option<Vec<String>>>,
|
||||
pub allowed_api_formats: Option<Option<Vec<String>>>,
|
||||
pub allowed_models: Option<Option<Vec<String>>>,
|
||||
pub allowed_ips: Option<Option<Vec<String>>>,
|
||||
pub expires_at_present: bool,
|
||||
pub expires_at_unix_secs: Option<u64>,
|
||||
pub auto_delete_on_expiry_present: bool,
|
||||
|
||||
Reference in New Issue
Block a user