Skip to content

Commit cf111d7

Browse files
authored
Merge pull request #1920 from GSA/2795-bug-when-a-new-template-folder-is-added-existing-users-are-automatically-given-permission-to-it
Only the person who creates the folder and admin gets default folder permissions
2 parents 5441965 + 15fb5a8 commit cf111d7

File tree

3 files changed

+26
-5
lines changed

3 files changed

+26
-5
lines changed

app/template_folder/rest.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from sqlalchemy.orm.exc import NoResultFound
44

55
from app.dao.dao_utils import autocommit
6-
from app.dao.service_user_dao import dao_get_active_service_users, dao_get_service_user
6+
from app.dao.service_user_dao import dao_get_service_user
77
from app.dao.services_dao import dao_fetch_service_by_id
88
from app.dao.template_folder_dao import (
99
dao_create_template_folder,
@@ -60,7 +60,11 @@ def create_template_folder(service_id):
6060
except NoResultFound:
6161
raise InvalidRequest("parent_id not found", status_code=400)
6262
else:
63-
users_with_permission = dao_get_active_service_users(service_id)
63+
users_with_permission = []
64+
if data.get("created_by_id"):
65+
creator = dao_get_service_user(data["created_by_id"], service_id)
66+
if creator:
67+
users_with_permission = [creator]
6468
template_folder = TemplateFolder(
6569
service_id=service_id,
6670
name=data["name"].strip(),

app/template_folder/template_folder_schema.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
"properties": {
88
"name": {"type": "string", "minLength": 1},
99
"parent_id": nullable_uuid,
10+
"created_by_id": uuid,
1011
},
1112
"required": ["name", "parent_id"],
1213
}

tests/app/template_folder/test_template_folder_rest.py

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,9 +125,25 @@ def test_create_template_folder_sets_user_permissions(
125125
if has_parent:
126126
assert resp["data"]["users_with_permission"] == [str(user_1.id)]
127127
else:
128-
assert sorted(resp["data"]["users_with_permission"]) == sorted(
129-
[str(user_1.id), str(user_2.id)]
130-
)
128+
assert resp["data"]["users_with_permission"] == []
129+
130+
131+
def test_create_template_folder_with_creator_id_grants_permission_to_creator(
132+
admin_request, sample_service
133+
):
134+
user_1 = create_user(email="creator@gsa.gov")
135+
user_2 = create_user(email="other@gsa.gov")
136+
sample_service.users = [user_1, user_2]
137+
138+
resp = admin_request.post(
139+
"template_folder.create_template_folder",
140+
service_id=sample_service.id,
141+
_data={"name": "creator folder", "parent_id": None, "created_by_id": str(user_1.id)},
142+
_expected_status=201,
143+
)
144+
145+
assert resp["data"]["name"] == "creator folder"
146+
assert resp["data"]["users_with_permission"] == [str(user_1.id)]
131147

132148

133149
@pytest.mark.parametrize("missing_field", ["name", "parent_id"])

0 commit comments

Comments
 (0)