aboutsummaryrefslogtreecommitdiff
path: root/app/routes/user_routes.py
diff options
context:
space:
mode:
authorParker <contact@pkrm.dev>2024-11-05 20:36:09 -0600
committerParker <contact@pkrm.dev>2024-11-05 20:36:09 -0600
commite944df3d7d431b5bd88c2c235501a355ea1ba6ab (patch)
tree283a28cb77f2439d20ba00869de15cf65c2c450a /app/routes/user_routes.py
parent6f7e810916fd2de39d451886bbe18167e1784315 (diff)
Fix auth and organization/standards
Diffstat (limited to 'app/routes/user_routes.py')
-rw-r--r--app/routes/user_routes.py61
1 files changed, 25 insertions, 36 deletions
diff --git a/app/routes/user_routes.py b/app/routes/user_routes.py
index 1c6c61e..c356104 100644
--- a/app/routes/user_routes.py
+++ b/app/routes/user_routes.py
@@ -4,14 +4,16 @@ from typing import Annotated
import string
import bcrypt
import random
-import datetime
-import validators
from app.util.db_dependency import get_db
+from app.util.check_password_reqs import check_password_reqs
from app.schemas.auth_schemas import User
from app.schemas.user_schemas import *
from models import User as UserModel
-from app.util.authentication import get_current_user_from_token
+from app.util.authentication import (
+ verify_password,
+ get_current_user_from_token,
+)
router = APIRouter(prefix="/users", tags=["users"])
@@ -26,23 +28,27 @@ async def delete_user(
"""
Delete the user account associated with the current user
"""
+ # No editing others accounts
if user_id != current_user.id:
raise HTTPException(
status_code=status.HTTP_403_FORBIDDEN,
detail="You can only delete your own account",
)
+
+ # Get the user and delete them
user = db.query(UserModel).filter(UserModel.id == current_user.id).first()
if not user:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail="User not found",
)
+
db.delete(user)
db.commit()
return status.HTTP_204_NO_CONTENT
-@router.post("/{user_id}", summary="Update your account password")
+@router.post("/{user_id}/password", summary="Update your account password")
async def update_pass(
user_id: Annotated[int, Path(title="Link to update")],
update_data: UpdatePasswordSchema,
@@ -57,22 +63,19 @@ async def update_pass(
status_code=status.HTTP_403_FORBIDDEN,
detail="You can only update your own account",
)
+
+ # Make sure that they entered the correct current password
+ if not verify_password(
+ update_data.current_password, current_user.hashed_password
+ ):
+ raise HTTPException(
+ status_code=status.HTTP_401_UNAUTHORIZED,
+ detail="Incorrect current password",
+ )
+
# Make sure the password meets all of the requirements
- # if len(update_data.new_password) < 8:
- # raise HTTPException(
- # status_code=status.HTTP_400_BAD_REQUEST,
- # detail="Password must be at least 8 characters",
- # )
- # if not any(char.isdigit() for char in update_data.new_password):
- # raise HTTPException(
- # status_code=status.HTTP_400_BAD_REQUEST,
- # detail="Password must contain at least one digit",
- # )
- # if not any(char.isupper() for char in update_data.new_password):
- # raise HTTPException(
- # status_code=status.HTTP_400_BAD_REQUEST,
- # detail="Password must contain at least one uppercase letter",
- # )
+ check_password_reqs(update_data.new_password)
+
# Get the user and update the password
user = db.query(UserModel).filter(UserModel.id == current_user.id).first()
if not user:
@@ -98,24 +101,10 @@ async def get_links(
"""
username = login_data.username
password = login_data.password
- print(username)
- print(password)
+
# Make sure the password meets all of the requirements
- # if len(password) < 8:
- # raise HTTPException(
- # status_code=status.HTTP_400_BAD_REQUEST,
- # detail="Password must be at least 8 characters",
- # )
- # if not any(char.isdigit() for char in password):
- # raise HTTPException(
- # status_code=status.HTTP_400_BAD_REQUEST,
- # detail="Password must contain at least one digit",
- # )
- # if not any(char.isupper() for char in password):
- # raise HTTPException(
- # status_code=status.HTTP_400_BAD_REQUEST,
- # detail="Password must contain at least one uppercase letter",
- # )
+ check_password_reqs(password)
+
# Make sure the username isn't taken
user = db.query(UserModel).filter(UserModel.username == username).first()
if user: