Skip to content

Commit 31ac754

Browse files
authored
fix: auth issues in fulltext screenings (#204)
1 parent a709b72 commit 31ac754

File tree

1 file changed

+9
-28
lines changed

1 file changed

+9
-28
lines changed

colandr/api/v1/routes/fulltext_screenings.py

Lines changed: 9 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@
99

1010
from .... import models, tasks
1111
from ....extensions import db
12-
from ....utils import assign_status
13-
from .. import errors, schemas
12+
from .. import authz, errors, schemas
1413

1514

1615
bp = af.APIBlueprint("fulltext_screenings", __name__, url_prefix="/fulltexts")
@@ -37,15 +36,7 @@ def get(self, id, query_data):
3736
if not study:
3837
raise errors.NotFoundError(message=f"<Study(id={id})> not found")
3938

40-
if (
41-
current_user.is_admin is False
42-
and db.session.execute(
43-
current_user.review_user_assoc.select().filter_by(
44-
review_id=study.review_id
45-
)
46-
).one_or_none()
47-
is None
48-
):
39+
if not authz.user_is_allowed_for_review(current_user, study.review_id):
4940
raise errors.ForbiddenError(
5041
message=f"{current_user} forbidden to get fulltext screenings for this review"
5142
)
@@ -92,15 +83,9 @@ def post(self, id, json_data):
9283
if not study:
9384
raise errors.NotFoundError(message=f"<Fulltext(id={id})> not found")
9485

95-
if (
96-
current_user.is_admin is False
97-
and db.session.execute(
98-
current_user.review_user_assoc.select().filter_by(
99-
review_id=study.review_id
100-
)
101-
).one_or_none()
102-
is None
103-
) or study.review.status == "frozen":
86+
if not authz.user_is_allowed_for_review(
87+
current_user, study.review_id, if_frozen=False
88+
):
10489
raise errors.ForbiddenError(
10590
message=f"{current_user} forbidden to screen fulltexts for this review"
10691
)
@@ -212,6 +197,7 @@ def put(self, id, json_data):
212197
403: "current app user forbidden to delete fulltext screening; has not screened fulltext, so nothing to delete",
213198
404: "no fulltext matching id was found",
214199
},
200+
security="TokenAuth",
215201
)
216202
@bp.output({}, 204)
217203
@jwtext.jwt_required(fresh=True)
@@ -222,14 +208,9 @@ def delete(self, id):
222208
if not study:
223209
raise errors.NotFoundError(message=f"<Study(id={id})> not found")
224210

225-
if (
226-
db.session.execute(
227-
current_user.review_user_assoc.select().filter_by(
228-
review_id=study.review_id
229-
)
230-
).one_or_none()
231-
is None
232-
) or study.review.status == "frozen":
211+
if not authz.user_is_allowed_for_review(
212+
current_user, study.review_id, if_frozen=False
213+
):
233214
raise errors.ForbiddenError(
234215
message=f"{current_user} forbidden to delete fulltext screening for this review"
235216
)

0 commit comments

Comments
 (0)