23

I need to create a CouchDB user which can only read documents from any database but can't write any of them. As far as I'm concerned, it is not what is supported by default (user types are described here).

As the wiki says, access rights are given per database, so it seems what I am trying to do is not the best way to use CouchDB.

Anyway, it would be great to do that. Could you please give me some tips on how to implement that?

Octavian Helm
  • 39,405
  • 19
  • 98
  • 102
Sergey Savenko
  • 666
  • 6
  • 11

1 Answers1

36

You will need to put a design doc in each database you want to enforce this rule. The design doc will have to have a 'validation function' that checks for something on the user that says whether they have write access or not.

Here is a chapter on validation functions form the official CouchDB book.

And even better, here is a validation function that only let admins modify a doc, and restrict regular users to read-only access. Here you can find an explanation of the function.

Håken Lid
  • 22,318
  • 9
  • 52
  • 67
Ryan Ramage
  • 2,606
  • 18
  • 17
  • Oh, thank you so much, Ryan! It helped me a lot, although it's a little inconenient to add update validation function to each db's design document. – Sergey Savenko May 23 '12 at 06:03