feat(users): adds login functionality

This commit is contained in:
2024-11-23 19:53:27 -03:00
parent 46a364dac7
commit 76fb0aa94f
4 changed files with 82 additions and 7 deletions

View File

@@ -1,5 +1,5 @@
from werkzeug.datastructures import ImmutableMultiDict
from werkzeug.security import generate_password_hash
from werkzeug.security import generate_password_hash, check_password_hash
from flask import flash, session
from app.models.user import User
@@ -47,4 +47,21 @@ class UserService:
raise UserRegisterErrors("Something went wrong")
except UserRegisterErrors as e:
flash(FlashMessage(e.message, AlertType.DANGER.value ))
db.session.rollback()
db.session.rollback()
@staticmethod
def login(form: ImmutableMultiDict):
try:
email = UserValidators.is_valid_email(form.get("email"))
password = UserValidators.is_valid_password(form.get("password"))
user_row = db.session.execute(db.select(User).filter_by(email=email)).one_or_none()
if user_row is not None:
if check_password_hash(user_row[0].password, password):
session["id"] = user_row[0].id
return True
flash(FlashMessage("Invalid email or password", AlertType.DANGER.value ))
return False
except UserRegisterErrors as e:
flash(FlashMessage(e.message, AlertType.DANGER.value ))