Update auth.py
Browse files
auth.py
CHANGED
@@ -56,25 +56,27 @@ def authenticate_user(db: Session, email: str, password: str):
|
|
56 |
|
57 |
from emailx import send_verification_email, generate_verification_token
|
58 |
|
59 |
-
def
|
60 |
-
|
61 |
-
user_email = verify_token(verification_token)
|
62 |
-
if not user_email:
|
63 |
-
raise HTTPException(status_code=400, detail="Invalid verification token")
|
64 |
|
65 |
-
|
66 |
-
|
|
|
|
|
67 |
if not user:
|
68 |
-
raise HTTPException(status_code=400, detail="
|
69 |
|
70 |
if user.is_verified:
|
71 |
raise HTTPException(status_code=400, detail="Email already verified")
|
72 |
|
73 |
# Mark the email as verified
|
74 |
user.is_verified = True
|
|
|
75 |
db.commit()
|
76 |
return {"message": "Email verification successful"}
|
77 |
|
|
|
|
|
78 |
def register(user: UserCreate, db: Session):
|
79 |
# Validate email format and check for existing users
|
80 |
db_user = get_user_by_email(db, user.email)
|
@@ -94,7 +96,9 @@ def register(user: UserCreate, db: Session):
|
|
94 |
# verify_email(verification_token, db)
|
95 |
|
96 |
# Create the user in the database
|
97 |
-
|
|
|
|
|
98 |
db.add(user_in_db)
|
99 |
db.commit()
|
100 |
db.refresh(user_in_db)
|
|
|
56 |
|
57 |
from emailx import send_verification_email, generate_verification_token
|
58 |
|
59 |
+
def get_user_by_verification_token(db: Session, verification_token: str):
|
60 |
+
return db.query(User).filter(User.email_verification_token == verification_token).first()
|
|
|
|
|
|
|
61 |
|
62 |
+
def verify_email(verification_token: str, db: Session = Depends(get_db)):
|
63 |
+
# Verify the email using the token
|
64 |
+
user = get_user_by_verification_token(db, verification_token)
|
65 |
+
|
66 |
if not user:
|
67 |
+
raise HTTPException(status_code=400, detail="Invalid verification token")
|
68 |
|
69 |
if user.is_verified:
|
70 |
raise HTTPException(status_code=400, detail="Email already verified")
|
71 |
|
72 |
# Mark the email as verified
|
73 |
user.is_verified = True
|
74 |
+
user.email_verification_token = None # Optionally clear the verification token
|
75 |
db.commit()
|
76 |
return {"message": "Email verification successful"}
|
77 |
|
78 |
+
|
79 |
+
|
80 |
def register(user: UserCreate, db: Session):
|
81 |
# Validate email format and check for existing users
|
82 |
db_user = get_user_by_email(db, user.email)
|
|
|
96 |
# verify_email(verification_token, db)
|
97 |
|
98 |
# Create the user in the database
|
99 |
+
# Set the email_verification_token field in the User model
|
100 |
+
user_in_db = User(email=user.email, hashed_password=hashed_password, email_verification_token=verification_token)
|
101 |
+
|
102 |
db.add(user_in_db)
|
103 |
db.commit()
|
104 |
db.refresh(user_in_db)
|