mirror of
https://github.com/i701/sarlink-portal-api.git
synced 2025-10-05 13:35:23 +00:00
feat(user): update user verification process to utilize TemporaryUser model and include verification status in response
All checks were successful
Build and Push Docker Images / Build and Push Docker Images (push) Successful in 5m54s
All checks were successful
Build and Push Docker Images / Build and Push Docker Images (push) Successful in 5m54s
This commit is contained in:
64
api/tasks.py
64
api/tasks.py
@@ -1,6 +1,6 @@
|
|||||||
# pyright: reportGeneralTypeIssues=false
|
# pyright: reportGeneralTypeIssues=false
|
||||||
from django.shortcuts import get_object_or_404
|
from django.shortcuts import get_object_or_404
|
||||||
from api.models import User
|
from api.models import TemporaryUser
|
||||||
from devices.models import Device
|
from devices.models import Device
|
||||||
from api.notifications import send_sms
|
from api.notifications import send_sms
|
||||||
import os
|
import os
|
||||||
@@ -146,12 +146,12 @@ def verify_user_with_person_api_task(user_id: int):
|
|||||||
if not user_id:
|
if not user_id:
|
||||||
logger.error("User ID is not provided.")
|
logger.error("User ID is not provided.")
|
||||||
return None
|
return None
|
||||||
user = get_object_or_404(User, id=user_id)
|
t_user = get_object_or_404(TemporaryUser, id=user_id)
|
||||||
if not user:
|
if not t_user:
|
||||||
logger.error(f"User with ID {user_id} not found.")
|
logger.error(f"User with ID {user_id} not found.")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
verification_failed_message = f"""*The following user verification failed*:\n\n*ID Card:* {user.id_card}\n*Name:* {user.first_name} {user.last_name}\n*House Name:* {user.address}\n*Date of Birth:* {user.dob}\n*Island:* {(user.atoll.name if user.atoll else "N/A")} {(user.island.name if user.island else "N/A")}\n*Mobile:* {user.mobile}\nVisit [SAR Link Portal](https://portal.sarlink.net/users/{user_id}/details) to manually verify this user.
|
verification_failed_message = f"""*The following user verification failed*:\n\n*ID Card:* {t_user.t_id_card}\n*Name:* {t_user.t_first_name} {t_user.t_last_name}\n*House Name:* {t_user.t_address}\n*Date of Birth:* {t_user.t_dob}\n*Island:* {(t_user.t_atoll.name if t_user.t_atoll else "N/A")} {(t_user.t_island.name if t_user.t_island else "N/A")}\n*Mobile:* {t_user.t_mobile}\nVisit [SAR Link Portal](https://portal.sarlink.net/users/{user_id}/details) to manually verify this user.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# logger.info(verification_failed_message)
|
# logger.info(verification_failed_message)
|
||||||
@@ -163,7 +163,7 @@ def verify_user_with_person_api_task(user_id: int):
|
|||||||
)
|
)
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
response = requests.get(f"{PERSON_VERIFY_BASE_URL}/api/person/{user.id_card}")
|
response = requests.get(f"{PERSON_VERIFY_BASE_URL}/api/person/{t_user.id_card}")
|
||||||
if response.status_code == 200:
|
if response.status_code == 200:
|
||||||
data = response.json()
|
data = response.json()
|
||||||
api_nic = data.get("nic")
|
api_nic = data.get("nic")
|
||||||
@@ -173,10 +173,10 @@ def verify_user_with_person_api_task(user_id: int):
|
|||||||
api_atoll = data.get("atoll_en")
|
api_atoll = data.get("atoll_en")
|
||||||
api_island_name = data.get("island_name_en")
|
api_island_name = data.get("island_name_en")
|
||||||
|
|
||||||
if not user.mobile or user.dob is None:
|
if not t_user.mobile or t_user.dob is None:
|
||||||
logger.error("User mobile or date of birth is not set.")
|
logger.error("User mobile or date of birth is not set.")
|
||||||
return None
|
return None
|
||||||
if not user.island or user.atoll is None:
|
if not t_user.island or t_user.atoll is None:
|
||||||
logger.error("User island or atoll is not set.")
|
logger.error("User island or atoll is not set.")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@@ -187,51 +187,53 @@ def verify_user_with_person_api_task(user_id: int):
|
|||||||
logger.info(f"API atoll: {api_atoll}")
|
logger.info(f"API atoll: {api_atoll}")
|
||||||
logger.info(f"API island name: {api_island_name}")
|
logger.info(f"API island name: {api_island_name}")
|
||||||
|
|
||||||
user_nic = user.id_card
|
user_nic = t_user.t_id_card
|
||||||
user_name = f"{user.first_name} {user.last_name}"
|
user_name = f"{t_user.t_first_name} {t_user.t_last_name}"
|
||||||
user_house_name = user.address
|
user_house_name = t_user.t_address
|
||||||
user_dob = user.dob.isoformat()
|
user_dob = t_user.t_dob.isoformat()
|
||||||
|
|
||||||
logger.info(f"User nic: {user_nic}")
|
logger.info(f"User nic: {user_nic}")
|
||||||
logger.info(f"User name: {user_name}")
|
logger.info(f"User name: {user_name}")
|
||||||
logger.info(f"User house name: {user_house_name}")
|
logger.info(f"User house name: {user_house_name}")
|
||||||
logger.info(f"User dob: {user_dob}")
|
logger.info(f"User dob: {user_dob}")
|
||||||
logger.info(f"User atoll: {user.atoll}")
|
logger.info(f"User atoll: {t_user.t_atoll.name if t_user.t_atoll else 'N/A'}")
|
||||||
logger.info(f"User island name: {user.island}")
|
logger.info(
|
||||||
|
f"User island name: {t_user.t_island.name if t_user.t_island else 'N/A'}"
|
||||||
|
)
|
||||||
|
|
||||||
logger.info(
|
logger.info(
|
||||||
f"case User atoll: {user.atoll.name == api_atoll.strip() if api_atoll else False}"
|
f"case User atoll: {t_user.t_atoll.name == api_atoll.strip() if api_atoll else False}"
|
||||||
) # Defensive check for api_atoll
|
) # Defensive check for api_atoll
|
||||||
logger.info(f"api atoll type: {type(api_atoll)}")
|
logger.info(f"api atoll type: {type(api_atoll)}")
|
||||||
logger.info(f"user atoll type: {type(user.atoll.name)}")
|
logger.info(f"user atoll type: {type(t_user.t_atoll.name)}")
|
||||||
logger.info(
|
logger.info(
|
||||||
f"case User island name: {user.island.name == api_island_name.strip() if api_island_name else False}"
|
f"case User island name: {t_user.t_island.name == api_island_name.strip() if api_island_name else False}"
|
||||||
) # Defensive check for api_island_name
|
) # Defensive check for api_island_name
|
||||||
logger.info(f"api island name type: {type(api_island_name)}")
|
logger.info(f"api island name type: {type(api_island_name)}")
|
||||||
logger.info(f"user island name type: {type(user.island.name)}")
|
logger.info(f"user island name type: {type(t_user.t_island.name)}")
|
||||||
|
|
||||||
if (
|
if (
|
||||||
data.get("nic") == user.id_card
|
data.get("nic") == t_user.t_id_card
|
||||||
and data.get("name_en") == f"{user.first_name} {user.last_name}"
|
and data.get("name_en") == f"{t_user.t_first_name} {t_user.t_last_name}"
|
||||||
and data.get("house_name_en") == user.address
|
and data.get("house_name_en") == t_user.t_address
|
||||||
and data.get("dob").split("T")[0] == user.dob.isoformat()
|
and data.get("dob").split("T")[0] == t_user.t_dob.isoformat()
|
||||||
and data.get("atoll_en").strip() == user.atoll.name
|
and data.get("atoll_en").strip() == t_user.t_atoll.name
|
||||||
and data.get("island_name_en").strip() == user.island.name
|
and data.get("island_name_en").strip() == t_user.t_island.name
|
||||||
):
|
):
|
||||||
user.verified = True
|
t_user.verified = True
|
||||||
user.save()
|
t_user.save()
|
||||||
send_sms(
|
send_sms(
|
||||||
user.mobile,
|
t_user.t_mobile,
|
||||||
f"Dear {user.first_name} {user.last_name}, \n\nYour account has been successfully verified. \n\nYou can now manage your devices and make payments through our portal at https://portal.sarlink.net. \n\n - SAR Link",
|
f"Dear {t_user.t_first_name} {t_user.t_last_name}, \n\nYour account has been successfully verified. \n\nYou can now manage your devices and make payments through our portal at https://portal.sarlink.net. \n\n - SAR Link",
|
||||||
)
|
)
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
user.verified = False
|
t_user.verified = False
|
||||||
user.save()
|
t_user.save()
|
||||||
|
|
||||||
send_sms(
|
send_sms(
|
||||||
user.mobile,
|
t_user.t_mobile,
|
||||||
f"Dear {user.first_name} {user.last_name}, \n\nYour account registration is being processed. \n\nWe will notify you once verification is complete. \n\n - SAR Link",
|
f"Dear {t_user.t_first_name} {t_user.t_last_name}, \n\nYour account registration is being processed. \n\nWe will notify you once verification is complete. \n\n - SAR Link",
|
||||||
)
|
)
|
||||||
# send_clean_telegram_markdown(message=verification_failed_message)
|
# send_clean_telegram_markdown(message=verification_failed_message)
|
||||||
|
|
||||||
|
10
api/views.py
10
api/views.py
@@ -550,15 +550,19 @@ def filter_temporary_user(request):
|
|||||||
elif mobile:
|
elif mobile:
|
||||||
filters |= Q(t_mobile=mobile)
|
filters |= Q(t_mobile=mobile)
|
||||||
|
|
||||||
user = TemporaryUser.objects.only("t_id", "otp_verified").filter(filters).first()
|
user = (
|
||||||
|
TemporaryUser.objects.only("t_id", "otp_verified", "t_verified")
|
||||||
|
.filter(filters)
|
||||||
|
.first()
|
||||||
|
)
|
||||||
|
|
||||||
print(f"Querying with filters: {filters}")
|
print(f"Querying with filters: {filters}")
|
||||||
print(f"Found temporary user: {user}")
|
print(f"Found temporary user: {user}")
|
||||||
|
|
||||||
return Response(
|
return Response(
|
||||||
{"ok": True, "otp_verified": user.otp_verified}
|
{"ok": True, "otp_verified": user.otp_verified, "t_verified": user.t_verified}
|
||||||
if user
|
if user
|
||||||
else {"ok": False, "otp_verified": False}
|
else {"ok": False, "otp_verified": False, "t_verified": False}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user