diff --git a/app/services/user_service.py b/app/services/user_service.py index 6015c5a..9b5a7f7 100644 --- a/app/services/user_service.py +++ b/app/services/user_service.py @@ -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() \ No newline at end of file + 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 )) + + \ No newline at end of file diff --git a/app/static/css/login.css b/app/static/css/login.css new file mode 100644 index 0000000..2a21e10 --- /dev/null +++ b/app/static/css/login.css @@ -0,0 +1,9 @@ +.login { + max-width: 480px; +} +.register__form-button { + width: 100%; + @media(min-width: 576px) { + width: 200px; + } +} \ No newline at end of file diff --git a/app/templates/users/login.html b/app/templates/users/login.html index 25ba7ee..0c4d900 100644 --- a/app/templates/users/login.html +++ b/app/templates/users/login.html @@ -1,8 +1,51 @@ -{% extends "layout/layout.html" %} +{% extends "layout/layout.html" %} +{% from "layout/inner_header.html" import inner_header%} +{% from "forms/validation-block.html" import form_field_validation %} +{% from "forms/submit-btn.html" import form_submit_button %} {% block title %} Login {% endblock %} {% block head %} {{ super() }} + {% endblock %} {% block content %} -