Skip to content

Commit

Permalink
links checked for permissions
Browse files Browse the repository at this point in the history
  • Loading branch information
Ronald Krist committed Nov 28, 2024
1 parent d88b0a6 commit 4e9dbd8
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 17 deletions.
8 changes: 6 additions & 2 deletions build-tests/thesis.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ record:
module:
qualified: thesis
permissions:
presets: ['authenticated']
presets: ['everyone']
use:
- invenio
resource-config:
Expand All @@ -21,13 +21,17 @@ record:
properties:
title:
type: fulltext
permissions:
presets: ['authenticated']

use:
- invenio_files

draft: {}

draft-files: {}
draft-files:
permissions:
presets: ['authenticated']

profiles:
- record
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,30 +61,40 @@ def process_links(self, datatype, section: Section, **kwargs):
name="files",
link_class="ConditionalLink",
link_args=[
"cond=is_published_record",
f'if_=RecordLink("{{+api}}{files_url_prefix}files")',
f'else_=RecordLink("{{+api}}{draft_files_url_prefix}files")',
"cond=is_published_record()",
f'if_=RecordLink("{{+api}}{files_url_prefix}files", when=has_permission("list_files"))',
f'else_=RecordLink("{{+api}}{draft_files_url_prefix}files", when=has_permission("list_files"))',
],
imports=[
Import("invenio_records_resources.services.ConditionalLink"),
Import("invenio_records_resources.services.RecordLink"),
Import(
"oarepo_runtime.records.is_published_record"
),
Import("oarepo_runtime.services.config.is_published_record"),
Import("oarepo_runtime.services.config.has_permission"),
],
)
),

if datatype.root.profile == "draft_files":
if "links_search" in section.config:
section.config.pop("links_search")

if "links_search_item" in section.config:
section.config.pop("links_search_item")
# remove normal links and add
section.config["file_links_list"] = [
Link(
name="self",
link_class="RecordLink",
link_args=[f'"{{+api}}{url_prefix}files"'],
imports=[Import("invenio_records_resources.services.RecordLink")],
link_args=[
f'"{{+api}}{url_prefix}files"',
'when=has_permission_file_service("list_files")',
],
imports=[
Import("invenio_records_resources.services.RecordLink"),
Import(
"oarepo_runtime.services.config.has_permission_file_service"
),
],
),
]

Expand All @@ -98,22 +108,44 @@ def process_links(self, datatype, section: Section, **kwargs):
Link(
name="self",
link_class="FileLink",
link_args=[f'"{{+api}}{url_prefix}files/{{key}}"'],
link_args=[
f'"{{+api}}{url_prefix}files/{{key}}"',
'when=has_permission_file_service("read_files")',
],
imports=[
Import("invenio_records_resources.services.FileLink")
Import("invenio_records_resources.services.FileLink"),
Import(
"oarepo_runtime.services.config.has_permission_file_service"
),
], # NOSONAR
),
Link(
name="content",
link_class="FileLink",
link_args=[f'"{{+api}}{url_prefix}files/{{key}}/content"'],
imports=[Import("invenio_records_resources.services.FileLink")],
link_args=[
f'"{{+api}}{url_prefix}files/{{key}}/content"',
'when=has_permission_file_service("get_content_files")',
],
imports=[
Import("invenio_records_resources.services.FileLink"),
Import(
"oarepo_runtime.services.config.has_permission_file_service"
),
],
),
Link(
name="commit",
link_class="FileLink",
link_args=[f'"{{+api}}{url_prefix}files/{{key}}/commit"'],
imports=[Import("invenio_records_resources.services.FileLink")],
link_args=[
f'"{{+api}}{url_prefix}files/{{key}}/commit"',
'when=has_permission_file_service("commit_files")',
],
imports=[
Import("invenio_records_resources.services.FileLink"),
Import(
"oarepo_runtime.services.config.has_permission_file_service"
),
],
),
Link(
name="preview",
Expand Down
2 changes: 1 addition & 1 deletion setup.cfg
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[metadata]
name = oarepo-model-builder-drafts-files
version = 4.0.13
version = 4.0.14
description =
authors = Ronald Krist <[email protected]>
readme = README.md
Expand Down

0 comments on commit 4e9dbd8

Please sign in to comment.