feat: folder permissions (ACLs) - share folders with users/groups, inherit to subfolders, permission dialog UI
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
"""Schemas for contact folder permissions (ACLs)."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class FolderPermissionCreate(BaseModel):
|
||||
user_id: str | None = None
|
||||
group_id: str | None = None
|
||||
permission_level: str = Field("read", pattern="^(none|read|write|admin)$")
|
||||
inherit_to_subfolders: bool = True
|
||||
|
||||
|
||||
class FolderPermissionUpdate(BaseModel):
|
||||
permission_level: str = Field(..., pattern="^(none|read|write|admin)$")
|
||||
inherit_to_subfolders: bool | None = None
|
||||
|
||||
|
||||
class FolderPermissionResponse(BaseModel):
|
||||
id: str
|
||||
folder_id: str
|
||||
user_id: str | None = None
|
||||
group_id: str | None = None
|
||||
user_name: str | None = None
|
||||
group_name: str | None = None
|
||||
permission_level: str
|
||||
inherit_to_subfolders: bool
|
||||
created_at: str | None = None
|
||||
|
||||
|
||||
class FolderPermissionListResponse(BaseModel):
|
||||
items: list[FolderPermissionResponse]
|
||||
total: int
|
||||
|
||||
|
||||
class FolderAccessInfo(BaseModel):
|
||||
"""Effective access level for the current user on a folder."""
|
||||
folder_id: str
|
||||
access_level: str # none | read | write | admin | owner
|
||||
is_owner: bool
|
||||
is_shared: bool
|
||||
inherited_from: str | None = None # parent folder id if inherited
|
||||
Reference in New Issue
Block a user