34 lines
1.2 KiB
Python
34 lines
1.2 KiB
Python
# Copyright (c) 2023-present Plane Software, Inc. and contributors
|
|
# SPDX-License-Identifier: AGPL-3.0-only
|
|
# See the LICENSE file for details.
|
|
|
|
# Third party imports
|
|
from rest_framework.views import exception_handler
|
|
from rest_framework.exceptions import NotAuthenticated
|
|
from rest_framework.exceptions import Throttled
|
|
|
|
# Module imports
|
|
from plane.authentication.adapter.error import (
|
|
AuthenticationException,
|
|
AUTHENTICATION_ERROR_CODES,
|
|
)
|
|
|
|
|
|
def auth_exception_handler(exc, context):
|
|
# Call the default exception handler first, to get the standard error response.
|
|
response = exception_handler(exc, context)
|
|
# Check if an AuthenticationFailed exception is raised.
|
|
if isinstance(exc, NotAuthenticated):
|
|
response.status_code = 401
|
|
|
|
# Check if an Throttled exception is raised.
|
|
if isinstance(exc, Throttled):
|
|
exc = AuthenticationException(
|
|
error_code=AUTHENTICATION_ERROR_CODES["RATE_LIMIT_EXCEEDED"],
|
|
error_message="RATE_LIMIT_EXCEEDED",
|
|
)
|
|
response.data = exc.get_error_dict()
|
|
response.status_code = 429
|
|
|
|
# Return the response that is generated by the default exception handler.
|
|
return response
|