from flask import Flask, request, jsonify, session
from werkzeug.security import generate_password_hash, check_password_hash
from db import create_user, get_user_by_email
app = Flask(__name__)
app.secret_key = "SUPER_SECRET_SECRET_KEY_123"
@app.get("/")
def root():
return jsonify({
"ok": True,
"message": "Flask API работает"
})
@app.post("/register")
def register():
try:
data = request.get_json()
if not data:
return jsonify({
"ok": False,
"error": "Нет JSON"
}), 400
email = data.get("email", "").strip().lower()
password = data.get("password", "")
if not email or not password:
return jsonify({
"ok": False,
"error": "Email и пароль обязательны"
}), 400
password_hash = generate_password_hash(password)
created = create_user(
email=email,
password_hash=password_hash
)
if not created:
return jsonify({
"ok": False,
"error": "Пользователь уже существует"
}), 400
return jsonify({
"ok": True,
"message": "Регистрация успешна"
})
except Exception as e:
return jsonify({
"ok": False,
"error": str(e)
}), 500
@app.post("/login")
def login():
try:
data = request.get_json()
if not data:
return jsonify({
"ok": False,
"error": "Нет JSON"
}), 400
email = data.get("email", "").strip().lower()
password = data.get("password", "")
user = get_user_by_email(email)
if not user:
return jsonify({
"ok": False,
"error": "Неверный email или пароль"
}), 401
if not check_password_hash(user.password_hash, password):
return jsonify({
"ok": False,
"error": "Неверный email или пароль"
}), 401
session["user_email"] = user.email
return jsonify({
"ok": True,
"message": "Вход выполнен",
"user": {
"email": user.email
}
})
except Exception as e:
return jsonify({
"ok": False,
"error": str(e)
}), 500
@app.get("/me")
def me():
email = session.get("user_email")
if not email:
return jsonify({
"ok": False,
"user": None
})
return jsonify({
"ok": True,
"user": {
"email": email
}
})
@app.post("/logout")
def logout():
session.clear()
return jsonify({
"ok": True,
"message": "Выход выполнен"
})
if __name__ == "__main__":
app.run(debug=True)