diff --git a/src/api/upload.py b/src/api/upload.py index 9320e8b8..7f403043 100644 --- a/src/api/upload.py +++ b/src/api/upload.py @@ -13,12 +13,25 @@ async def upload(request: Request, document_service, session_manager): user = request.state.user jwt_token = request.state.jwt_token + from config.settings import is_no_auth_mode + + # In no-auth mode, pass None for owner fields so documents have no owner + # This allows all users to see them when switching to auth mode + if is_no_auth_mode(): + owner_user_id = None + owner_name = None + owner_email = None + else: + owner_user_id = user.user_id + owner_name = user.name + owner_email = user.email + result = await document_service.process_upload_file( upload_file, - owner_user_id=user.user_id, + owner_user_id=owner_user_id, jwt_token=jwt_token, - owner_name=user.name, - owner_email=user.email, + owner_name=owner_name, + owner_email=owner_email, ) return JSONResponse(result, status_code=201) # Created except Exception as e: @@ -48,12 +61,25 @@ async def upload_path(request: Request, task_service, session_manager): user = request.state.user jwt_token = request.state.jwt_token + + from config.settings import is_no_auth_mode + + # In no-auth mode, pass None for owner fields so documents have no owner + if is_no_auth_mode(): + owner_user_id = None + owner_name = None + owner_email = None + else: + owner_user_id = user.user_id + owner_name = user.name + owner_email = user.email + task_id = await task_service.create_upload_task( - user.user_id, + owner_user_id, file_paths, jwt_token=jwt_token, - owner_name=user.name, - owner_email=user.email, + owner_name=owner_name, + owner_email=owner_email, ) return JSONResponse( @@ -146,18 +172,31 @@ async def upload_bucket(request: Request, task_service, session_manager): jwt_token = request.state.jwt_token from models.processors import S3FileProcessor + from config.settings import is_no_auth_mode + + # In no-auth mode, pass None for owner fields so documents have no owner + if is_no_auth_mode(): + owner_user_id = None + owner_name = None + owner_email = None + task_user_id = None + else: + owner_user_id = user.user_id + owner_name = user.name + owner_email = user.email + task_user_id = user.user_id processor = S3FileProcessor( task_service.document_service, bucket, s3_client=s3_client, - owner_user_id=user.user_id, + owner_user_id=owner_user_id, jwt_token=jwt_token, - owner_name=user.name, - owner_email=user.email, + owner_name=owner_name, + owner_email=owner_email, ) - task_id = await task_service.create_custom_task(user.user_id, keys, processor) + task_id = await task_service.create_custom_task(task_user_id, keys, processor) return JSONResponse( {"task_id": task_id, "total_files": len(keys), "status": "accepted"}, diff --git a/src/models/processors.py b/src/models/processors.py index c39e4863..254f0374 100644 --- a/src/models/processors.py +++ b/src/models/processors.py @@ -207,13 +207,18 @@ class S3FileProcessor(TaskProcessor): "page": chunk["page"], "text": chunk["text"], "chunk_embedding": vect, - "owner": self.owner_user_id, - "owner_name": self.owner_name, - "owner_email": self.owner_email, "file_size": file_size, "connector_type": "s3", # S3 uploads "indexed_time": datetime.datetime.now().isoformat(), } + + # Only set owner fields if owner_user_id is provided (for no-auth mode support) + if self.owner_user_id is not None: + chunk_doc["owner"] = self.owner_user_id + if self.owner_name is not None: + chunk_doc["owner_name"] = self.owner_name + if self.owner_email is not None: + chunk_doc["owner_email"] = self.owner_email chunk_id = f"{slim_doc['id']}_{i}" try: await opensearch_client.index(