Sync site-role assignments to Keycloak group role mappings

This commit is contained in:
Chris
2026-04-03 02:14:01 +08:00
parent da08bc01ec
commit c431fe180b
3 changed files with 143 additions and 6 deletions

View File

@@ -30,14 +30,16 @@ class SiteRolesRepository:
)
return list(self.db.execute(stmt).all())
def set_site_roles(self, *, site_id: str, role_ids: list[str]) -> None:
def set_site_roles(self, *, site_id: str, role_ids: list[str], commit: bool = True) -> None:
self.db.execute(delete(SiteRole).where(SiteRole.site_id == site_id))
for role_id in role_ids:
self.db.add(SiteRole(site_id=site_id, role_id=role_id))
self.db.commit()
if commit:
self.db.commit()
def set_role_sites(self, *, role_id: str, site_ids: list[str]) -> None:
def set_role_sites(self, *, role_id: str, site_ids: list[str], commit: bool = True) -> None:
self.db.execute(delete(SiteRole).where(SiteRole.role_id == role_id))
for site_id in site_ids:
self.db.add(SiteRole(site_id=site_id, role_id=role_id))
self.db.commit()
if commit:
self.db.commit()