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

Shared user storage #29

Open
mzur opened this issue Apr 23, 2024 · 0 comments
Open

Shared user storage #29

mzur opened this issue Apr 23, 2024 · 0 comments
Labels

Comments

@mzur
Copy link
Member

mzur commented Apr 23, 2024

This is a feature idea that bay be implemented with third-party funding in the future.

Users had the following problem: For teaching, one person uploaded lots of imagery via storage requests. These will be required for a many years while the teaching course exists. However, it is possible that the person uploading the files will not be available/employed for the whole time. Thus, they may not be able to extend their storage requests any they may expire, deleting the files.

To avoid this issue, we need something like "shared storage". One or more users are the "admin" of the shared storage. They are able to upload files, extend storage requests, use files for new volumes and invite other users to the shared storage. Other users may be "editors" of the shared storage. They can upload files and use the files for new volumes. Then there are "guest" users of the shared storage, who may only use the files for new volumes.

The "shared storage" will be new database models. Any global editor user can create new "shared storage". However, initially, it will have zero available storage space. The creator can then transfer some of their own storage quota to the shared storage. Any other admin of the shared storage can do this, too, so users will be able to pool their available storage quotas. If the users need more storage, they first have to ask for an increased quota of their account and then have to transfer/add this to the shared storage.

File uploads become "regular" storage requests which need to be reviewed and can expire. But instead of belonging to a user, the storage request will belong to a shared storage. Users can select this in the upload form (either "own account" or the name of the shared storage from a dropdown). All members of the shared storage can view it and all storage requests belonging to it by navigating to "storage" in the main menu, then selecting a new "Shared Storage" item in the menu on the left and finally selecting the name of the shared storage from a list. The list can look similar to the list of storage disks (with an "add new shared storage" item at the bottom).

A shared storage has a name, quota and (nullable) creator_id. Then, similar to projects, it has admin, editor or guest members with abilities as described above. A shared storage needs at least one admin member, too, so the logic to prevent deletion of users if only one admin is left will be similar to projects.

Shared storage is tightly integrated with storage requests, notifications and storage quotas, so this will be implemented in the biigle/user-storage module instead of becoming a new module.

@mzur mzur added the discuss label Apr 23, 2024
@mzur mzur moved this to Medium Priority in BIIGLE Roadmap Apr 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Status: Medium Priority
Development

No branches or pull requests

1 participant