2025-03-19 20:06:03 +01:00

47 lines
1.3 KiB
Python

from dotenv import load_dotenv
from flask import Flask, jsonify
from flask_jwt_extended import JWTManager
from jwt import ExpiredSignatureError
from models import db
import os
from views import user_bp, init_db
from werkzeug.exceptions import HTTPException
# App initialization
load_dotenv()
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = os.getenv('SQLALCHEMY_DATABASE_URI')
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
app.config['JWT_SECRET_KEY'] = os.getenv('JWT_SECRET_KEY', 'changeme')
# Blueprint registration
app.register_blueprint(user_bp)
# Database and JWT initialization
db.init_app(app)
jwt = JWTManager(app)
# Global error handler
@app.errorhandler(Exception)
def global_error_handler(error):
if isinstance(error, HTTPException):
response = jsonify({"error": error.description})
response.status_code = error.code
elif isinstance(error, ExpiredSignatureError):
response = jsonify({"error": "Token has expired"})
response.status_code = 401
else: # Wszystkie inne błędy
response = jsonify({"error": str(error)})
response.status_code = 500
return response
# Fill database by initial values
with app.app_context():
db.create_all()
init_db()
# Server start
if __name__ == "__main__":
app.run(host='0.0.0.0')