Rename File fails

Hello,

I am new to Solid, have been working on it for a couple of weeks, playing a little bit with the API.
I can to create, remove files and folders but I do not seem able build a rename a file or folder.

I´m using:

import auth from “solid-auth-client”;
const fc = new SolidFileClient(auth, { enableLogging: true });

export const rename = async (uriFrom,uriTo) => {
await fc.move(uriFrom,uriTo);
};

I have tried combinations of removeFile(), createFolde() but I always get the following error

SFCFetchError: SFCFetchError 403 https://ch1ch0.pod.ideniox.com/test1/.meta.acl - Make sure that the origin of your app is authorized for your pod
at assertResponseOk (http://localhost:3000/static/js/0.chunk.js:198969:17)

Is this a bug?

A 403 error indicates that the app (not the user) has not been given permission. Have you followed these instructions to make your app trusted? If you’ve done that, also made sure your app has logged in prior to trying to move and has permissions in both the from and to locations. Ask back if none of that fixes it.

I am able to create files, folders and delete them as well. shouldn´t this rule out a rights issue?
I think I have set up the rights correctly as well.

I notice that the error you show is on a .acl file. Those require Control access. I see that the app has Control access, does the user of the app also have Control access? If so, then yes, this may be a bug, please file an issue at https://github.com/jeff-zucker/solid-file-client/issues and I’ll try to track it down as soon as I can.

Also, could you perhaps show me the contents of https://ch1ch0.pod.ideniox.com/test1/.meta.acl?

This one I created
image

This is the https://ch1ch0.pod.ideniox.com/inbox/.meta.acl
image

I have just realised https://ch1ch0.pod.ideniox.com/profile/card#me.meta.acl gives me
image
manager.js:296 Uncaught TypeError: Cannot read property ‘slice’ of undefined
at e.exports.outlinePredicateTD (manager.js:296)
at Object.generateRequest (userInput.js:1402)
at Object.addNewPredicateObject (userInput.js:96)
at HTMLImageElement. (defaultPane.js:66)

So it looks like it is a problem with the .acl file itself. If you can’t read or delete it, you may need to ask your pod provider to delete it.

I appear to have the same issue with a different provider.
https://ch1ch0gz.solidcommunity.net/inbox/.meta.acl
image

What is the content of the .acl files? A typo could make them unreadable and lock you out of the resources they are associated with.

You were right. I have an issue with the acl rights. Thanks very much for the help. Very appreciate it.

1 Like

Hi @ch1ch0gz, are you sure you want to deal with your_file.meta.acl ?
Generally this does not exist, for each resource, ( file / container) there is one .meta and one .acl (and they are optional) not a .meta.acl file.
your_file.txt → your file
your_file.txt.acl → control acces
your_file.txt.meta → can be used to provide meta data about your file, as the photographer for a photo, an article to refer… But it is not large used for what I’ve seen now.
Where is hosted your app ? If you are developing, on localhost, localhost:port_number must be added to trusted_appp

Could you try with poPock / Editor module to move/rename your file ( solid-file-client is used in it) https://scenaristeur.github.io/solid-vue-panes/editor!

  • Open poPock
  • connect with your webid
  • click on Editor
  • navigate to the folder where your file is with the green folder button
  • then use fork icon to move, rename your file, but this does not work with .meta or .acl files as they are linked to your_file.txt
    :wink:
1 Like

@Smag0, Thanks for your comment. We just found out we had broken some of the rights by mistake in our pods and had to go to the server to restore them. All good now. I will check out your app :slight_smile: as well!

@Smag0, @jeffz , I have resolved the rename issue…perhaps I am moving slightly away from the topic but do you know how I can modified, create or delete permissions on blank nodes via API? I have tried query-ldflex and inrupt solid-client and no luck.

I would like to be able to update any permissions for any app.
cardMe trustedApp [mode Read, mode Write, mode Control; origin localhost:3000 ] .

Thanks in advance

@ch1ch0gz you can’t apply permission to a simple node.
You can only apply permission to a resource (a file or a container)
this lib can help you https://docs.inrupt.com/developer-tools/javascript/client-libraries/tutorial/manage-access-control-list/

More info here https://github.com/solid/web-access-control-spec

No Problem, in advance

@Smag0 is correct that it is not currently possible to set permissions on a node. However, I’m guessing that is not what you meant. I’m guessing you have something like this:

n1:trustedApp
    [
        n1:mode n1:Append, n1:Control, n1:Read, n1:Write;
        n1:origin <http://example.org>
    ],
    ...

And you want to change the permissions on http://example.org, not on the blank node itself.

Is this correct?

Thanks @Smag0, very useful information but what I am after is what @jeffz is suggesting. Yes that is correct.
I want to be able to change the app permissions, and I want to do it programmatically.
Furthermore it would be ideal to edit, create or delete complex nodes that contain blank nodes for instance.

Except the fact that I didn’t find any lib to deal with list with parenthesis, ( you can find it in another thread) I’ve never take a look to bracket notation, …
But I don’t think that an app that could modify or corrupt the permission of other apps is a really good idea… Furthermore, I think you can get the content with solid-file-client, find the bracket in it, make your change and put the file back at his origin. But that card file is really sensitive .
Solid-auth-client with a local file ask the user to allow permission for the app, so this could be a good way to find how it can be done

Hi.
I have managed to edit, create any quad even blank nodes using DataFactory.
I agree with you, Apps should not have the right to change permissions, unfortunately every time you grant permissions to an App you seem to be giving it the right to access all the pod. Any file explorer you build should be able to read it all, so user can access all the info in their pod?
Is it possible to isolate apps so they can only have access to specific folders in your pod?

You can manage access to the folder in the .acl file of the folder file but by default the app has access to all the user POD with the current solid servers ( node-solid-server) on inruot.net or solidcommunity.net. (with WAC authentication)

As you can see in the link i’ve posted above the SPEC is susceptible to change to another authentication protocole, more secure.
As I understand it, the developer building an app must register his app on a provider to get a specific key for his app, then specify which stuff on a POD user the app is capable to use

But perharps someone working on this new protocol could tell us a little more ? @Vincent ? @zwifi ?

1 Like

Unfortunately both me and @Zwifi aren’t working on the new protocol (I’m assuming you are referring to Access Control Policies) itself, but only on software that can/will be able to speak it. IIRC the ACP proposal is mostly worked on in the authorization panel, where you can see many issues tagged as such.

All of which is to say: don’t take my word on this :slight_smile: From what I’ve heard restricting what an app can do is something they hope to enable though.

4 Likes