Skip to content
Merged
Show file tree
Hide file tree
Changes from 14 commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
7617bc6
fix: update permission logic to allow admins to publish private score…
bencap Dec 3, 2025
12d1d1e
fix: update permission logic to allow admins to publish private colle…
bencap Dec 3, 2025
3bbb561
fix: update permission logic to return 404 for private collections ro…
bencap Dec 3, 2025
9040a65
fix: return 404 for private calibration updates when user does not ha…
bencap Dec 3, 2025
f02b229
fix: return 401 for insufficient permissions when user data is missin…
bencap Dec 3, 2025
20e21da
fix: update permission logic to return 404 for private score calibrat…
bencap Dec 3, 2025
634bb1c
fix: update permission logic in user permission to return 401 for ins…
bencap Dec 3, 2025
ecc2c70
tests: Add comprehensive test cases for permissions module
bencap Dec 3, 2025
c177c42
fix: add type hint for investigator_provided field in ScoreCalibratio…
bencap Dec 4, 2025
de3622e
refactor: Refactor permissions into module for improved readability a…
bencap Dec 4, 2025
746be94
refactor: Move EntityType definition to types
bencap Dec 4, 2025
7fef9ac
fix: fetch_score_set_by_urn permission filtering was effecting calibr…
bencap Dec 4, 2025
236bb14
refactor: deny helper, permission tests, and error messages for consi…
bencap Dec 4, 2025
d4c685c
fix: add importorskip for permission tests
bencap Dec 4, 2025
f02ba1e
fix: use TEST_ENVIRONMENT envvar in email validator tester rather tha…
bencap Dec 13, 2025
e746a42
fix: do not show internal model names in user facing error messages.
bencap Dec 15, 2025
a18ebf5
fix: flip error message assertion 'in' statements
bencap Dec 15, 2025
6e4bfa0
fix: remove unnecessary session.commit() calls in user tests
bencap Dec 15, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
506 changes: 0 additions & 506 deletions src/mavedb/lib/permissions.py

This file was deleted.

27 changes: 27 additions & 0 deletions src/mavedb/lib/permissions/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
"""
Permission system for MaveDB entities.

This module provides a comprehensive permission system for checking user access
to various entity types including ScoreSets, Experiments, Collections, etc.

Main Functions:
has_permission: Check if a user has permission for an action on an entity
assert_permission: Assert permission or raise exception

Usage:
>>> from mavedb.lib.permissions import Action, has_permission, assert_permission
>>>
>>> # Check permission and handle response
>>> result = has_permission(user_data, score_set, Action.READ)
>>> if result.permitted:
... # User has access
... pass
>>>
>>> # Assert permission (raises exception if denied)
>>> assert_permission(user_data, score_set, Action.UPDATE)
"""

from .actions import Action
from .core import assert_permission, has_permission

__all__ = ["has_permission", "assert_permission", "Action"]
15 changes: 15 additions & 0 deletions src/mavedb/lib/permissions/actions.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
from enum import Enum


class Action(Enum):
LOOKUP = "lookup"
READ = "read"
UPDATE = "update"
DELETE = "delete"
ADD_EXPERIMENT = "add_experiment"
ADD_SCORE_SET = "add_score_set"
SET_SCORES = "set_scores"
ADD_ROLE = "add_role"
PUBLISH = "publish"
ADD_BADGE = "add_badge"
CHANGE_RANK = "change_rank"
Loading