I am working on an idea of uploading a file on IPFS. But the requirement is, the uploaded file should be available for view only to the intended group of people. The code to upload the file is in JS. Now my question is, is it possible to upload a file in IPFS with limited permissions. The other question is , is it required to have IPFS installed at the end user to view the file in IPFS. If you can assist me by directing to proper documentation then that would also be great.
Once you upload a file to
ipfs, it is theoretically available to anyone who knows its hash. So, it's not possible to restrict the access to the file.
What is possible, is to encrypt the file in some way and only give the decryption key/password to the group of people you want to be able to access it.
Have a look at this awesome ipfs resources.
The projects that seem to best suit your requirements are:
ipfs-add-from-encrypted: This script takes a file or directroy as input, uses tar if a directory and GPG AES256 symmetric encryption with the password you provide and adds it to IPFS and returns the IPFS hash.
ipfsecret: Encrypt and decrypt IPFS files with a secret passphrase.
For your second question: it would be best to have a locally running ipfs node, but fortunately that's not required. Recently, cloudflare launched a set of hosted ipfs gateways which anybody can use.
Regarding your first question, I believe the Submarining feature from Pinata could help you with your project as written on their documentation:
Submarining is a premium Pinata feature that allows users to share unlockable content with their community. Technical and non-technical creators can give fans access to exclusive gated content via NFT ownership, Retweets, and geo-location via API, or with our no-code solution at Submarine.me
For developers, submarining provides the security to store files for apps and marketplaces without the risk of their data being exposed. Similarly, creators who use NFTs to monetize their creative work can now share content with their customers without leaving their data on public IPFS, which reduces the risk of stolen content and NFT media.
If I want to answer your second question, I would say there are several tools for making requests and fetching data to display them later, such as Axios.