mirror of
https://github.com/i701/sarlink-portal-api.git
synced 2025-06-13 13:36: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 import admin
|
||||||
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
|
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 api.models import User, Atoll, Island, TemporaryUser
|
||||||
from django.contrib.auth.models import Permission
|
from django.contrib.auth.models import Permission
|
||||||
|
|
||||||
@ -63,6 +66,14 @@ class UserAdmin(BaseUserAdmin):
|
|||||||
("Important dates", {"fields": ("last_login", "date_joined")}),
|
("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):
|
class TemporaryUserAdmin(admin.ModelAdmin):
|
||||||
list_display = (
|
list_display = (
|
||||||
|
@ -44,6 +44,29 @@ def authenticate_by_token(callback_token):
|
|||||||
|
|
||||||
|
|
||||||
def create_callback_token_for_user(user, token_type):
|
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 = None
|
||||||
token_type = token_type.upper()
|
token_type = token_type.upper()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user