register works!

This commit is contained in:
2024-03-30 13:34:50 +03:00
parent 191a7b5f30
commit cb6ceae42d
5 changed files with 27 additions and 19 deletions

View File

@ -43,22 +43,23 @@ async def login_for_access_token(
@router.post("/register")
async def register(
user_data: Annotated[schemas.UserRegister, Depends()],
user_data: schemas.UserRegister,
db: Annotated[Session, Depends(get_db)],
) -> schemas.User:
user = services.get_user_by_username(db, user_data.username)
if user:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
status_code=status.HTTP_400_BAD_REQUEST,
detail="User with this username already exists",
headers={"WWW-Authenticate": "Bearer"},
)
user = services.create_user(
db=db,
username=user_data.username,
plain_password=user_data.password,
name=user_data.name,
)
if user_data.password != user_data.password2:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail="Passwords do not match",
headers={"WWW-Authenticate": "Bearer"},
)
user = services.create_user(db=db, user_data=user_data)
return user

View File

@ -15,7 +15,8 @@ class UserInDB(User):
class UserRegister(User):
plain_password: str
password: str
password2: str
class Token(BaseModel):

View File

@ -53,17 +53,17 @@ def create_access_token(data: dict, expires_delta: Union[timedelta, None] = None
return encoded_jwt
def create_user(
db: Session, username: str, plain_password: str, name: Union[str, None] = None
) -> schemas.User:
def create_user(db: Session, user_data: schemas.UserRegister) -> schemas.UserInDB:
user = models.User(
username=username,
name=name,
hashed_password=get_password_hash(plain_password),
username=user_data.username,
name=user_data.name,
hashed_password=get_password_hash(user_data.password),
)
db.add(user)
db.commit()
return schemas.User(user)
return schemas.UserInDB(
username=user.username, name=user.name, hashed_password=user.hashed_password
)
async def get_current_user(

View File

@ -4,4 +4,4 @@ pydantic
sqlalchemy
psycopg2-binary
python-jose[cryptography]
passlib[bcrypt]
passlib[all]