dashboard/backend/app.py

76 lines
1.7 KiB
Python
Raw Normal View History

2021-09-27 12:03:35 +02:00
from flask import Flask, jsonify
from flask_cors import CORS
from flask_jwt_extended import JWTManager
from flask_migrate import Migrate
from jsonschema.exceptions import ValidationError
from werkzeug.exceptions import BadRequest
2021-09-27 12:03:35 +02:00
# These imports are required
2021-10-28 16:09:10 +02:00
from areas import api_v1
2022-04-13 10:27:17 +02:00
from cliapp import cli
from web import web
2021-10-28 16:09:10 +02:00
from areas import users
from areas import apps
from areas import auth
from areas import roles
2022-04-13 10:27:17 +02:00
from cliapp import cliapp
from web import login
2022-03-22 08:56:36 +01:00
from database import db
from helpers import (
BadRequest,
KratosError,
2022-01-18 10:48:18 +01:00
HydraError,
Unauthorized,
bad_request_error,
validation_error,
kratos_error,
global_error,
2022-01-18 10:48:18 +01:00
hydra_error,
unauthorized_error,
)
2022-03-22 08:56:36 +01:00
2021-09-27 12:03:35 +02:00
from config import *
import logging
2021-09-27 12:03:35 +02:00
2022-04-13 10:27:17 +02:00
app = Flask(__name__)
2022-03-22 08:56:36 +01:00
app.config["SECRET_KEY"] = SECRET_KEY
2022-03-22 08:56:36 +01:00
app.config["SQLALCHEMY_DATABASE_URI"] = SQLALCHEMY_DATABASE_URI
2022-04-13 10:27:17 +02:00
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = SQLALCHEMY_TRACK_MODIFICATIONS
2022-03-22 08:56:36 +01:00
2022-04-13 10:27:17 +02:00
cors = CORS(app)
Migrate(app, db)
2022-03-22 08:56:36 +01:00
db.init_app(app)
2022-11-08 16:37:18 +01:00
app.logger.setLevel(logging.DEBUG)
2021-09-27 12:03:35 +02:00
app.register_blueprint(api_v1)
app.register_blueprint(web)
2022-04-01 09:15:30 +02:00
app.register_blueprint(cli)
2021-09-27 12:03:35 +02:00
# Error handlers
app.register_error_handler(Exception, global_error)
app.register_error_handler(BadRequest, bad_request_error)
app.register_error_handler(ValidationError, validation_error)
app.register_error_handler(KratosError, kratos_error)
2022-01-18 10:48:18 +01:00
app.register_error_handler(HydraError, hydra_error)
app.register_error_handler(Unauthorized, unauthorized_error)
2021-09-27 12:03:35 +02:00
jwt = JWTManager(app)
# When token is not valid or missing handler
@jwt.invalid_token_loader
@jwt.unauthorized_loader
@jwt.expired_token_loader
def expired_token_callback(*args):
return jsonify({"errorMessage": "Unauthorized"}), 401
2021-09-27 12:03:35 +02:00
@app.route("/")
2021-09-27 12:03:35 +02:00
def index():
2022-05-31 13:40:46 +02:00
return "Stackspin API v1.0"