[rewrite] Implemented login and register

This commit is contained in:
Thastertyn committed 2025-03-12 14:01:13 +01:00
1 parent cd8fdb9c21
commit 20ef2aa4e8
29 files changed
+183 -722

No files matched your search

+4 -8
View File
@@ -1,20 +1,16 @@
from typing import Annotated
from datetime import timedelta
from typing import Annotated
from fastapi import APIRouter, HTTPException, Depends
from fastapi import APIRouter, Depends, HTTPException
from fastapi.security import OAuth2PasswordRequestForm
from app.api.dependencies import SessionDep
from app.core import security
from app.core.config import settings
from app.crud import user_crud
from app.schemas.user_schemas import Token
from app.crud import user_crud
router = APIRouter(tags=["login"])
router = APIRouter(tags=["Login"])
@router.post("/login/access-token")
@@ -1,23 +1,19 @@
from typing import Annotated
from datetime import timedelta
from typing import Annotated
from fastapi import APIRouter, HTTPException, Depends
from fastapi import APIRouter, Depends, HTTPException
from fastapi.security import OAuth2PasswordRequestForm
from app.api.dependencies import SessionDep
from app.core import security
from app.core.config import settings
from app.crud import user_crud
from app.schemas.user_schemas import Token
from app.crud import user_crud
router = APIRouter(prefix="/login", tags=["Login"])
router = APIRouter(tags=["Shop-Login"])
@router.post("/login/access-token")
@router.post("/access-token")
def login_access_token(
session: SessionDep,
form_data: Annotated[OAuth2PasswordRequestForm, Depends()]
Whitespace-only changes.
@@ -3,12 +3,13 @@ from typing import Annotated
from fastapi import APIRouter, Body, Path
from app.api.dependencies import SessionDep
from app.crud.user_crud import create_user
from app.database.models.user_model import UserRole
from app.schemas.user_schemas import UserRegister
router = APIRouter(
prefix="/user",
tags=["Shop-Users"]
prefix="/user"
)
@@ -23,8 +24,8 @@ async def logout():
@router.post("/register", summary="Register new user")
async def register(user_data: UserRegister):
raise NotImplementedError()
async def register(session: SessionDep, user_data: UserRegister, shop_uuid=Annotated[uuid.UUID, Path(title="UUID of the shop")]):
create_user(session, user_data, shop_uuid, UserRole.CUSTOMER)
@router.put("/update", summary="Update user details")
+29 -6
View File
@@ -1,9 +1,16 @@
from fastapi import APIRouter, Body
import logging
import re
from app.schemas.user_schemas import UserRegister
from fastapi import APIRouter, Body, HTTPException, status
from sqlalchemy.exc import IntegrityError
from app.api.dependencies import SessionDep
from app.crud import user_crud
from app.database.models.user_model import UserRole
from app.schemas.user_schemas import UserRegister
logger = logging.getLogger(__name__)
router = APIRouter(
prefix="/user",
@@ -24,10 +31,26 @@ async def logout():
@router.post("/register", summary="Register new user")
async def register(session: SessionDep, user_data: UserRegister):
try:
user_crud.create_user(session, user_data)
return {"message": "User registered successfully"}
except BaseException:
return {"message": "An error occurred"}
user_crud.create_user(session, user_data, None, UserRole.OWNER)
return {"detail": "Registered succeesfully"}
except IntegrityError as e:
field_mapping = {"uuid": "email"} # If a UUID is duplicate, it means email is in use
constraint = e.orig.diag.constraint_name
column_name = re.sub(r"^user_(\w+)_key$", r"\1", constraint) if constraint else None
if column_name == "uuid":
column_name = "email"
detail = f"{field_mapping.get(column_name, column_name or 'Entry').capitalize()} already in use"
raise HTTPException(
status_code=status.HTTP_409_CONFLICT,
detail=detail
)
except Exception as e:
logger.error(e)
raise HTTPException(status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail="Failed to register")
@router.put("/update", summary="Update user details")