From 1c30f2f17c5bdc9a206ce3a41c7da81ce4be3b23 Mon Sep 17 00:00:00 2001 From: Alejandro De Maria Antolinos Date: Tue, 29 Mar 2022 14:38:02 +0200 Subject: [PATCH] feat: add configuration option to set authenticator and its credentials in the search API #350 BREAKING CHANGE: This commits adds a mandatory config option, so is a major change. --- datagateway_api/config.json.example | 5 ++++- datagateway_api/src/common/config.py | 3 +++ datagateway_api/src/search_api/session_handler.py | 5 ++--- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/datagateway_api/config.json.example b/datagateway_api/config.json.example index 7e6201d2..b68c8c2b 100644 --- a/datagateway_api/config.json.example +++ b/datagateway_api/config.json.example @@ -12,7 +12,10 @@ "search_api": { "extension": "/search-api", "icat_url": "https://localhost:8181", - "icat_check_cert": false + "icat_check_cert": false, + "plugin": "anon", + "username": "", + "password": "" }, "flask_reloader": false, "log_level": "WARN", diff --git a/datagateway_api/src/common/config.py b/datagateway_api/src/common/config.py index e4835cd3..5bc80b2a 100644 --- a/datagateway_api/src/common/config.py +++ b/datagateway_api/src/common/config.py @@ -130,6 +130,9 @@ class SearchAPI(BaseModel): extension: StrictStr icat_check_cert: StrictBool icat_url: StrictStr + plugin: StrictStr + username: StrictStr + password: StrictStr _validate_extension = validator("extension", allow_reuse=True)(validate_extension) diff --git a/datagateway_api/src/search_api/session_handler.py b/datagateway_api/src/search_api/session_handler.py index 8367a480..afa93ee2 100644 --- a/datagateway_api/src/search_api/session_handler.py +++ b/datagateway_api/src/search_api/session_handler.py @@ -1,6 +1,6 @@ from functools import wraps import logging - +from datagateway_api.src.common.config import Config from icat.exception import ICATSessionError from datagateway_api.src.datagateway_api.icat.icat_client_pool import ICATClient @@ -33,8 +33,7 @@ def wrapper_client_manager(*args, **kwargs): SessionHandler.client.getRemainingMinutes() except ICATSessionError as e: log.debug("Current client session expired: %s", e.args) - SessionHandler.client.login("anon", {}) - + SessionHandler.client.login(Config.config.search_api.plugin, {"username": Config.config.search_api.username, "password" : Config.config.search_api.password}) return method(*args, **kwargs) return wrapper_client_manager