Funktionstrennung 1.0
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
from flask import request, jsonify
|
||||
from mysql.connector import connect
|
||||
from werkzeug.security import check_password_hash
|
||||
from datetime import datetime, timedelta
|
||||
import jwt
|
||||
|
||||
from util.logger import logger
|
||||
from util.db_config import load_db_config
|
||||
from auth.token import SECRET_KEY
|
||||
|
||||
def login_route():
|
||||
data = request.get_json()
|
||||
username = data.get('username')
|
||||
password = data.get('password')
|
||||
|
||||
try:
|
||||
config = load_db_config()
|
||||
conn = connect(**config)
|
||||
cursor = conn.cursor(dictionary=True)
|
||||
cursor.execute("SELECT * FROM users WHERE username = %s", (username,))
|
||||
user = cursor.fetchone()
|
||||
cursor.close()
|
||||
conn.close()
|
||||
|
||||
if user and check_password_hash(user['password'], password):
|
||||
logger.info(f"✅ Login successful: {username}")
|
||||
|
||||
payload = {
|
||||
"username": user['username'],
|
||||
"role": user['role'],
|
||||
"exp": datetime.utcnow() + timedelta(minutes=60)
|
||||
}
|
||||
token = jwt.encode(payload, SECRET_KEY, algorithm="HS256")
|
||||
|
||||
return jsonify({
|
||||
"token": token,
|
||||
"role": user['role']
|
||||
})
|
||||
|
||||
logger.warning(f"⛔ Login failed: {username}")
|
||||
return jsonify({"message": "Login failed"}), 401
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"[Login Error] {e}")
|
||||
return jsonify({"message": "Server error"}), 500
|
||||
|
||||
Reference in New Issue
Block a user