feat(sync): keycloak as source-of-truth with auto catalog sync and token refresh

This commit is contained in:
Chris
2026-04-03 00:46:46 +08:00
parent 81085e1844
commit 573a75b9e3
7 changed files with 649 additions and 33 deletions

View File

@@ -30,8 +30,22 @@ class CompaniesRepository:
stmt = stmt.order_by(Company.created_at.desc()).limit(limit).offset(offset)
return list(self.db.scalars(stmt).all()), int(self.db.scalar(count_stmt) or 0)
def create(self, *, company_key: str, display_name: str, legal_name: str | None, status: str = "active") -> Company:
item = Company(company_key=company_key, display_name=display_name, legal_name=legal_name, status=status)
def create(
self,
*,
company_key: str,
display_name: str,
legal_name: str | None,
idp_group_id: str | None = None,
status: str = "active",
) -> Company:
item = Company(
company_key=company_key,
display_name=display_name,
legal_name=legal_name,
idp_group_id=idp_group_id,
status=status,
)
self.db.add(item)
self.db.commit()
self.db.refresh(item)

View File

@@ -45,9 +45,17 @@ class SitesRepository:
company_id: str,
display_name: str,
domain: str | None,
idp_group_id: str | None = None,
status: str = "active",
) -> Site:
item = Site(site_key=site_key, company_id=company_id, display_name=display_name, domain=domain, status=status)
item = Site(
site_key=site_key,
company_id=company_id,
display_name=display_name,
domain=domain,
idp_group_id=idp_group_id,
status=status,
)
self.db.add(item)
self.db.commit()
self.db.refresh(item)