added bearer token authentication

This commit was merged in pull request #17.
This commit is contained in:
Chinenye Nmoh
2025-10-29 17:39:31 +01:00
parent 1293f28bf2
commit 5794ddfa0c
15 changed files with 339 additions and 43 deletions
+31 -2
View File
@@ -1,17 +1,21 @@
from flask import Flask
from flask import Flask, jsonify
import os
from flask_swagger_ui import get_swaggerui_blueprint
from flask_cors import CORS
from app.config import Config
from app.api.routes import api
from app.api.routes import api, auth_bp
from app.errors import register_error_handlers
from flask_jwt_extended import JWTManager
def create_app():
""" Factory function to create a Flask app instance """
app = Flask(__name__)
# Load configuration
app.config.from_object(Config)
jwt = JWTManager(app)
CORS(app)
@@ -21,11 +25,36 @@ def create_app():
# Register blueprints with /api prefix for the main API routes
app.register_blueprint(api, url_prefix='/api')
# Register blueprints with /auth prefix for the authentication routes
app.register_blueprint(auth_bp, url_prefix='/api/Auth')
swagger_ui_blueprint = get_swaggerui_blueprint(SWAGGER_URL, API_URL)
app.register_blueprint(swagger_ui_blueprint, url_prefix=SWAGGER_URL)
def jwt_error(message, code=401):
return jsonify({
"status": "error",
"message": message
}), code
@jwt.unauthorized_loader
def unauthorized_response(callback):
return jwt_error("Unauthorized access")
@jwt.expired_token_loader
def expired_token_callback(jwt_header, jwt_payload):
return jwt_error("Expired token")
@jwt.invalid_token_loader
def invalid_token_callback(error):
return jwt_error("Invalid authentication token.", 422)
@jwt.revoked_token_loader
def revoked_token_callback(jwt_header, jwt_payload):
return jwt_error("This token has been revoked. Please log in again.")
# Error Handlers
register_error_handlers(app)