From e5f86203ff2bf53408ac235e8a8e829f00026ed2 Mon Sep 17 00:00:00 2001 From: akhdanre Date: Wed, 26 Feb 2025 14:06:29 +0700 Subject: [PATCH] Feat: adding login schema --- app/controllers/auth_controller.py | 6 ++++-- app/schemas/__init__.py | 1 + app/schemas/login_schema.py | 6 ++++++ app/services/auth_service.py | 9 ++++----- requirement.txt | 3 ++- 5 files changed, 17 insertions(+), 8 deletions(-) create mode 100644 app/schemas/__init__.py create mode 100644 app/schemas/login_schema.py diff --git a/app/controllers/auth_controller.py b/app/controllers/auth_controller.py index fdae935..937da6f 100644 --- a/app/controllers/auth_controller.py +++ b/app/controllers/auth_controller.py @@ -1,7 +1,7 @@ from flask import jsonify, request +from schemas import LoginSchema from services import UserService from services import AuthService -import sys class AuthController: @@ -11,12 +11,14 @@ class AuthController: def login(self): data = request.get_json() - response = self.auth_service.login(data) + dataSchema = LoginSchema(**data) + response = self.auth_service.login(dataSchema) if response.success: return jsonify(response.to_dict()), 200 return jsonify(response.to_dict()), 400 def register(self): + return jsonify({"message": "register"}) def logout(self): diff --git a/app/schemas/__init__.py b/app/schemas/__init__.py new file mode 100644 index 0000000..bad0606 --- /dev/null +++ b/app/schemas/__init__.py @@ -0,0 +1 @@ +from .login_schema import LoginSchema diff --git a/app/schemas/login_schema.py b/app/schemas/login_schema.py new file mode 100644 index 0000000..b62cbb4 --- /dev/null +++ b/app/schemas/login_schema.py @@ -0,0 +1,6 @@ +from pydantic import BaseModel, EmailStr + + +class LoginSchema(BaseModel): + email: EmailStr + password: str diff --git a/app/services/auth_service.py b/app/services/auth_service.py index a259106..bda34f2 100644 --- a/app/services/auth_service.py +++ b/app/services/auth_service.py @@ -1,3 +1,4 @@ +from schemas import LoginSchema from repositories import UserRepository from models import ApiResponse @@ -6,17 +7,15 @@ class AuthService: def __init__(self, userRepository: UserRepository): self.user_repository = userRepository - def login(self, data): + def login(self, data: LoginSchema): try: - email = data.get("email") - password = data.get("password") - user_data = self.user_repository.get_user_by_email(email) + user_data = self.user_repository.get_user_by_email(data.email) if user_data == None: return ApiResponse(success=False, message="User not found", data=None) - if user_data["password"] == password: + if user_data["password"] == data.password: del user_data["password"] return ApiResponse( success=True, message="Login success", data=user_data diff --git a/requirement.txt b/requirement.txt index 3230d48..fc5baee 100644 --- a/requirement.txt +++ b/requirement.txt @@ -4,4 +4,5 @@ Flask-PyMongo==3.0.1 python-dotenv==1.0.1 dependency-injector==4.46.0 pytest==8.3.4 -pydantic==2.10.6 \ No newline at end of file +pydantic==2.10.6 +email-validator==2.2.0 \ No newline at end of file