Skip to content

Commit 975aa4b

Browse files
committed
feat: Add invoicing feature implementation plan, improve security logging, and enable CSRF protection.
1 parent bae4308 commit 975aa4b

File tree

5 files changed

+9
-8
lines changed

5 files changed

+9
-8
lines changed

backend/common/audit_log.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -152,13 +152,13 @@ def _log(
152152

153153
# Log to Python logger
154154
log_level = logging.INFO if success else logging.WARNING
155-
user_email = user.email if user else "anonymous"
156-
org_name = org.name if org else "none"
155+
user_id = str(user.id) if user else "anonymous"
156+
org_id = str(org.id) if org else "none"
157157

158158
logger.log(
159159
log_level,
160-
f"{event_type} | user={user_email} | org={org_name} | "
161-
f"ip={request_info.get('ip_address')} | {description}",
160+
f"{event_type} | user_id={user_id} | org_id={org_id} | "
161+
f"ip={request_info.get('ip_address')} | success={success}",
162162
)
163163

164164
def login_success(self, user, org, request=None):

backend/common/external_auth.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ def authenticate(self, request):
4646
return (profile.user, None)
4747

4848
except Org.DoesNotExist:
49-
logger.warning(f"Invalid API key attempted: {api_key[:8]}...")
49+
logger.warning("Invalid API key attempted")
5050
raise AuthenticationFailed("Invalid API Key")
5151

5252

backend/common/middleware/get_company.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,5 +137,5 @@ def _process_api_key_auth(self, request, api_key):
137137
logger.debug(f"Set org context from API key: org={organization.id}")
138138

139139
except Org.DoesNotExist:
140-
logger.warning(f"Invalid API key attempted: {api_key[:8]}...")
140+
logger.warning("Invalid API key attempted")
141141
raise AuthenticationFailed("Invalid API Key")

backend/common/views/auth_views.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -392,8 +392,8 @@ def post(self, request):
392392
status=status.HTTP_200_OK,
393393
)
394394

395-
except TokenError as e:
396-
return Response({"error": str(e)}, status=status.HTTP_401_UNAUTHORIZED)
395+
except TokenError:
396+
return Response({"error": "Invalid or expired token"}, status=status.HTTP_401_UNAUTHORIZED)
397397
except User.DoesNotExist:
398398
return Response(
399399
{"error": "User not found"}, status=status.HTTP_401_UNAUTHORIZED

backend/crm/settings.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
"whitenoise.middleware.WhiteNoiseMiddleware",
4747
"django.middleware.common.CommonMiddleware",
4848
"django.contrib.sessions.middleware.SessionMiddleware",
49+
"django.middleware.csrf.CsrfViewMiddleware", # CSRF protection
4950
"django.contrib.auth.middleware.AuthenticationMiddleware",
5051
"django.contrib.messages.middleware.MessageMiddleware",
5152
"django.middleware.clickjacking.XFrameOptionsMiddleware",

0 commit comments

Comments
 (0)