Files
loon-backend/loon/mqtt/handlers/register_request.py
T
ciomek c75526aa2e
Build and Push Docker Image / build-and-push (push) Successful in 14s
Fix
2026-08-16 23:36:57 +02:00

39 lines
1.3 KiB
Python

import json
from sqlalchemy.exc import IntegrityError
from sqlmodel import Session, select
from loon.web.db import engine
from loon.web.users.models import User
from loon.web.utils.password import hash_password
async def register_request_handler(client, userdata, msg, data):
if msg.topic != "loon/register/request":
return
uuid = data["uuid"]
password = data["password"]
internal_username = data["internalUsername"]
with Session(engine) as session:
statement = select(User).where(User.uuid == uuid)
user = session.exec(statement).first()
if user is not None:
client.publish(f"loon/register/{uuid}/response",
json.dumps({"success": False, "error": "The user is already registered!"}))
return
user = User(uuid=uuid, password=hash_password(password), internal_username=internal_username, admin=False)
session.add(user)
try:
session.commit()
except IntegrityError:
session.rollback()
client.publish(f"loon/register/{uuid}/response",
json.dumps({"success": False, "error": "The user is already registered!"}))
return
client.publish(f"loon/register/{uuid}/response", json.dumps({"success": True, "error": None}))