2025-10-25 20:53:48 +03:00
|
|
|
from flask import Blueprint, request, jsonify
|
2025-10-26 14:57:49 +03:00
|
|
|
from model.user import User
|
2025-10-26 22:52:07 +03:00
|
|
|
from db.repositories.user_repository import UserRepository # FIXME: authenticate_user as get_user
|
|
|
|
|
from utils.token import generateKey as getToken
|
2025-10-25 11:24:31 +03:00
|
|
|
|
2025-10-26 15:21:48 +03:00
|
|
|
auth = Blueprint("auth", __name__)
|
2025-10-26 15:08:14 +03:00
|
|
|
|
|
|
|
|
|
2025-10-26 15:21:48 +03:00
|
|
|
@auth.route('/login', methods = ['POST'])
|
2025-10-25 11:24:31 +03:00
|
|
|
def login():
|
2025-10-26 14:10:10 +03:00
|
|
|
if request.is_json:
|
|
|
|
|
req = request.json
|
2025-10-26 15:08:14 +03:00
|
|
|
|
|
|
|
|
email = req.get('email')
|
|
|
|
|
password = req.get('password')
|
|
|
|
|
|
|
|
|
|
if not email or not password:
|
|
|
|
|
return "Request must have email and password", 400
|
|
|
|
|
|
|
|
|
|
if len(email.strip()) < 4 or '@' not in email or '.' not in email:
|
|
|
|
|
return "Email is incorrect", 400
|
|
|
|
|
|
|
|
|
|
if len(password.strip()) < 8:
|
|
|
|
|
return "Password is too short", 400
|
|
|
|
|
|
2025-10-26 22:52:07 +03:00
|
|
|
user = UserRepository().authenticate_user(email, password)
|
|
|
|
|
if not user:
|
|
|
|
|
return "Wrong credentials", 400
|
|
|
|
|
|
|
|
|
|
token = getToken(user)
|
|
|
|
|
|
|
|
|
|
return jsonify({'token': token, 'user': {'id': user.id, 'name': user.name, 'role': user.role}})
|
2025-10-26 15:08:14 +03:00
|
|
|
|
2025-10-26 14:10:10 +03:00
|
|
|
else:
|
2025-10-26 15:08:14 +03:00
|
|
|
return "Request is not a json", 400
|