From ef7f3d35d116d275c826e10985a5e772b711845e Mon Sep 17 00:00:00 2001 From: freeleaps-gitops-bot Date: Fri, 31 Oct 2025 05:47:22 +0000 Subject: [PATCH 1/6] ci(bump): bump authentication image version for alpha to snapshot-2d3a105 --- .freeleaps/devops/helm-pkg/values.alpha.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.freeleaps/devops/helm-pkg/values.alpha.yaml b/.freeleaps/devops/helm-pkg/values.alpha.yaml index fd571bb..0fe4807 100644 --- a/.freeleaps/devops/helm-pkg/values.alpha.yaml +++ b/.freeleaps/devops/helm-pkg/values.alpha.yaml @@ -15,7 +15,7 @@ authentication: registry: docker.io repository: null name: 6901bcf4ed3725f39f11343d-authentication - tag: snapshot-2346a42 + tag: snapshot-2d3a105 imagePullPolicy: IfNotPresent ports: - name: http From afc4bd1848561ce59f4a61632b65c1cf3683b97b Mon Sep 17 00:00:00 2001 From: freeleaps-gitops-bot Date: Fri, 31 Oct 2025 05:58:21 +0000 Subject: [PATCH 2/6] ci(bump): bump authentication image version for alpha to snapshot-ddcf8d8 --- .freeleaps/devops/helm-pkg/values.alpha.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.freeleaps/devops/helm-pkg/values.alpha.yaml b/.freeleaps/devops/helm-pkg/values.alpha.yaml index 0fe4807..cc64c12 100644 --- a/.freeleaps/devops/helm-pkg/values.alpha.yaml +++ b/.freeleaps/devops/helm-pkg/values.alpha.yaml @@ -15,7 +15,7 @@ authentication: registry: docker.io repository: null name: 6901bcf4ed3725f39f11343d-authentication - tag: snapshot-2d3a105 + tag: snapshot-ddcf8d8 imagePullPolicy: IfNotPresent ports: - name: http From 9039e18efae7019a8c86c2fc6d7c4d0ba27bb547 Mon Sep 17 00:00:00 2001 From: freeleaps-gitops-bot Date: Fri, 31 Oct 2025 06:06:25 +0000 Subject: [PATCH 3/6] ci(bump): bump authentication image version for prod to snapshot-8584f90 --- .freeleaps/devops/helm-pkg/values.prod.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.freeleaps/devops/helm-pkg/values.prod.yaml b/.freeleaps/devops/helm-pkg/values.prod.yaml index ce2fe08..832b607 100644 --- a/.freeleaps/devops/helm-pkg/values.prod.yaml +++ b/.freeleaps/devops/helm-pkg/values.prod.yaml @@ -18,7 +18,7 @@ authentication: registry: docker.io repository: null name: 6901bcf4ed3725f39f11343d-authentication - tag: snapshot-73d6a46 + tag: snapshot-8584f90 imagePullPolicy: IfNotPresent ports: - name: http From 75911f618524333d4e744eecebe876a99153f933 Mon Sep 17 00:00:00 2001 From: icecheng Date: Fri, 31 Oct 2025 14:23:01 +0800 Subject: [PATCH 4/6] feat: update freeleaps-auth endpoints --- .freeleaps/devops/helm-pkg/values.alpha.yaml | 2 +- .freeleaps/devops/helm-pkg/values.prod.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.freeleaps/devops/helm-pkg/values.alpha.yaml b/.freeleaps/devops/helm-pkg/values.alpha.yaml index cc64c12..067bb57 100644 --- a/.freeleaps/devops/helm-pkg/values.alpha.yaml +++ b/.freeleaps/devops/helm-pkg/values.alpha.yaml @@ -81,7 +81,7 @@ authentication: appEnv: alpha devsvcWebapiUrlBase: http://devsvc-service.freeleaps-alpha.svc.freeleaps.cluster:8007/api/devsvc/ notificationWebapiUrlBase: http://notification-service.freeleaps-alpha.svc.freeleaps.cluster:8003/api/notification/ - authServiceEndpoint: http://freeleaps-auth-service.68c0da88a0a7837e84b580eb-alpha.svc.freeleaps.cluster:9000/api/v1/ + authServiceEndpoint: http://freeleaps-auth-service.freeleaps-alpha.svc.freeleaps.cluster:9000/api/v1/ jwtAlgorithm: HS256 serviceApiAccessHost: 0.0.0.0 serviceApiAccessPort: 8004 diff --git a/.freeleaps/devops/helm-pkg/values.prod.yaml b/.freeleaps/devops/helm-pkg/values.prod.yaml index 832b607..376c59f 100644 --- a/.freeleaps/devops/helm-pkg/values.prod.yaml +++ b/.freeleaps/devops/helm-pkg/values.prod.yaml @@ -72,7 +72,7 @@ authentication: appEnv: prod devsvcWebapiUrlBase: http://devsvc-service.freeleaps-prod.svc.freeleaps.cluster:8007/api/devsvc/ notificationWebapiUrlBase: http://notification-service.freeleaps-prod.svc.freeleaps.cluster:8003/api/notification/ - authServiceEndpoint: http://freeleaps-auth-service.68c0da88a0a7837e84b580eb-prod.svc.freeleaps.cluster:9000/api/v1/ + authServiceEndpoint: http://freeleaps-auth-service.freeleaps-prod.svc.freeleaps.cluster:9000/api/v1/ jwtAlgorithm: HS256 serviceApiAccessHost: 0.0.0.0 serviceApiAccessPort: 8004 From f7526834628a4b8d4c3490779440f2172239982b Mon Sep 17 00:00:00 2001 From: icecheng Date: Mon, 3 Nov 2025 10:22:26 +0800 Subject: [PATCH 5/6] feat: add ingress --- .freeleaps/devops/helm-pkg/values.prod.yaml | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/.freeleaps/devops/helm-pkg/values.prod.yaml b/.freeleaps/devops/helm-pkg/values.prod.yaml index 376c59f..a3852c7 100644 --- a/.freeleaps/devops/helm-pkg/values.prod.yaml +++ b/.freeleaps/devops/helm-pkg/values.prod.yaml @@ -65,7 +65,24 @@ authentication: namespace: freeleaps-monitoring-system interval: 30s scrapeTimeout: '' - ingresses: {} + ingresses: + - name: authentication-ingress + host: authentication.freeleaps.com + class: nginx + rules: + - path: / + pathType: Prefix + backend: + service: + name: authentication-service + port: + number: 8004 + tls: + exists: false + issuerRef: + name: freeleaps-dot-com + kind: ClusterIssuer + name: authentication.freeleaps.com-cert configs: tz: UTC appName: authentication From 9f8892a8a9b17a0ea6624d63547a5e6746e057b8 Mon Sep 17 00:00:00 2001 From: haolou Date: Fri, 7 Nov 2025 17:29:44 +0800 Subject: [PATCH 6/6] fix: change some un-exist insert methods to create --- backend/infra/permission/role_handler.py | 2 +- backend/infra/permission/user_role_handler.py | 2 +- backend/models/base_doc.py | 20 ++++++++++++++++++- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/backend/infra/permission/role_handler.py b/backend/infra/permission/role_handler.py index 08d5d83..2fe4be0 100644 --- a/backend/infra/permission/role_handler.py +++ b/backend/infra/permission/role_handler.py @@ -118,7 +118,7 @@ class RoleHandler: raise RequestValidationError("Role with the provided ID already exists.") new_doc.id = custom_role_id - await new_doc.insert() + await new_doc.create() return new_doc async def query_roles(self, role_key: Optional[str], role_name: Optional[str], skip: int = 0, limit: int = 10) -> \ diff --git a/backend/infra/permission/user_role_handler.py b/backend/infra/permission/user_role_handler.py index 2b02fe8..96bd9fa 100644 --- a/backend/infra/permission/user_role_handler.py +++ b/backend/infra/permission/user_role_handler.py @@ -36,7 +36,7 @@ class UserRoleHandler: user_id=user_id, role_ids=unique_role_ids ) - await user_role_doc.insert() + await user_role_doc.create() return user_role_doc async def get_role_and_permission_by_user_id(self, user_id: str) -> tuple[list[str], list[str]]: diff --git a/backend/models/base_doc.py b/backend/models/base_doc.py index bd6722d..af4aa81 100644 --- a/backend/models/base_doc.py +++ b/backend/models/base_doc.py @@ -3,6 +3,7 @@ BaseDoc - A custom document class that provides Beanie-like interface using dire """ import asyncio from datetime import datetime, timezone +from bson import ObjectId from typing import Optional, List, Dict, Any, Type, Union from motor.motor_asyncio import AsyncIOMotorClient, AsyncIOMotorDatabase from pydantic import BaseModel @@ -282,6 +283,13 @@ class BaseDoc(BaseModel, metaclass=QueryModelMeta): # Convert Decimal objects to float for MongoDB compatibility doc_dict = self._convert_decimals_to_float(doc_dict) + # Respect pre-populated id by mapping to MongoDB _id + if getattr(self, 'id', None): + try: + doc_dict['_id'] = ObjectId(self.id) + except Exception: + doc_dict['_id'] = self.id + result = await collection.insert_one(doc_dict) # Set the id field from the inserted document @@ -314,7 +322,17 @@ class BaseDoc(BaseModel, metaclass=QueryModelMeta): elif hasattr(self, 'auth_code'): query['auth_code'] = self.auth_code - if query: + if getattr(self, 'id', None): + # Update by primary key when available + try: + object_id = ObjectId(self.id) + except Exception: + object_id = self.id + + result = await collection.update_one({"_id": object_id}, {"$set": doc_dict}, upsert=True) + if result.upserted_id: + self.id = str(result.upserted_id) + elif query: # Update existing document result = await collection.update_one(query, {"$set": doc_dict}, upsert=True) # If it was an insert, set the id field