mirror of
https://github.com/idrainformatica/PecFlow.git
synced 2026-06-16 12:45:42 +02:00
Ruolo supervisor
This commit is contained in:
@@ -27,9 +27,13 @@ class PermissionService:
|
||||
async def get_visible_mailboxes(
|
||||
self, user: User
|
||||
) -> list[uuid.UUID]:
|
||||
"""Restituisce gli UUID delle caselle visibili all'utente."""
|
||||
if user.role in ("super_admin", "admin"):
|
||||
# Admin vede tutte le caselle del tenant
|
||||
"""Restituisce gli UUID delle caselle visibili all'utente.
|
||||
|
||||
Admin e supervisor vedono tutte le caselle del tenant.
|
||||
Operator e readonly vedono solo le caselle con can_read=True esplicito.
|
||||
"""
|
||||
if user.role in ("super_admin", "admin", "supervisor"):
|
||||
# Admin e supervisor vedono tutte le caselle del tenant
|
||||
result = await self.db.execute(
|
||||
select(Mailbox.id).where(
|
||||
Mailbox.tenant_id == user.tenant_id,
|
||||
@@ -38,7 +42,7 @@ class PermissionService:
|
||||
)
|
||||
return [row[0] for row in result.all()]
|
||||
|
||||
# Operatori: solo caselle con can_read=True
|
||||
# Operator e readonly: solo caselle con can_read=True esplicito
|
||||
result = await self.db.execute(
|
||||
select(MailboxPermission.mailbox_id).where(
|
||||
MailboxPermission.user_id == user.id,
|
||||
@@ -50,9 +54,13 @@ class PermissionService:
|
||||
async def check_can_read(
|
||||
self, user: User, mailbox_id: uuid.UUID
|
||||
) -> bool:
|
||||
"""Verifica se l'utente può leggere i messaggi della casella."""
|
||||
if user.role in ("super_admin", "admin"):
|
||||
# Verifica solo che la casella appartenga al tenant
|
||||
"""Verifica se l'utente puo' leggere i messaggi della casella.
|
||||
|
||||
Admin e supervisor hanno accesso implicito a tutte le caselle del tenant.
|
||||
Operator e readonly richiedono permesso esplicito can_read.
|
||||
"""
|
||||
if user.role in ("super_admin", "admin", "supervisor"):
|
||||
# Admin e supervisor: verifica solo che la casella appartenga al tenant
|
||||
return await self._mailbox_belongs_to_tenant(mailbox_id, user.tenant_id)
|
||||
|
||||
perm = await self._get_permission(user.id, mailbox_id)
|
||||
@@ -62,12 +70,15 @@ class PermissionService:
|
||||
self, user: User, mailbox_id: uuid.UUID
|
||||
) -> bool:
|
||||
"""
|
||||
Verifica se l'utente può inviare dalla casella.
|
||||
Verifica se l'utente puo' inviare dalla casella.
|
||||
|
||||
L'accesso in invio è concesso se:
|
||||
1. L'utente è admin del tenant, oppure
|
||||
L'accesso in invio e' concesso se:
|
||||
1. L'utente e' admin del tenant, oppure
|
||||
2. L'utente ha un permesso diretto can_send sulla casella, oppure
|
||||
3. L'utente è assegnato a una Virtual Box attiva che include la casella.
|
||||
3. L'utente e' assegnato a una Virtual Box attiva che include la casella.
|
||||
|
||||
Nota: il supervisor NON ha invio implicito – richiede can_send esplicito
|
||||
come operator, ma diversamente da operator vede tutte le caselle.
|
||||
"""
|
||||
if user.role in ("super_admin", "admin"):
|
||||
return await self._mailbox_belongs_to_tenant(mailbox_id, user.tenant_id)
|
||||
|
||||
Reference in New Issue
Block a user