diff --git a/compendium_v2/auth/session_management.py b/compendium_v2/auth/session_management.py index eed857ee9adf0e1160b7387e43d0abe96ccafd6b..37be02d952405c8005ddb21cedd9d7f63f8dba4b 100644 --- a/compendium_v2/auth/session_management.py +++ b/compendium_v2/auth/session_management.py @@ -1,6 +1,6 @@ from functools import wraps from sqlalchemy import select -from flask import jsonify +from flask import jsonify, current_app from datetime import datetime from flask_login import LoginManager, current_user # type: ignore from compendium_v2.db import session_scope @@ -16,15 +16,16 @@ def admin_required(func): """ def wrapper(*args, **kwargs): - if not current_user.is_authenticated: - return jsonify(success=False, - data={'login_required': True}, - message='Authorize to access this page.'), 401 - role = current_user.roles - if role != ROLES.admin: - return jsonify(success=False, - data={'admin_required': True}, - message='Admin privileges required to access this page.'), 401 + if not current_app.config.get('LOGIN_DISABLED'): + if not current_user.is_authenticated: + return jsonify(success=False, + data={'login_required': True}, + message='Authorize to access this page.'), 401 + role = current_user.roles + if role != ROLES.admin: + return jsonify(success=False, + data={'admin_required': True}, + message='Admin privileges required to access this page.'), 401 return func(*args, **kwargs) diff --git a/compendium_v2/routes/survey.py b/compendium_v2/routes/survey.py index 61f8568003cfef5f90104dccf64e8eb4173df6cb..bfbcaab00ec7eb2a378cb59074d9705cc4bdb56d 100644 --- a/compendium_v2/routes/survey.py +++ b/compendium_v2/routes/survey.py @@ -3,7 +3,7 @@ from enum import Enum from typing import Any, TypedDict, List, Dict from flask import Blueprint, jsonify, request -from flask_login import login_required +from flask_login import login_required # type: ignore from sqlalchemy import select from sqlalchemy.orm import joinedload, load_only diff --git a/test/conftest.py b/test/conftest.py index fa53adf02f5980e1f43bb42020b82baad7ab484e..be9e652dafe3d58f91cfca9c86663cc7214531ff 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -3,9 +3,11 @@ import os import pytest import random +from flask_login import LoginManager # type: ignore import compendium_v2 from compendium_v2.db import db, model, survey_model from compendium_v2.survey_db import model as survey_db_model +from compendium_v2.auth.session_management import setup_login_manager def _test_data_csv(filename): @@ -141,6 +143,11 @@ def test_survey_data(app): @pytest.fixture def app(dummy_config): app = compendium_v2._create_app_with_db(dummy_config) + app.config['LOGIN_DISABLED'] = True # disable login and admin_required decorators + login_manager = LoginManager() + login_manager.init_app(app) + login_manager.login_view = 'authentication.login' + setup_login_manager(login_manager) with app.app_context(): db.create_all(bind_key=None) yield app