права фикс

This commit is contained in:
Artem Tsyrulnikov
2026-01-27 19:29:10 +03:00
parent b5d839ddae
commit 2d35588a85
21 changed files with 309 additions and 115 deletions

View File

@@ -164,6 +164,21 @@ class Usecase:
return domain.build_workspace_permission_context(membership)
async def ensure_analytics_permission(
self, workspace_id: UUID, user_id: UUID, *, for_project_id: UUID | None = None
) -> domain.WorkspacePermissionContext:
"""Ensure user has any analytics permission."""
membership = await self.database.get_workspace_membership(workspace_id, user_id)
if not membership or not membership.workspace:
raise domain.WorkspaceNotFound(workspace_id)
permissions = domain.WorkspacePermissions.from_membership(membership)
if not permissions.has_any_analytics_permission():
raise domain.WorkspaceAccessDenied(workspace_id)
return domain.build_workspace_permission_context(membership)
async def get_or_create_personal_workspace(self, user: domain.User) -> domain.Workspace:
workspace = await self.database.get_default_workspace_for_user(user.id)
if workspace: