diff --git a/docs/docs/user_guide/examples.md b/docs/docs/user_guide/examples.md index d0f6384..878df65 100644 --- a/docs/docs/user_guide/examples.md +++ b/docs/docs/user_guide/examples.md @@ -61,7 +61,7 @@ def refresh( def read_current_user( credentials: JwtAuthorizationCredentials = Security(access_security) ): - # auto_error=False, fo we should check manually + # auto_error=False, so we should check manually if not credentials: raise HTTPException(status_code=401, detail='my-custom-details') diff --git a/fastapi_jwt/jwt.py b/fastapi_jwt/jwt.py index 10c7ec4..6ff25c7 100644 --- a/fastapi_jwt/jwt.py +++ b/fastapi_jwt/jwt.py @@ -64,6 +64,8 @@ def __init__( algorithm: str = jwt.ALGORITHMS.HS256, access_expires_delta: Optional[timedelta] = None, refresh_expires_delta: Optional[timedelta] = None, + expired_signature_error_message: str = '', + incorrect_token_error_message: str = '', ): assert jwt is not None, "python-jose must be installed to use JwtAuth" if places: @@ -82,6 +84,8 @@ def __init__( self.algorithm = algorithm self.access_expires_delta = access_expires_delta or timedelta(minutes=15) self.refresh_expires_delta = refresh_expires_delta or timedelta(days=31) + self.expired_signature_error_message = expired_signature_error_message + self.incorrect_token_error_message = incorrect_token_error_message @classmethod def from_other( @@ -113,14 +117,18 @@ def _decode(self, token: str) -> Optional[Dict[str, Any]]: except jwt.ExpiredSignatureError as e: if self.auto_error: raise HTTPException( - status_code=HTTP_401_UNAUTHORIZED, detail=f"Token time expired: {e}" + status_code=HTTP_401_UNAUTHORIZED, + detail=f"Token time expired: {e}", + message=self.expired_signature_error_message ) else: return None except jwt.JWTError as e: if self.auto_error: raise HTTPException( - status_code=HTTP_401_UNAUTHORIZED, detail=f"Wrong token: {e}" + status_code=HTTP_401_UNAUTHORIZED, + detail=f"Wrong token: {e}", + message=self.incorrect_token_error_message ) else: return None @@ -253,6 +261,8 @@ def __init__( algorithm: str = jwt.ALGORITHMS.HS256, access_expires_delta: Optional[timedelta] = None, refresh_expires_delta: Optional[timedelta] = None, + expired_signature_error_message: str = '', + incorrect_token_error_message: str = '', ): super().__init__( secret_key, @@ -261,6 +271,8 @@ def __init__( algorithm=algorithm, access_expires_delta=access_expires_delta, refresh_expires_delta=refresh_expires_delta, + expired_signature_error_message = expired_signature_error_message, + incorrect_token_error_message = incorrect_token_error_message, ) async def _get_credentials( @@ -285,6 +297,8 @@ def __init__( algorithm: str = jwt.ALGORITHMS.HS256, access_expires_delta: Optional[timedelta] = None, refresh_expires_delta: Optional[timedelta] = None, + expired_signature_error_message: str = '', + incorrect_token_error_message: str = '', ): super().__init__( secret_key=secret_key, @@ -293,6 +307,8 @@ def __init__( algorithm=algorithm, access_expires_delta=access_expires_delta, refresh_expires_delta=refresh_expires_delta, + expired_signature_error_message = expired_signature_error_message, + incorrect_token_error_message = incorrect_token_error_message, ) async def __call__( @@ -309,6 +325,8 @@ def __init__( algorithm: str = jwt.ALGORITHMS.HS256, access_expires_delta: Optional[timedelta] = None, refresh_expires_delta: Optional[timedelta] = None, + expired_signature_error_message: str = '', + incorrect_token_error_message: str = '', ): super().__init__( secret_key=secret_key, @@ -317,6 +335,8 @@ def __init__( algorithm=algorithm, access_expires_delta=access_expires_delta, refresh_expires_delta=refresh_expires_delta, + expired_signature_error_message = expired_signature_error_message, + incorrect_token_error_message = incorrect_token_error_message, ) async def __call__( @@ -334,6 +354,8 @@ def __init__( algorithm: str = jwt.ALGORITHMS.HS256, access_expires_delta: Optional[timedelta] = None, refresh_expires_delta: Optional[timedelta] = None, + expired_signature_error_message: str = '', + incorrect_token_error_message: str = '', ): super().__init__( secret_key=secret_key, @@ -342,6 +364,8 @@ def __init__( algorithm=algorithm, access_expires_delta=access_expires_delta, refresh_expires_delta=refresh_expires_delta, + expired_signature_error_message = expired_signature_error_message, + incorrect_token_error_message = incorrect_token_error_message, ) async def __call__( @@ -364,6 +388,8 @@ def __init__( algorithm: str = jwt.ALGORITHMS.HS256, access_expires_delta: Optional[timedelta] = None, refresh_expires_delta: Optional[timedelta] = None, + expired_signature_error_message: str = '', + incorrect_token_error_message: str = '', ): super().__init__( secret_key, @@ -372,6 +398,8 @@ def __init__( algorithm=algorithm, access_expires_delta=access_expires_delta, refresh_expires_delta=refresh_expires_delta, + expired_signature_error_message = expired_signature_error_message, + incorrect_token_error_message = incorrect_token_error_message, ) async def _get_credentials( @@ -406,6 +434,8 @@ def __init__( algorithm: str = jwt.ALGORITHMS.HS256, access_expires_delta: Optional[timedelta] = None, refresh_expires_delta: Optional[timedelta] = None, + expired_signature_error_message: str = '', + incorrect_token_error_message: str = '', ): super().__init__( secret_key=secret_key, @@ -414,6 +444,8 @@ def __init__( algorithm=algorithm, access_expires_delta=access_expires_delta, refresh_expires_delta=refresh_expires_delta, + expired_signature_error_message = expired_signature_error_message, + incorrect_token_error_message = incorrect_token_error_message, ) async def __call__( @@ -430,6 +462,8 @@ def __init__( algorithm: str = jwt.ALGORITHMS.HS256, access_expires_delta: Optional[timedelta] = None, refresh_expires_delta: Optional[timedelta] = None, + expired_signature_error_message: str = '', + incorrect_token_error_message: str = '', ): super().__init__( secret_key=secret_key, @@ -438,6 +472,8 @@ def __init__( algorithm=algorithm, access_expires_delta=access_expires_delta, refresh_expires_delta=refresh_expires_delta, + expired_signature_error_message = expired_signature_error_message, + incorrect_token_error_message = incorrect_token_error_message, ) async def __call__( @@ -455,6 +491,8 @@ def __init__( algorithm: str = jwt.ALGORITHMS.HS256, access_expires_delta: Optional[timedelta] = None, refresh_expires_delta: Optional[timedelta] = None, + expired_signature_error_message: str = '', + incorrect_token_error_message: str = '', ): super().__init__( secret_key=secret_key, @@ -463,6 +501,8 @@ def __init__( algorithm=algorithm, access_expires_delta=access_expires_delta, refresh_expires_delta=refresh_expires_delta, + expired_signature_error_message = expired_signature_error_message, + incorrect_token_error_message = incorrect_token_error_message, ) async def __call__(