Make small changes and renaming

This commit is contained in:
ManyTheFish 2022-05-31 15:23:17 +02:00
parent 151f494110
commit b3c8915702
4 changed files with 18 additions and 22 deletions

View File

@ -29,21 +29,17 @@ pub struct Key {
impl Key { impl Key {
pub fn create_from_value(value: Value) -> Result<Self> { pub fn create_from_value(value: Value) -> Result<Self> {
let name = match value.get("name") { let name = match value.get("name") {
Some(Value::Null) => None, None | Some(Value::Null) => None,
Some(des) => Some( Some(des) => from_value(des.clone())
from_value(des.clone()) .map(Some)
.map_err(|_| AuthControllerError::InvalidApiKeyName(des.clone()))?, .map_err(|_| AuthControllerError::InvalidApiKeyName(des.clone()))?,
),
None => None,
}; };
let description = match value.get("description") { let description = match value.get("description") {
Some(Value::Null) => None, None | Some(Value::Null) => None,
Some(des) => Some( Some(des) => from_value(des.clone())
from_value(des.clone()) .map(Some)
.map_err(|_| AuthControllerError::InvalidApiKeyDescription(des.clone()))?, .map_err(|_| AuthControllerError::InvalidApiKeyDescription(des.clone()))?,
),
None => None,
}; };
let uid = value.get("uid").map_or_else( let uid = value.get("uid").map_or_else(

View File

@ -63,16 +63,16 @@ impl AuthController {
.ok_or_else(|| AuthControllerError::ApiKeyNotFound(uid.to_string())) .ok_or_else(|| AuthControllerError::ApiKeyNotFound(uid.to_string()))
} }
pub fn get_uid_from_sha(&self, key: &[u8]) -> Result<Option<Uuid>> { pub fn get_optional_uid_from_sha(&self, sha: &[u8]) -> Result<Option<Uuid>> {
match &self.master_key { match &self.master_key {
Some(master_key) => self.store.get_uid_from_sha(key, master_key.as_bytes()), Some(master_key) => self.store.get_uid_from_sha(sha, master_key.as_bytes()),
None => Ok(None), None => Ok(None),
} }
} }
pub fn try_get_uid_from_sha(&self, key: &str) -> Result<Uuid> { pub fn get_uid_from_sha(&self, sha: &str) -> Result<Uuid> {
self.get_uid_from_sha(key.as_bytes())? self.get_optional_uid_from_sha(sha.as_bytes())?
.ok_or_else(|| AuthControllerError::ApiKeyNotFound(key.to_string())) .ok_or_else(|| AuthControllerError::ApiKeyNotFound(sha.to_string()))
} }
pub fn get_key_filters( pub fn get_key_filters(

View File

@ -147,7 +147,7 @@ pub mod policies {
validation validation
} }
/// Extracts the key id used to sign the payload from the payload, without performing any validation. /// Extracts the key id used to sign the payload, without performing any validation.
fn extract_key_id(token: &str) -> Option<Uuid> { fn extract_key_id(token: &str) -> Option<Uuid> {
let mut validation = tenant_token_validation(); let mut validation = tenant_token_validation();
validation.insecure_disable_signature_validation(); validation.insecure_disable_signature_validation();
@ -188,7 +188,7 @@ pub mod policies {
return Some(filters); return Some(filters);
} else if let Some(action) = Action::from_repr(A) { } else if let Some(action) = Action::from_repr(A) {
// API key // API key
if let Ok(Some(uid)) = auth.get_uid_from_sha(token.as_bytes()) { if let Ok(Some(uid)) = auth.get_optional_uid_from_sha(token.as_bytes()) {
if let Ok(true) = auth.is_key_authorized(uid, action, index) { if let Ok(true) = auth.is_key_authorized(uid, action, index) {
return auth.get_key_filters(uid, None).ok(); return auth.get_key_filters(uid, None).ok();
} }

View File

@ -69,7 +69,7 @@ pub async fn get_api_key(
let key = path.into_inner().key; let key = path.into_inner().key;
let res = tokio::task::spawn_blocking(move || -> Result<_, AuthControllerError> { let res = tokio::task::spawn_blocking(move || -> Result<_, AuthControllerError> {
let uid = Uuid::parse_str(&key).or_else(|_| auth_controller.try_get_uid_from_sha(&key))?; let uid = Uuid::parse_str(&key).or_else(|_| auth_controller.get_uid_from_sha(&key))?;
let key = auth_controller.get_key(uid)?; let key = auth_controller.get_key(uid)?;
Ok(KeyView::from_key(key, &auth_controller)) Ok(KeyView::from_key(key, &auth_controller))
@ -88,7 +88,7 @@ pub async fn patch_api_key(
let key = path.into_inner().key; let key = path.into_inner().key;
let body = body.into_inner(); let body = body.into_inner();
let res = tokio::task::spawn_blocking(move || -> Result<_, AuthControllerError> { let res = tokio::task::spawn_blocking(move || -> Result<_, AuthControllerError> {
let uid = Uuid::parse_str(&key).or_else(|_| auth_controller.try_get_uid_from_sha(&key))?; let uid = Uuid::parse_str(&key).or_else(|_| auth_controller.get_uid_from_sha(&key))?;
let key = auth_controller.update_key(uid, body)?; let key = auth_controller.update_key(uid, body)?;
Ok(KeyView::from_key(key, &auth_controller)) Ok(KeyView::from_key(key, &auth_controller))
@ -105,7 +105,7 @@ pub async fn delete_api_key(
) -> Result<HttpResponse, ResponseError> { ) -> Result<HttpResponse, ResponseError> {
let key = path.into_inner().key; let key = path.into_inner().key;
tokio::task::spawn_blocking(move || { tokio::task::spawn_blocking(move || {
let uid = Uuid::parse_str(&key).or_else(|_| auth_controller.try_get_uid_from_sha(&key))?; let uid = Uuid::parse_str(&key).or_else(|_| auth_controller.get_uid_from_sha(&key))?;
auth_controller.delete_key(uid) auth_controller.delete_key(uid)
}) })
.await .await