from random import randrange from django.contrib.auth import login from django.contrib.auth.models import User from Sprint import settings from SprintLib.BaseView import BaseView from SprintLib.queue import send_to_queue class SendCodeView(BaseView): endpoint = "send_code" def post_create(self): username = self.request.POST["username"] user = User.objects.filter(username=username).first() if not user: return { "success": False, "message": "Пользователя с таким именем не существует", } code = randrange(10000, 100000) print(f"Отправлен код для {username}", code) user.userinfo.code = code user.userinfo.save() send_to_queue("notification", { "type": "send_code", "chat_id": user.userinfo.telegram_chat_id, "text": "Код для входа в сервис: " + str(code) }) return {"success": True, "message": "Код отправлен"} def post_check(self): username = self.request.POST["username"] user = User.objects.filter(username=username).first() if not user: return { "success": False, "message": "Пользователя с таким именем не существует", } code = int(self.request.POST["code"]) if code == user.userinfo.code or settings.DEBUG and code == 12345: user.userinfo.code = None user.userinfo.save() login(self.request, user) return {"success": True, "message": "Успешно"} else: return {"success": False, "message": "Код неверен"}