add telegram username to bd
This commit is contained in:
@ -58,30 +58,38 @@ class AuthService:
|
||||
else:
|
||||
raise HTTPException(404, "User not found")
|
||||
|
||||
async def verify_code(self, username: str, code: str, telegram_chat_id: int):
|
||||
async def verify_code(
|
||||
self,
|
||||
username: str,
|
||||
code: str,
|
||||
telegram_chat_id: int,
|
||||
telegram_user_id: int | None = None,
|
||||
telegram_username: str | None = None,
|
||||
):
|
||||
user = await users_collection.find_one({"username": username})
|
||||
if not user:
|
||||
raise HTTPException(404, "User not found")
|
||||
|
||||
|
||||
if user["is_verified"]:
|
||||
raise HTTPException(400, "User already verified")
|
||||
|
||||
# Проверяем код и привязку к Telegram
|
||||
|
||||
if user.get("telegram_chat_id") and user["telegram_chat_id"] != telegram_chat_id:
|
||||
raise HTTPException(403, "This account is linked to another Telegram")
|
||||
|
||||
|
||||
if user.get("code") != code:
|
||||
raise HTTPException(400, "Invalid code")
|
||||
|
||||
# Обновляем chat_id при первом подтверждении
|
||||
await users_collection.update_one(
|
||||
{"username": username},
|
||||
{"$set": {
|
||||
"is_verified": True,
|
||||
"telegram_chat_id": telegram_chat_id,
|
||||
"code": None
|
||||
}}
|
||||
)
|
||||
update = {
|
||||
"is_verified": True,
|
||||
"telegram_chat_id": telegram_chat_id,
|
||||
"code": None,
|
||||
}
|
||||
if telegram_user_id is not None:
|
||||
update["telegram_user_id"] = telegram_user_id
|
||||
if telegram_username is not None:
|
||||
update["telegram_username"] = telegram_username
|
||||
|
||||
await users_collection.update_one({"username": username}, {"$set": update})
|
||||
return {"status": "success"}
|
||||
|
||||
async def get_verification_status(self, username: str):
|
||||
|
||||
Reference in New Issue
Block a user