register works!
This commit is contained in:
@ -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
|
||||
|
||||
|
||||
|
||||
@ -15,7 +15,8 @@ class UserInDB(User):
|
||||
|
||||
|
||||
class UserRegister(User):
|
||||
plain_password: str
|
||||
password: str
|
||||
password2: str
|
||||
|
||||
|
||||
class Token(BaseModel):
|
||||
|
||||
@ -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(
|
||||
|
||||
@ -4,4 +4,4 @@ pydantic
|
||||
sqlalchemy
|
||||
psycopg2-binary
|
||||
python-jose[cryptography]
|
||||
passlib[bcrypt]
|
||||
passlib[all]
|
||||
Reference in New Issue
Block a user