feat/db-init #3

Open
Nitro wants to merge 41 commits from feat/db-init into dev
5 changed files with 25 additions and 34 deletions
Showing only changes of commit e44696ce04 - Show all commits
+9 -2
View File
@@ -1,5 +1,7 @@
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__)
@@ -21,8 +23,13 @@ def login():
if len(password.strip()) < 8:
return "Password is too short", 400
user = User(email, password)
return jsonify(user.toJson())
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
+1 -1
View File
@@ -9,7 +9,7 @@ from utils.loadDotEnv import initializeENV
initializeENV()
def PSQLConnect():
conn = psycopg2.connect(os.getenv('POSTDRESS_CONNECTION'))
conn = psycopg2.connect(os.getenv('POSTGRES_URL'))
return conn
def PSQLCursor(conn):
3
+3 -18
View File
@@ -166,6 +166,9 @@ class UserRepository:
return False
def authenticate_user(self, email: str, password_hash: str) -> Optional[User]:
if not self.user_exists(email):
return
try:
with get_connection() as conn:
with conn.cursor() as cur:
@@ -183,24 +186,6 @@ class UserRepository:
logger.error(f"Ошибка аутентификации пользователя {email}: {e}")
return None
def is_valid_authenticate(self, email: str, password_hash: str) -> bool:
try:
with get_connection() as conn:
with conn.cursor() as cur:
cur.execute("""
SELECT 1 FROM users
WHERE email = %s AND password_hash = %s
""", (email, password_hash))
is_valid = cur.fetchone() is not None
if is_valid:
logger.debug(f"Валидные учетные данные для пользователя {email}")
else:
logger.warning(f"Невалидные учетные данные для пользователя {email}")
return is_valid
except Exception as e:
logger.error(f"Ошибка проверки учетных данных пользователя {email}: {e}")
return False
def user_exists(self, email: str) -> bool:
try:
with get_connection() as conn:
-11
View File
@@ -1,6 +1,5 @@
from dataclasses import dataclass
from datetime import datetime
from utils.token import generateKey
@dataclass
@@ -11,13 +10,3 @@ class User:
name: str
role: str
created_at: datetime
def __init__(self, email: str, passwd: str):
#us = getUsModel() #возвращает словарь
self.id = 1#us['id']
self.name = 'Bob'#us['name']
self.role = 'Backend'#us['role']
self.token = generateKey(email, passwd)
def toJson(self):
Outdated
Review

Не надо так, лучше верни словарь

Не надо так, лучше верни словарь
return {"user": {"id": self.id, "name": self.name, "role": self.role}, "token": self.token}
+12 -2
View File
@@ -1,8 +1,18 @@
import jwt
import os
from time import time
from model.user import User
def generateKey(email, passwd):
def generateKey(user: User) -> dict:
key = os.getenv('KEY')
encoded = jwt.encode({email: passwd, 'iat': time()}, key, algorithm="HS256")
encoded = jwt.encode(
{
'id': user.id,
'name': user.name,
'role': user.role,
'iat': time()
},
key,
algorithm="HS256"
)
return encoded