Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

setPublicAccess from universalAccess not working as expected #1640

Open
AyazDyshin opened this issue Jun 12, 2022 · 1 comment
Open

setPublicAccess from universalAccess not working as expected #1640

AyazDyshin opened this issue Jun 12, 2022 · 1 comment
Labels
bug Something isn't working

Comments

@AyazDyshin
Copy link

Bug description

SetPublicAccess doesn’t return null, but returns an access object that is unchanged.

To Reproduce

(the pod used to get this bug is hosted on https://pod.inrupt.com/)

  1. Create a new container
  2. try to use setPublicAccess to set a new public access type on the created container (e.g: {read:true, write: true}
  3. assign the return to some variable
  4. check value of that variable, it would have read: false and write: false

Minimal reproduction

https://codesandbox.io/s/great-tharp-qzznwy?file=/src/index.ts

Expected result

The expected result is:

  1. null returned in case if you don't have rights to change access to the resource.
  2. an access object with values that were passed to the function (on return)

Actual result

an access object with everything set to false was returned (while read: true and write: true were passed to the function)

Environment

System:
OS: macOS 10.15.7
CPU: (4) x64 Intel(R) Core(TM) i5-3427U CPU @ 1.80GHz
Memory: 47.77 MB / 4.00 GB
Shell: 5.7.1 - /bin/zsh
Binaries:
Node: 16.14.0 - ~/.nvm/versions/node/v16.14.0/bin/node
npm: 8.3.1 - ~/.nvm/versions/node/v16.14.0/bin/npm
Browsers:
Chrome: 102.0.5005.61
Safari: 15.5
npmPackages:
@babel/core: ^7.17.9 => 7.17.9
@babel/preset-env: ^7.16.11 => 7.16.11
@babel/preset-react: ^7.16.7 => 7.16.7
@babel/preset-typescript: ^7.16.7 => 7.16.7
@inrupt/lit-generated-vocab-common: ^0.3.11 => 0.3.11
@inrupt/solid-client: ^1.23.1 => 1.23.1
@inrupt/solid-client-access-grants: ^1.0.1 => 1.0.1
@inrupt/solid-client-authn-browser: ^1.11.7 => 1.11.7
@inrupt/solid-ui-react: ^2.7.0 => 2.7.0
@inrupt/vocab-common-rdf: ^1.0.3 => 1.0.3
@types/jest: ^27.4.1 => 27.4.1
@types/node: ^17.0.23 => 17.0.23
@types/react: ^18.0.2 => 18.0.2
@types/react-dom: ^18.0.0 => 18.0.0
assert: ^2.0.0 => 2.0.0
babel-loader: ^8.2.4 => 8.2.4
bootstrap: ^5.1.3 => 5.1.3
buffer: ^6.0.3 => 6.0.3
css-loader: ^6.7.1 => 6.7.1
gh-pages: ^3.2.3 => 3.2.3
html-webpack-plugin: ^5.5.0 => 5.5.0
rdf-namespaces: ^1.9.2 => 1.9.2
react: ^18.0.0 => 18.0.0
react-bootstrap: ^2.2.3 => 2.2.3
react-dom: ^18.0.0 => 18.0.0
react-icons: ^4.3.1 => 4.3.1
solid-file-client: ^2.1.3 => 2.1.3
style-loader: ^3.3.1 => 3.3.1
ts-loader: ^9.2.8 => 9.2.8
typescript: ^4.6.3 => 4.6.3
webpack: ^5.72.0 => 5.72.0
webpack-cli: ^4.9.2 => 4.9.2
webpack-dev-server: ^4.8.1 => 4.8.1
npmGlobalPackages:
corepack: 0.10.0
create-react-app: 5.0.0
java: 0.12.2
jest: 27.5.1
npm: 8.3.1
typescript: 4.6.2

Additional information

@AyazDyshin AyazDyshin added the bug Something isn't working label Jun 12, 2022
@AyazDyshin
Copy link
Author

AyazDyshin commented Jun 13, 2022

A small update: getPublicAccess from universalAccess module behaves in the same way, ie it would return object:
{ read: false, append: false, write: false, controlRead: false, controlWrite: false} even though public access is defined differently on the called resource.
After examining the source code, I think I found a possible reason for such behavior:

  1. in case if the POD uses acr (and it does in our case), function getPublicAccess calls getPublicAccessAcp function.
  2. getPublicAccessAcp calls getAgentAccess function:
    https://github.com/inrupt/solid-client-js/blob/0f2f6c906e7c60581d3ff97111be05b586988ffb/src/acp/util/getAgentAccess.ts
    this one.
    And I think this is where the bug comes from, because in this function we have an initialization of a variable as such( that is then returned):
    let resourceAccess = {
    read: false,
    append: false,
    write: false,
    controlRead: false,
    controlWrite: false,
    };
    And value of this variable is only changed on map calls on arrays obtained from calling functions:
    getPolicyUrlAll and getAcrPolicyUrlAll
    But, as pointed out in this bug report (not in the original message but in the reply to the original message):
    getResourcePolicyAll and getPolicyAll functions from acp_ess_2 module don't work #1641
    These functions are bugged and always return empty arrays, and therefore as there is nothing to map over, the value of
    resourceAccess is never updated and is return in unchanged form.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant