summaryrefslogtreecommitdiff
path: root/app/auth/register.py
diff options
context:
space:
mode:
authorl3wdfut4pwr <l3wdfut4pwr@gmail.com>2026-03-17 14:11:45 +0200
committerl3wdfut4pwr <l3wdfut4pwr@gmail.com>2026-03-17 14:11:45 +0200
commit47fd81a5910eab3483f79d03eedf9307bc81252f (patch)
tree3e1ebd1bddcea649eb968e65161555afd4c2898c /app/auth/register.py
parentf01cb6703710b7df4c7c022047cd35e1d5e9c70e (diff)
simple registration prototype
Diffstat (limited to 'app/auth/register.py')
-rw-r--r--app/auth/register.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/app/auth/register.py b/app/auth/register.py
index e69de29..f1c3ec3 100644
--- a/app/auth/register.py
+++ b/app/auth/register.py
@@ -0,0 +1,32 @@
+from app.models.auth import User
+from argon2 import PasswordHasher
+from fastapi import APIRouter, Depends, HTTPException, status
+from sqlalchemy.ext.asyncio import AsyncSession
+from sqlalchemy.future import select
+
+from app.schemas.auth import RegisterSchema
+from app.utils.db import get_db
+
+router = APIRouter()
+ph = PasswordHasher()
+
+
+@router.post("/register")
+async def register(user: RegisterSchema, db: AsyncSession = Depends(get_db)):
+ result = await db.execute(
+ select(User).where(
+ (User.username == user.username) | (User.email == user.email)
+ )
+ )
+ existing = result.scalar_one_or_none()
+ if existing:
+ raise HTTPException(
+ status_code=status.HTTP_400_BAD_REQUEST,
+ detail="Username or email already exists",
+ )
+
+ hashed = ph.hash(user.password)
+ new_user = User(username=user.username, email=user.email, password_hash=hashed)
+ db.add(new_user)
+ await db.commit()
+ return {"message": "User registered successfully"}