36 lines
1.0 KiB
Python
36 lines
1.0 KiB
Python
from flask import Blueprint, request, jsonify
|
|
from model.user import User
|
|
from db.repositories.user_repository import UserRepository # FIXME: authenticate_user as get_user
|
|
from utils.token import generateKey as getToken
|
|
|
|
auth = Blueprint("auth", __name__)
|
|
|
|
|
|
@auth.route('/login', methods = ['POST'])
|
|
def login():
|
|
if request.is_json:
|
|
req = request.json
|
|
|
|
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
|
|
|
|
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}})
|
|
|
|
else:
|
|
return "Request is not a json", 400
|