multinet-app / multinet-client

Multinet web client application
https://multinet-app.readthedocs.io
4 stars 3 forks source link

Add "Request Access" button for workspaces #141

Open jjnesbitt opened 3 years ago

jjnesbitt commented 3 years ago

If someone is a reader on a workspace, and wishes to request further access, we could add a button (maybe in the same menu as the permissions and AQL Wizard menu), which would send an email to the owner of the repo, detailing that a user has requested a specific access level.

There's two ways we could go about this (if we choose to address it). The first approach is to ignore dealing with sending emails ourselves, and just open an email link with a populated template. This would expose the workspace owner's email to any and all readers, and doesn't provide any integration with our application, but would be less work.

The second option is to handle sending emails ourselves. So, when a user clicks the "Request Access" button, our server sends an email to the owner, who can then open multinet and give them access.

The second option may allow for more features, like sending emails to a user who's been granted access to a workspace (kind of like what Github does). However, it's more work to setup email sending on the backend, although I'll admit I'm not sure how much work that is. I'm inclined to believe it's not that much, this is a pip module for Flask which may provide easy integration.

Furthermore, adding support for sending emails may allow for notifications beyond permissions. For example (this is thinking down the line), if a user uploads a very large dataset and we validate/process it asynchronously, then we could notify the user by email when it has completed, if it failed/succeeded, etc.

waxlamp commented 3 years ago

If someone is a reader on a workspace, and wishes to request further access, we could add a button (maybe in the same menu as the permissions and AQL Wizard menu), which would send an email to the owner of the repo, detailing that a user has requested a specific access level.

There's two ways we could go about this (if we choose to address it). The first approach is to ignore dealing with sending emails ourselves, and just open an email link with a populated template. This would expose the workspace owner's email to any and all readers, and doesn't provide any integration with our application, but would be less work.

This feels janky to me: it's a throwback to mailto links from the late 90s, and it has the problem of exposing people's contact info, as you state. Let's nix this approach.

The second option is to handle sending emails ourselves. So, when a user clicks the "Request Access" button, our server sends an email to the owner, who can then open multinet and give them access.

The second option may allow for more features, like sending emails to a user who's been granted access to a workspace (kind of like what Github does). However, it's more work to setup email sending on the backend, although I'll admit I'm not sure how much work that is. I'm inclined to believe it's not that much, this is a pip module for Flask which may provide easy integration.

Furthermore, adding support for sending emails may allow for notifications beyond permissions. For example (this is thinking down the line), if a user uploads a very large dataset and we validate/process it asynchronously, then we could notify the user by email when it has completed, if it failed/succeeded, etc.

All of these application ideas for server-managed emails are good ideas. Furthermore, D&A has plenty of experience with this type of feature (in Girder, for example, among other projects). There are also services like Mailgun that can do this for us if we get to that point.

Thanks for laying out your thoughts on this. Let's think about this if and when we get to enough of a user base during the remainder of the project that we need this sort of feature. It could also come up during a commercialization effort for the software as well.