0.2.45: Administrator (view only) role
New external role administrator_viewer: signs into the admin interface and reads everything for its granted funds and SPVs (overview, partners, capital accounts with every investor's statements, documents, valuation history) but every write is refused: no imports, uploads, deletions, entity edits, exit marking, or account management. No migration needed; roles are stored as strings. Internal admins can flip an Administrator between full management and view only via a new Access level dropdown in Users > Manage. The user-list endpoint is read-widened for the viewer role so investor names resolve on its screens; all mutating endpoints keep the stricter gate.
This commit is contained in:
@@ -76,8 +76,9 @@ def list_statements(
|
||||
query = select(CapitalAccountStatement)
|
||||
allowed = accessible_entity_ids(user, session)
|
||||
|
||||
if user.role == UserRole.fund_administrator:
|
||||
# An Administrator sees every investor's statements, but only inside their funds.
|
||||
if user.role in (UserRole.fund_administrator, UserRole.administrator_viewer):
|
||||
# An Administrator (managing or view-only) sees every investor's statements,
|
||||
# but only inside their funds.
|
||||
if not allowed:
|
||||
return []
|
||||
query = query.where(col(CapitalAccountStatement.entity_id).in_(allowed))
|
||||
|
||||
Reference in New Issue
Block a user