block user in django admin
This commit is contained in:
1 parent
089db0afa4
commit
fe7a10cb61
19 files changed
+574
-11
No files matched your search
+16
-2
@@ -14,6 +14,7 @@ from django.db import transaction
|
||||
from django.db.models import F
|
||||
from .models import MagicLinkAccessLog, OTPChallenge, TicketMagicLink, User
|
||||
from .magic_access import grant_ticket_magic_access
|
||||
from .customer_access import BLOCK_REASON_KEY, blocked_login_reason
|
||||
from apps.integrations.sms.providers import SMSResult, get_sms_provider
|
||||
import logging
|
||||
|
||||
@@ -46,7 +47,11 @@ def customer_login(request):
|
||||
_remember_destination(request)
|
||||
if response:=_authenticated_home(request): return response
|
||||
form = MobileForm(request.POST or None)
|
||||
block_reason = request.session.pop(BLOCK_REASON_KEY, "")
|
||||
if request.method == "POST" and form.is_valid():
|
||||
block_reason = blocked_login_reason(form.cleaned_data["mobile"])
|
||||
if block_reason:
|
||||
return render(request, "accounts/customer_login.html", {"form": form, "block_reason": block_reason})
|
||||
challenge = None
|
||||
try:
|
||||
challenge, code = OTPChallenge.issue(form.cleaned_data["mobile"], request)
|
||||
@@ -62,13 +67,18 @@ def customer_login(request):
|
||||
challenge.delete()
|
||||
logger.exception("OTP SMS delivery failed")
|
||||
form.add_error(None, "ارسال پیامک ورود در حال حاضر ممکن نیست؛ لطفاً کمی بعد دوباره تلاش کنید.")
|
||||
return render(request, "accounts/customer_login.html", {"form": form})
|
||||
return render(request, "accounts/customer_login.html", {"form": form, "block_reason": block_reason})
|
||||
|
||||
@require_http_methods(["GET", "POST"])
|
||||
def verify_otp(request):
|
||||
if response:=_authenticated_home(request): return response
|
||||
challenge = get_object_or_404(OTPChallenge, pk=request.session.get("otp_challenge_id"))
|
||||
form = OTPForm(request.POST or None)
|
||||
block_reason = blocked_login_reason(challenge.mobile)
|
||||
if block_reason:
|
||||
request.session.pop("otp_challenge_id", None)
|
||||
request.session[BLOCK_REASON_KEY] = block_reason
|
||||
return redirect("accounts:login")
|
||||
if request.method == "POST" and form.is_valid():
|
||||
if challenge.verify(form.cleaned_data["code"]):
|
||||
user, created = User.objects.get_or_create(mobile=challenge.mobile, defaults={"username": f"customer_{challenge.mobile[3:]}", "account_type": User.AccountType.CUSTOMER})
|
||||
@@ -86,12 +96,16 @@ def customer_password_login(request):
|
||||
_remember_destination(request)
|
||||
if response:=_authenticated_home(request): return response
|
||||
form=CustomerPasswordLoginForm(request.POST or None)
|
||||
block_reason = request.session.pop(BLOCK_REASON_KEY, "")
|
||||
if request.method=="POST" and form.is_valid():
|
||||
block_reason = blocked_login_reason(form.cleaned_data["mobile"])
|
||||
if block_reason:
|
||||
return render(request, "accounts/customer_password_login.html", {"form": form, "block_reason": block_reason})
|
||||
user=form.authenticate(request)
|
||||
if user and user.is_active:
|
||||
login(request,user); return redirect(_login_destination(request))
|
||||
form.add_error(None,"شماره موبایل یا رمز عبور صحیح نیست.")
|
||||
return render(request,"accounts/customer_password_login.html",{"form":form})
|
||||
return render(request,"accounts/customer_password_login.html",{"form":form,"block_reason":block_reason})
|
||||
|
||||
@login_required
|
||||
@require_http_methods(["GET","POST"])
|
||||
|
||||
Reference in new issue
Block a user