diff --git a/README.md b/README.md index 595b8f39..a83ba70c 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,78 @@ If you are a developer, and want to make changes to the code then we recommend u For more detailed instructions on how to install and update the dashboard, refer to [INSTALLATION.md](INSTALLATION.md). + +## Authentication + +Authentication is disabled by default. To enable Dashboard Authentication please follow the steps below: + +**Set Credentials (Optional):** + +The dashboard uses `admin` and `abc` as the default username and password respectively. It's strongly recommended to change these credentials for enhanced security.: + +- For Docker, navigate to the `deploy` folder or `dashboard` folder if using Source and open the `credentials.yml` file. +- Add or modify the current username / password and save the changes afterward + + ``` + credentials: + usernames: + admin: + email: admin@gmail.com + name: John Doe + logged_in: False + password: abc + cookie: + expiry_days: 0 + key: some_signature_key # Must be string + name: some_cookie_name + pre-authorized: + emails: + - admin@admin.com + ``` + +### Docker + +- Ensure the dashboard container is not running. +- Open the `docker-compose.yml` file within the `deploy` folder using a text editor. +- Locate the environment variable `AUTH_SYSTEM_ENABLED` under the dashboard service configuration. + + ``` + services: + dashboard: + container_name: dashboard + image: hummingbot/dashboard:latest + ports: + - "8501:8501" + environment: + - AUTH_SYSTEM_ENABLED=True + - BACKEND_API_HOST=backend-api + - BACKEND_API_PORT=8000 + ``` +- Change the value of `AUTH_SYSTEM_ENABLED` from `False` to `True`. +- Save the changes to the `docker-compose.yml` file. +- Relaunch Dashboard by running `bash setup.sh` + +### Source + +- Open the `CONFIG.py` file located in the dashboard root folder +- Locate the line `AUTH_SYSTEM_ENABLED = os.getenv("AUTH_SYSTEM_ENABLED", "False").lower() in ("true", "1", "t")`. + + ``` + CERTIFIED_EXCHANGES = ["ascendex", "binance", "bybit", "gate.io", "hitbtc", "huobi", "kucoin", "okx", "gateway"] + CERTIFIED_STRATEGIES = ["xemm", "cross exchange market making", "pmm", "pure market making"] + + AUTH_SYSTEM_ENABLED = os.getenv("AUTH_SYSTEM_ENABLED", "False").lower() in ("true", "1", "t") + + BACKEND_API_HOST = os.getenv("BACKEND_API_HOST", "127.0.0.1") + ``` +- Change the value from `False` to `True` to enable dashboard authentication. +- Save the CONFIG.py file. +- Relaunch dashboard by running `make run` + +### Known Issues +- Refreshing the browser window may log you out and display the login screen again. This is a known issue that might be addressed in future updates. + + ## Latest Updates Stay informed about the latest updates and enhancements to Hummingbot Dashboard by subscribing to our [newsletter](https://hummingbot.substack.com/). diff --git a/backend/services/backend_api_client.py b/backend/services/backend_api_client.py index 91b9979c..a7ae1548 100644 --- a/backend/services/backend_api_client.py +++ b/backend/services/backend_api_client.py @@ -185,7 +185,7 @@ def get_historical_candles(self, connector: str, trading_pair: str, interval: st """Get historical candles data.""" endpoint = "historical-candles" payload = { - "connector": connector, + "connector_name": connector, "trading_pair": trading_pair, "interval": interval, "start_time": start_time, diff --git a/credentials.yml b/credentials.yml index e4c35693..53f15beb 100644 --- a/credentials.yml +++ b/credentials.yml @@ -2,7 +2,7 @@ credentials: usernames: admin: email: admin@gmail.com - name: Admin User + name: John Doe logged_in: False password: abc cookie: diff --git a/frontend/pages/data/download_candles/app.py b/frontend/pages/data/download_candles/app.py index 52454589..e6050842 100644 --- a/frontend/pages/data/download_candles/app.py +++ b/frontend/pages/data/download_candles/app.py @@ -27,6 +27,9 @@ if get_data_button: start_datetime = datetime.combine(start_date, time.min) end_datetime = datetime.combine(end_date, time.max) + if end_datetime < start_datetime: + st.error("End Date should be greater than Start Date.") + st.stop() candles = backend_api_client.get_historical_candles( connector=connector, diff --git a/frontend/st_utils.py b/frontend/st_utils.py index 7a23fdb4..984399e1 100644 --- a/frontend/st_utils.py +++ b/frontend/st_utils.py @@ -74,14 +74,14 @@ def style_metric_cards( def get_backend_api_client(): from backend.services.backend_api_client import BackendAPIClient from CONFIG import BACKEND_API_HOST, BACKEND_API_PORT - backend_api_client = BackendAPIClient.get_instance(host=BACKEND_API_HOST, port=BACKEND_API_PORT) is_docker_running = False try: + backend_api_client = BackendAPIClient.get_instance(host=BACKEND_API_HOST, port=BACKEND_API_PORT) is_docker_running = backend_api_client.is_docker_running() except Exception as e: st.error( - f"There was an error trying to connect to the Backend API: " - f"\n\n{str(e)} \n\nPlease make sure the Backend API is running.") + f"There was an error trying to connect to the Backend API. Please make sure the Backend API is running.\n\n" + f"Error: \n\n{str(e)}") st.stop() if not is_docker_running: st.error("Docker is not running. Please make sure Docker is running.")