add register

This commit is contained in:
Robin COuret
2026-03-06 19:35:28 +01:00
parent 34845b9696
commit ed0d989915
10 changed files with 95 additions and 10 deletions

View File

@@ -7,7 +7,7 @@ from src.app.models.user import User, UserCreate
from src.app.data.user import create_user, get_user_by_username
from src.app.auth.dependancies import get_current_user, authenticate_user
from src.app.auth.security import hash_password, create_access_token
from src.app.auth.security import hash_password, create_access_token, verify_beyond_user_limit
from src.app.auth.schemas import Token
router = APIRouter(prefix="/auth", tags=["auth"])
@@ -30,12 +30,16 @@ async def user(current_user: Annotated[str, Depends(get_current_user)]):
@router.post("/register")
async def create(user_data: UserCreate):
if(verify_beyond_user_limit()):
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail="The user limit has been reached."
)
if get_user_by_username(user_data.username):
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail="Username already registered"
)
hashed_password = hash_password(user_data.plain_password)
user = User(username = user_data.username, hashed_password = hashed_password)
created_user = create_user(user)

View File

@@ -1,5 +1,6 @@
from src.app.config import settings
from typing import Optional
from typing import Optional, Sequence
from src.app.models.user import User
from datetime import timedelta, datetime, timezone
from argon2 import PasswordHasher
from argon2.exceptions import (
@@ -9,8 +10,7 @@ from argon2.exceptions import (
)
import jwt
from jwt.exceptions import InvalidTokenError
from src.app.data.user import get_users
password_hasher = PasswordHasher()
@@ -37,4 +37,11 @@ def verify_token(token: str, token_type: str = "access") -> Optional[dict]:
except InvalidTokenError:
return None
def verify_beyond_user_limit() -> bool:
users: Sequence[User] = get_users()
if (len(users) > settings.USER_LIMIT):
return True
else:
return False
#def create_refresh_token(data: dict) -> str:

View File

@@ -14,6 +14,7 @@ class Settings(BaseSettings):
SECRET_KEY : str = Field('random_string', env='SECRET_KEY')
ACCESS_TOKEN_EXPIRE_MINUTES: int = 240
ALGORITHM: str = "HS256"
USER_LIMIT: int = 10
class Config:
env_file = ".env"