mirror of
https://github.com/ansible/awx.git
synced 2024-11-01 08:21:15 +03:00
Merge pull request #93 from jangsutsr/7321_prevent_unprivileged_user_from_deleting_is
Prevent unprivileged users from deleting inventory sources
This commit is contained in:
commit
f253d2da16
@ -795,7 +795,8 @@ class InventorySourceAccess(BaseAccess):
|
|||||||
update_on_project_update=True, source='scm').exists())
|
update_on_project_update=True, source='scm').exists())
|
||||||
|
|
||||||
def can_delete(self, obj):
|
def can_delete(self, obj):
|
||||||
if not (self.user.is_superuser or not (obj and obj.inventory and self.user.can_access(Inventory, 'admin', obj.inventory, None))):
|
if not self.user.is_superuser and \
|
||||||
|
not (obj and obj.inventory and self.user.can_access(Inventory, 'admin', obj.inventory, None)):
|
||||||
return False
|
return False
|
||||||
active_jobs_qs = InventoryUpdate.objects.filter(inventory_source=obj, status__in=ACTIVE_STATES)
|
active_jobs_qs = InventoryUpdate.objects.filter(inventory_source=obj, status__in=ACTIVE_STATES)
|
||||||
if active_jobs_qs.exists():
|
if active_jobs_qs.exists():
|
||||||
|
@ -93,6 +93,20 @@ def test_inventory_update_org_admin(inventory_update, org_admin):
|
|||||||
assert access.can_delete(inventory_update)
|
assert access.can_delete(inventory_update)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize("role_field,allowed", [
|
||||||
|
(None, False),
|
||||||
|
('admin_role', True),
|
||||||
|
('update_role', False),
|
||||||
|
('adhoc_role', False),
|
||||||
|
('use_role', False)
|
||||||
|
])
|
||||||
|
@pytest.mark.django_db
|
||||||
|
def test_inventory_source_delete(inventory_source, alice, role_field, allowed):
|
||||||
|
if role_field:
|
||||||
|
getattr(inventory_source.inventory, role_field).members.add(alice)
|
||||||
|
assert allowed == InventorySourceAccess(alice).can_delete(inventory_source), '{} test failed'.format(role_field)
|
||||||
|
|
||||||
|
|
||||||
# See companion test in tests/functional/api/test_inventory.py::test_inventory_update_access_called
|
# See companion test in tests/functional/api/test_inventory.py::test_inventory_update_access_called
|
||||||
@pytest.mark.parametrize("role_field,allowed", [
|
@pytest.mark.parametrize("role_field,allowed", [
|
||||||
(None, False),
|
(None, False),
|
||||||
|
Loading…
Reference in New Issue
Block a user