[rewrite] Implemented login and register
This commit is contained in:
1 parent
cd8fdb9c21
commit
20ef2aa4e8
29 files changed
+183
-722
No files matched your search
@@ -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")
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in new issue
Block a user