diff --git a/src/errors.rs b/src/errors.rs index c0cd50e..920e0fe 100644 --- a/src/errors.rs +++ b/src/errors.rs @@ -117,6 +117,9 @@ pub enum ApiError { #[fail(display = "NotEnoughPermissions")] NotEnoughPermissions(String), + + #[fail(display = "TokenRequired")] + TokenRequired, } impl From for ApiError { @@ -182,6 +185,11 @@ impl ApiError { "error-type": "token-insufficient", "message": format!("Not enough permissions: {}", message), }), + ApiError::TokenRequired => json!({ + "status": 401, + "error-type": "token-required", + "message": "Token required" + }), } } @@ -196,6 +204,7 @@ impl ApiError { ApiError::WrongPublishedState(_, _, _) => StatusCode::BAD_REQUEST, ApiError::InvalidToken(_) => StatusCode::UNAUTHORIZED, ApiError::NotEnoughPermissions(ref _message) => StatusCode::FORBIDDEN, + ApiError::TokenRequired => StatusCode::UNAUTHORIZED, } } } diff --git a/src/tokens.rs b/src/tokens.rs index d7fcd6a..16bb3e2 100644 --- a/src/tokens.rs +++ b/src/tokens.rs @@ -74,9 +74,7 @@ impl ClaimsValidator for HttpRequest { if let Some(claims) = self.extensions().get::() { func(claims) } else { - Err(ApiError::NotEnoughPermissions( - "No token specified".to_string(), - )) + Err(ApiError::TokenRequired) } }