mirror of
https://github.com/meilisearch/meilisearch.git
synced 2024-11-22 18:17:39 +08:00
Merge #2922
2922: Add new error when using /keys without masterkey set r=ManyTheFish a=vishalsodani # Pull Request ## Related issue Fixes #2918 Please check if your PR fulfills the following requirements: - [x] Does this PR fix an existing issue, or have you listed the changes applied in the PR description (and why they are needed)? - [x] Have you read the contributing guidelines? - [x] Have you made sure that the title is accurate and descriptive of the changes? Co-authored-by: vishalsodani <vishalsodani@rediffmail.com>
This commit is contained in:
commit
ab1800551f
@ -9,6 +9,8 @@ pub enum AuthenticationError {
|
|||||||
// Triggered on configuration error.
|
// Triggered on configuration error.
|
||||||
#[error("An internal error has occurred. `Irretrievable state`.")]
|
#[error("An internal error has occurred. `Irretrievable state`.")]
|
||||||
IrretrievableState,
|
IrretrievableState,
|
||||||
|
#[error("Meilisearch is running without a master key. To access this API endpoint, you must have set a master key at launch.")]
|
||||||
|
MissingMasterKey,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ErrorCode for AuthenticationError {
|
impl ErrorCode for AuthenticationError {
|
||||||
@ -17,6 +19,7 @@ impl ErrorCode for AuthenticationError {
|
|||||||
AuthenticationError::MissingAuthorizationHeader => Code::MissingAuthorizationHeader,
|
AuthenticationError::MissingAuthorizationHeader => Code::MissingAuthorizationHeader,
|
||||||
AuthenticationError::InvalidToken => Code::InvalidToken,
|
AuthenticationError::InvalidToken => Code::InvalidToken,
|
||||||
AuthenticationError::IrretrievableState => Code::Internal,
|
AuthenticationError::IrretrievableState => Code::Internal,
|
||||||
|
AuthenticationError::MissingMasterKey => Code::MissingMasterKey,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -48,6 +48,8 @@ impl<P, D> GuardedData<P, D> {
|
|||||||
where
|
where
|
||||||
P: Policy + 'static,
|
P: Policy + 'static,
|
||||||
{
|
{
|
||||||
|
let missing_master_key = auth.get_master_key().is_none();
|
||||||
|
|
||||||
match Self::authenticate(auth, String::new(), None).await? {
|
match Self::authenticate(auth, String::new(), None).await? {
|
||||||
Some(filters) => match data {
|
Some(filters) => match data {
|
||||||
Some(data) => Ok(Self {
|
Some(data) => Ok(Self {
|
||||||
@ -55,8 +57,10 @@ impl<P, D> GuardedData<P, D> {
|
|||||||
filters,
|
filters,
|
||||||
_marker: PhantomData,
|
_marker: PhantomData,
|
||||||
}),
|
}),
|
||||||
|
|
||||||
None => Err(AuthenticationError::IrretrievableState.into()),
|
None => Err(AuthenticationError::IrretrievableState.into()),
|
||||||
},
|
},
|
||||||
|
None if missing_master_key => Err(AuthenticationError::MissingMasterKey.into()),
|
||||||
None => Err(AuthenticationError::MissingAuthorizationHeader.into()),
|
None => Err(AuthenticationError::MissingAuthorizationHeader.into()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1403,10 +1403,10 @@ async fn error_access_api_key_routes_no_master_key_set() {
|
|||||||
let mut server = Server::new().await;
|
let mut server = Server::new().await;
|
||||||
|
|
||||||
let expected_response = json!({
|
let expected_response = json!({
|
||||||
"message": "The Authorization header is missing. It must use the bearer authorization method.",
|
"message": "Meilisearch is running without a master key. To access this API endpoint, you must have set a master key at launch.",
|
||||||
"code": "missing_authorization_header",
|
"code": "missing_master_key",
|
||||||
"type": "auth",
|
"type": "auth",
|
||||||
"link": "https://docs.meilisearch.com/errors#missing_authorization_header"
|
"link": "https://docs.meilisearch.com/errors#missing_master_key"
|
||||||
});
|
});
|
||||||
let expected_code = 401;
|
let expected_code = 401;
|
||||||
|
|
||||||
|
@ -144,6 +144,7 @@ pub enum Code {
|
|||||||
InvalidStore,
|
InvalidStore,
|
||||||
InvalidToken,
|
InvalidToken,
|
||||||
MissingAuthorizationHeader,
|
MissingAuthorizationHeader,
|
||||||
|
MissingMasterKey,
|
||||||
NoSpaceLeftOnDevice,
|
NoSpaceLeftOnDevice,
|
||||||
DumpNotFound,
|
DumpNotFound,
|
||||||
TaskNotFound,
|
TaskNotFound,
|
||||||
@ -231,6 +232,9 @@ impl Code {
|
|||||||
MissingAuthorizationHeader => {
|
MissingAuthorizationHeader => {
|
||||||
ErrCode::authentication("missing_authorization_header", StatusCode::UNAUTHORIZED)
|
ErrCode::authentication("missing_authorization_header", StatusCode::UNAUTHORIZED)
|
||||||
}
|
}
|
||||||
|
MissingMasterKey => {
|
||||||
|
ErrCode::authentication("missing_master_key", StatusCode::UNAUTHORIZED)
|
||||||
|
}
|
||||||
TaskNotFound => ErrCode::invalid("task_not_found", StatusCode::NOT_FOUND),
|
TaskNotFound => ErrCode::invalid("task_not_found", StatusCode::NOT_FOUND),
|
||||||
DumpNotFound => ErrCode::invalid("dump_not_found", StatusCode::NOT_FOUND),
|
DumpNotFound => ErrCode::invalid("dump_not_found", StatusCode::NOT_FOUND),
|
||||||
NoSpaceLeftOnDevice => {
|
NoSpaceLeftOnDevice => {
|
||||||
|
Loading…
Reference in New Issue
Block a user