mirror of
https://github.com/meilisearch/MeiliSearch
synced 2024-11-26 14:54:27 +01:00
Make small changes and renaming
This commit is contained in:
parent
151f494110
commit
b3c8915702
@ -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(
|
||||||
|
@ -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(
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user