So the only reason you have the prefix is because you have a list of roles to manage for your app, and you want to visibly discern which of them belong to this "feature" and which don't?
On Friday, October 16, 2015 at 9:26:56 PM UTC-4, J. Chris Anderson wrote: > > I like to use a prefix so that if it have roles I'm using for this > aliasing feature, they don't get mixed up with roles I'm using for > something else. The prefix should be unique in your app, but maybe pick > something shorter than "codename". > > Chris > > On Friday, October 16, 2015 at 3:00:11 PM UTC-7, Seung Chan Lim wrote: >> >> Ah... roles... Yes, indeed. >> >> It occurs to me that "codename-" prefix is unnecessary. >> >> Am I right? >> >> slim >> >> On Friday, October 16, 2015 at 2:25:19 PM UTC-4, Jens Alfke wrote: >>> >>> >>> On Oct 16, 2015, at 7:14 AM, Seung Chan Lim <[email protected]> wrote: >>> >>> 1. have users create documents >>> 2. only allow the user that created the document to edit the document >>> (i.e. in the sync function check the "owner" attribute to be the same as >>> the authenticated user) >>> 3. allow everyone see the document (i.e. put it in a "public" channel) >>> 4. hide who created the document from people other than the creator >>> >>> >>> This is tricky. By design, there isn’t any hidden information in >>> documents. That’s because we support multi-master replication where docs >>> might pass through multiple servers/peers, so there isn’t just one source >>> of ‘truth’. I think the best you can do is to *obscure* the creator, so >>> that it’s possible to tell that two revisions were written by the same >>> creator without revealing who that creator is. >>> >>> I came up with a clever solution that relies on encrypting the username. >>> Unfortunately it would require the sync function to decrypt it, but it >>> isn’t practical to do that because there are no encryption APIs available, >>> and implementing them in JS in the sync fn would be too slow. :( >>> >>> Then JChris came up with an even more clever solution, and I simplified >>> it a little bit: >>> >>> >>> - For every user, pick a secret string as their ‘codename’. It needs >>> to be unique, and it needs to be impossible to derive the username from >>> the >>> codename. >>> - Create a role named "codename-“+codename, and grant only that user >>> that role. >>> - The client needs to know the user's codename somehow. >>> - When a client creates a new document, it adds a property >>> “codename” whose value is the user’s codename. >>> - The sync function then calls requireRole("codename-"+doc.codename) >>> >>> >>> —Jens >>> >> -- You received this message because you are subscribed to the Google Groups "Couchbase Mobile" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/mobile-couchbase/d7cfced2-35ee-481a-8e10-4cc7b2cbc9e0%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
