# -*- coding: utf-8 -*- # # Copyright (C) 2020-2021 Graz University of Technology. # # invenio-config-tugraz is free software; you can redistribute it and/or # modify it under the terms of the MIT License; see LICENSE file for more # details. """ Records permission policies. Default policies for records: .. code-block:: python # Read access given to everyone. can_search = [AnyUser()] # Create action given to no one (Not even superusers) bc Deposits should # be used. can_create = [Disable()] # Read access given to everyone if public record/files and owners always. can_read = [AnyUserIfPublic(), RecordOwners()] # Update access given to record owners. can_update = [RecordOwners()] # Delete access given to admins only. can_delete = [Admin()] # Associated files permissions (which are really bucket permissions) can_read_files = [AnyUserIfPublic(), RecordOwners()] can_update_files = [RecordOwners()] How to override default policies for rdm-records. Using Custom Generator for a policy: .. code-block:: python from invenio_rdm_records.services import ( BibliographicRecordServiceConfig, RDMRecordPermissionPolicy, ) from invenio_config_tugraz.generators import RecordIp class TUGRAZPermissionPolicy(RDMRecordPermissionPolicy): # Create access given to SuperUser only. can_create = [SuperUser()] RDM_RECORDS_BIBLIOGRAPHIC_SERVICE_CONFIG = TUGRAZBibliographicRecordServiceConfig Permissions for Invenio (RDM) Records. """ from invenio_rdm_records.services import RDMRecordPermissionPolicy from invenio_rdm_records.services.config import RDMRecordServiceConfig from invenio_rdm_records.services.generators import IfDraft, IfRestricted, RecordOwners from invenio_records_permissions.generators import ( Admin, AnyUser, AuthenticatedUser, Disable, SuperUser, SystemProcess, ) class TUGRAZPermissionPolicy(RDMRecordPermissionPolicy): """Access control configuration for rdm records. This overrides the origin: https://github.com/inveniosoftware/invenio-rdm-records/blob/master/invenio_rdm_records/services/permissions.py. Access control configuration for records. Note that even if the array is empty, the invenio_access Permission class always adds the ``superuser-access``, so admins will always be allowed. - Create action given to everyone for now. - Read access given to everyone if public record and given to owners always. (inherited) - Update access given to record owners. (inherited) - Delete access given to admins only. (inherited) """ class TUGRAZRDMRecordServiceConfig(RDMRecordServiceConfig): """Overriding BibliographicRecordServiceConfig."""