6.2. Sharing and Revocation

Your client application must allow users to share files (see Sharing and Revoking).

Your code should provide the following functionality:

  • If Alice wants to share a file with Bob, Alice assembles an accessToken and sends this to Bob.

  • Bob can use this access token to obtain full permission to the file, which should let Bob read, write, and share the file.

  • After sharing a file with another user, Alice can revoke that user’s access to the file. After revocation, the user should no longer have access to the file.

Example: Here is an example code snippet to help you understand the required functionality.

u1, _ := InitUser("user_alice", "password1")
u2, _ := InitUser("user_bob", "password2")

f1 := []byte("content")

u1.StoreFile("file_to_share_with_Bob", f1)
accessToken, err := u1.ShareFile("file_to_share_with_Bob", "user_bob")

u2.ReceiveFile("the_file_from_alice", "user_alice", accessToken)
f2, _ = u2.LoadFile("the_file_from_alice")
// f1 should be the same as f2

As demonstrated, after Alice gives Bob the access token, Bob can access the file (under a filename of Bob’s choice).