mirror of
https://github.com/i701/sarlink-portal-api.git
synced 2025-06-12 12:56:20 +00:00
Enhance UserAdmin save logic to auto-generate email from mobile or user ID; improve token creation logging and user existence check
All checks were successful
Build and Push Docker Images / Build and Push Docker Images (push) Successful in 4m18s
All checks were successful
Build and Push Docker Images / Build and Push Docker Images (push) Successful in 4m18s
This commit is contained in:
parent
4db9d7fabd
commit
38d80709db
11
api/admin.py
11
api/admin.py
@ -1,5 +1,8 @@
|
||||
from typing import Any
|
||||
from django.contrib import admin
|
||||
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
|
||||
from django.forms.models import ModelForm
|
||||
from django.http.request import HttpRequest
|
||||
from api.models import User, Atoll, Island, TemporaryUser
|
||||
from django.contrib.auth.models import Permission
|
||||
|
||||
@ -63,6 +66,14 @@ class UserAdmin(BaseUserAdmin):
|
||||
("Important dates", {"fields": ("last_login", "date_joined")}),
|
||||
)
|
||||
|
||||
def save_model(self, request, obj, form, change):
|
||||
if not obj.email:
|
||||
if obj.mobile:
|
||||
obj.email = f"{obj.mobile}@sarlink.net"
|
||||
else:
|
||||
obj.email = f"user_{obj.pk or 'new'}@sarlink.net"
|
||||
super().save_model(request, obj, form, change)
|
||||
|
||||
|
||||
class TemporaryUserAdmin(admin.ModelAdmin):
|
||||
list_display = (
|
||||
|
@ -44,6 +44,29 @@ def authenticate_by_token(callback_token):
|
||||
|
||||
|
||||
def create_callback_token_for_user(user, token_type):
|
||||
logger.info(
|
||||
f"Attempting to create token for user: {user}, user.pk: {user.pk if user else 'None'}"
|
||||
)
|
||||
if user and user.pk:
|
||||
try:
|
||||
# Explicitly check if the user exists in the database
|
||||
User.objects.get(pk=user.pk)
|
||||
logger.info(
|
||||
f"User with pk {user.pk} confirmed to exist in DB before token creation."
|
||||
)
|
||||
except User.DoesNotExist:
|
||||
logger.error(
|
||||
f"CRITICAL: User with pk {user.pk} DOES NOT EXIST in DB right before token creation for {user}!"
|
||||
)
|
||||
return None
|
||||
# You might want to return None or raise an exception here to prevent the IntegrityError
|
||||
# For example: return None
|
||||
else:
|
||||
logger.error(
|
||||
f"CRITICAL: Invalid user object passed to create_callback_token_for_user: {user}"
|
||||
)
|
||||
# return None
|
||||
|
||||
token = None
|
||||
token_type = token_type.upper()
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user