Skip to content

Commit

Permalink
Add logging to get a better understanding of production errors
Browse files Browse the repository at this point in the history
  • Loading branch information
FrankApiyo committed Sep 20, 2024
1 parent 40a2965 commit 9e0fd38
Showing 1 changed file with 11 additions and 0 deletions.
11 changes: 11 additions & 0 deletions oidc/viewsets.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

import importlib
import re
import traceback
import logging
from typing import Optional, Tuple

from django.conf import settings
Expand Down Expand Up @@ -37,6 +39,8 @@
default_config = getattr(default, "OPENID_CONNECT_VIEWSET_CONFIG", {})
SSO_COOKIE_NAME = "SSO"

logger = logging.getLogger(__name__)


class BaseOpenIDConnectViewset(viewsets.ViewSet):
"""
Expand Down Expand Up @@ -201,6 +205,7 @@ def validate_fields(self, data: dict) -> dict:
field_validation_regex = self.field_validation_regex[k]
regex = re.compile(field_validation_regex.get("regex"))
if regex and not regex.search(data[k]):
logger.info(f"Invalid `{k}` value `{data[k]}`")
raise ValueError(
field_validation_regex.get("help_text")
or f"Invalid `{k}` value `{data[k]}`"
Expand Down Expand Up @@ -321,11 +326,13 @@ def callback(self, request: HttpRequest, **kwargs: dict) -> HttpResponse: # noq
and list(missing_fields)[0] == "username"
):
data = {"id_token": id_token}
logger.info("missing_fields: ", missing_fields)
return Response(
data, template_name="oidc/oidc_user_data_entry.html"
)
else:
missing_fields = ", ".join(missing_fields)
logger.error("missing fields", missing_fields)
return Response(
{
"error": _(
Expand All @@ -343,6 +350,7 @@ def callback(self, request: HttpRequest, **kwargs: dict) -> HttpResponse: # noq
"id_token": id_token,
"error": f"{field.capitalize()} field is already in use.",
}
logger.info(data)
return Response(
data, template_name="oidc/oidc_user_data_entry.html"
)
Expand All @@ -356,6 +364,9 @@ def callback(self, request: HttpRequest, **kwargs: dict) -> HttpResponse: # noq

user = self.create_login_user(create_data)
except ValueError as e:
stack_trace = traceback.format_exc()
logger.info("ValueError")
logger.info(stack_trace)
return Response(
{"error": str(e), "id_token": id_token},
status=status.HTTP_400_BAD_REQUEST,
Expand Down

0 comments on commit 9e0fd38

Please sign in to comment.