From 888d2741d633820149bc847efc34986cbf02d91e Mon Sep 17 00:00:00 2001 From: asadeg02 Date: Fri, 4 Apr 2025 15:05:27 -0400 Subject: [PATCH 1/2] feat: refactor mongodb connection urigeneration to get user and password from env variables --- backend/env/.env.dev | 4 ++++ backend/env/.env.example | 4 ++++ backend/secretshare/mpce.py | 16 ++++++++++------ 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/backend/env/.env.dev b/backend/env/.env.dev index d67a3ff..6d46b49 100644 --- a/backend/env/.env.dev +++ b/backend/env/.env.dev @@ -12,4 +12,8 @@ POSTGRES_PASSWORD = postgres POSTGRES_DATABASE = bwwc MONGO_HOST = mongo MONGO_PORT = 27017 +MONGO_USER = bwwc +MONGO_PASSWORD = mongo +MONGO_DB = bwwc +MONGO_PARAMS = "" DJANGO_ALLOWED_HOSTS = "" \ No newline at end of file diff --git a/backend/env/.env.example b/backend/env/.env.example index 13ebfd4..39ff4fb 100644 --- a/backend/env/.env.example +++ b/backend/env/.env.example @@ -13,4 +13,8 @@ POSTGRES_PASSWORD = postgres POSTGRES_DATABASE = bwwc MONGO_HOST = localhost MONGO_PORT = 27017 +MONGO_USER = bwwc +MONGO_PASSWORD = mongo +MONGO_DB = bwwc +MONGO_PARAMS = "" DJANGO_ALLOWED_HOSTS = "" \ No newline at end of file diff --git a/backend/secretshare/mpce.py b/backend/secretshare/mpce.py index 2768716..dcd5c85 100644 --- a/backend/secretshare/mpce.py +++ b/backend/secretshare/mpce.py @@ -35,11 +35,14 @@ def __init__(self, protocol: str = "shamirs", prime: int = 180252380737439): self.mongo_host = os.environ.get("MONGO_HOST") self.mongo_port = os.environ.get("MONGO_PORT") - self.mongo_client = MongoClient( - os.environ.get( - "MONGO_HOST", f"mongodb://{self.mongo_host}:{self.mongo_port}/" - ) - ) + self.mongo_user = os.environ.get("MONGO_USER", "bwwc") + self.mongo_password = os.environ.get("MONGO_PASSWORD") + self.mongo_db = os.environ.get("MONGO_DB", "bwwc") + self.mongo_params = os.environ.get("MONGO_PARAMS", "") + mongo_uri = f"mongodb://{self.mongo_user}:{self.mongo_password}@{self.mongo_host}:{self.mongo_port}/?{self.mongo_params}" + + self.mongo_client = MongoClient(mongo_uri) + self.mongo_db = self.mongo_client["bwwc"] self.session_collection = self.mongo_db["wage_gap"] self.participant_collection = self.mongo_db["participant"] @@ -644,4 +647,5 @@ def get_metadata(self, session_id: str) -> dict: file = self.fs.find_one({ "filename" : f"{session_id}_metadata.json"}) if file is None: return None - return json.loads(file.read()) \ No newline at end of file + return json.loads(file.read()) + From 84266edb781789e33ef8dd813657483bd8698557 Mon Sep 17 00:00:00 2001 From: asadeg02 Date: Mon, 7 Apr 2025 14:01:40 -0400 Subject: [PATCH 2/2] fix: URL-encode MongoDB credentials to prevent InvalidURI errors --- backend/secretshare/mpce.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/backend/secretshare/mpce.py b/backend/secretshare/mpce.py index dcd5c85..0d02ebf 100644 --- a/backend/secretshare/mpce.py +++ b/backend/secretshare/mpce.py @@ -3,6 +3,7 @@ import uuid import numbers import logging +import urllib.parse from typing import Any, Dict, List, Optional, Tuple, Union, Callable from itertools import groupby from operator import itemgetter @@ -35,8 +36,8 @@ def __init__(self, protocol: str = "shamirs", prime: int = 180252380737439): self.mongo_host = os.environ.get("MONGO_HOST") self.mongo_port = os.environ.get("MONGO_PORT") - self.mongo_user = os.environ.get("MONGO_USER", "bwwc") - self.mongo_password = os.environ.get("MONGO_PASSWORD") + self.mongo_user = urllib.parse.quote_plus(os.environ.get("MONGO_USER", "bwwc")) + self.mongo_password = urllib.parse.quote_plus(os.environ.get("MONGO_PASSWORD")) self.mongo_db = os.environ.get("MONGO_DB", "bwwc") self.mongo_params = os.environ.get("MONGO_PARAMS", "") mongo_uri = f"mongodb://{self.mongo_user}:{self.mongo_password}@{self.mongo_host}:{self.mongo_port}/?{self.mongo_params}"