Skip to content

Changing access of indexed resources from private to public (and vice versa) #25

Open
@elf-pavlik

Description

@elf-pavlik

It seems that public and private type indexes, instead of just indexing resources partition them.
I will describe it based on Type Registration using solid:instanceContainer predicate.

Let's take snippets from the current draft, I will exchange Bookmark with Photo to work with something more straight forward.
first the public type index https://solid.github.io/type-indexes/#public-type-index

 @prefix solid: <http://www.w3.org/ns/solid/terms#>.
                    @prefix vcard: <http://www.w3.org/2006/vcard/ns#>.
                    @prefix ex: <http://ns.example/#>.
                    
                    <>
                      a solid:TypeIndex ;
                      a solid:ListedDocument.
                    
                    <#ab09fd> a solid:TypeRegistration;
                      solid:forClass vcard:AddressBook;
                      solid:instance </public/contacts/myPublicAddressBook.ttl>.
                    
                    <#bq1r5e> a solid:TypeRegistration;
                      solid:forClass ex:Photo;
                      solid:instanceContainer </public/myPhotos/>.

second the Private Type Index https://solid.github.io/type-indexes/#private-type-index

@prefix solid: <http://www.w3.org/ns/solid/terms#>.
                      @prefix vcard: <http://www.w3.org/2006/vcard/ns#>.
                      @prefix ex: <http://ns.example/#>.
                      
                      <>
                        a solid:TypeIndex ;
                        a solid:UnlistedDocument.
                      
                      <#ab09fd> a solid:TypeRegistration;
                        solid:forClass vcard:AddressBook;
                        solid:instance </private/contacts/myPrivateAddressBook.ttl>.
                      
                      <#bq1r5e> a solid:TypeRegistration;
                        solid:forClass ex:Photo;
                        solid:instanceContainer </private/myPhotos/>.

Let's imagine adding a cat photo into the private type index (partition). We could get something like /private/myPhotos/garfield

At some point, the resource owner wants to make a public post and just that photo in it, so they decide to change ACL/ACR controlling access to that specific photo and make it public read.

Since type indexes effectively partition, not just index the resources. We would end up with Private Type Index leading to / indexing / containing a public read photo.

Exactly the same situation can happen the other way if the photo was initially made public and created at /public/myPhotos/garfield. Once the resource owner changes that access policy to that photo, we end up with a mismatch where a Public Type Index leads to / indexes/ contains a private photo.

To avoid those mismatches, the resource owner would have to delete the original resource and create it under a different IRI, which goes against the permanence of IRIs. It also doesn't fit well with access control, which allows simply changing access to any given resource.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions