Feat: adding login schema

This commit is contained in:
akhdanre 2025-02-26 14:06:29 +07:00
parent 19b7500bb6
commit e5f86203ff
5 changed files with 17 additions and 8 deletions

View File

@ -1,7 +1,7 @@
from flask import jsonify, request from flask import jsonify, request
from schemas import LoginSchema
from services import UserService from services import UserService
from services import AuthService from services import AuthService
import sys
class AuthController: class AuthController:
@ -11,12 +11,14 @@ class AuthController:
def login(self): def login(self):
data = request.get_json() data = request.get_json()
response = self.auth_service.login(data) dataSchema = LoginSchema(**data)
response = self.auth_service.login(dataSchema)
if response.success: if response.success:
return jsonify(response.to_dict()), 200 return jsonify(response.to_dict()), 200
return jsonify(response.to_dict()), 400 return jsonify(response.to_dict()), 400
def register(self): def register(self):
return jsonify({"message": "register"}) return jsonify({"message": "register"})
def logout(self): def logout(self):

1
app/schemas/__init__.py Normal file
View File

@ -0,0 +1 @@
from .login_schema import LoginSchema

View File

@ -0,0 +1,6 @@
from pydantic import BaseModel, EmailStr
class LoginSchema(BaseModel):
email: EmailStr
password: str

View File

@ -1,3 +1,4 @@
from schemas import LoginSchema
from repositories import UserRepository from repositories import UserRepository
from models import ApiResponse from models import ApiResponse
@ -6,17 +7,15 @@ class AuthService:
def __init__(self, userRepository: UserRepository): def __init__(self, userRepository: UserRepository):
self.user_repository = userRepository self.user_repository = userRepository
def login(self, data): def login(self, data: LoginSchema):
try: 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: if user_data == None:
return ApiResponse(success=False, message="User not found", 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"] del user_data["password"]
return ApiResponse( return ApiResponse(
success=True, message="Login success", data=user_data success=True, message="Login success", data=user_data

View File

@ -4,4 +4,5 @@ Flask-PyMongo==3.0.1
python-dotenv==1.0.1 python-dotenv==1.0.1
dependency-injector==4.46.0 dependency-injector==4.46.0
pytest==8.3.4 pytest==8.3.4
pydantic==2.10.6 pydantic==2.10.6
email-validator==2.2.0