I have been researching CouchDB and TouchDB for sometime now and seriously contemplating their suitability for a mobile app I have in mind. I have a few questions and I would really appreciate if anyone can point me in the right direction. The scenario is I have 2 mobile clients running on TouchDB. I want Mobile Client A to be able to replicate a specific document on to Mobile Client B. Then I want Mobile Client B to be able to make changes and sync those changes back to with Mobile Client A. From an architectural standpoint I figure that I would need a centralized couchdb database that both clients can pull/push. The problem that I am having is how do I ensure that Client B is only able to replicate documents that he is authorized replicate. I understand that I can use a replication filter to limit the documents that are replicated but how do I enforce it on Mobile Client B? Also what would be the ideal architecture for the above scenario? Any assistance will be greatly appreciated. Thanks!
Enforcing Access Control on CouchDB
238 Views Asked by user1441287 At
1
There are 1 best solutions below
Related Questions in ANDROID
- Creating global Class holder
- Flutter + Dart: Editing name of a tab shows up a black screen
- android-pdf-viewer Received status code 401 from server: Unauthorized
- Sdk 34 WRITE_EXTERNAL_STORAGE not working
- ussd reader in Recket Native module
- Incorrect display of LinearGradientBrush in IOS
- The Binary Version Of its metadata is 1.8.0, expected Version is 1.6.0 build error
- I can't make TextInput to auto expand properly in Android
- Creating multiple instances of a class with different initializing values in Flutter
- How to create a lottie animation
- making android analyze with coverity sast tool
- Flutter plugin development android src not opening after opening example
- I initialize my ViewModel in the Activity with several fragments as tabs, but the fragments(tabs) return null for the updated livedata
- Node.js Server + Socket.IO + Android Mobile Applicatoin XHR Polling Error...?
- How I can use the shared preferences class?
Related Questions in MOBILE
- Doesn't work TrafficStats.clearThreadStatsTag() in Kotlin
- KeyboardAvoidingView makes a messy the flexbox
- How can I find a lost Samsung Device?
- How can I eliminate or deactivate the white flash that appears when I press a button via a mobile device?
- In MAUI how can I Show different appshell tabbars depending on the user role?
- Why doesn't TrafficStats.clearThreadStatsTag() work in Kotlin?
- How can I create an animation like WhatsApp archive button spawn animation with SwiftUI on watchOS?
- Not showing the widget wrapped with Obx in Android 14
- Is there a way to use Family Link group in my own application?
- Is it viable proxying all my mobile apps requests, to some kind knowing that a request is coming from a secure source
- How can I connect android app to arduino via Bluetooth?
- How to animate calculated position/container height when viewport changes?
- Unnecessary override. Try adding behavior in the overriding member or removing the override
- Selecting an option in the mobile app drop down which is not visible when the app is loaded for the first time
- Getting Real-Time Sensor Data from Smart Watches
Related Questions in COUCHDB
- Keep a webview app of Android running in the background
- fetch data from couchdb to node.js file
- CouchDB _approx_count_distinct
- Couchdb python - Upload Attachment with put_attachment
- Couchdb illegal_database_name error when creating database
- CouchDB `_find` api `$elemMatch` fails to find matching record
- How to build Erlang v24 for couchdb?
- Docker Desktop couchDB - Apple Mac M1
- can I ask couchdb `_change` API to return all document change history?
- How to implement lazy pagination in CouchDB?
- is it even possible to use multiple indices to query a design document view in CouchDB?
- CouchDB view javascript only supports a subset of JS features?
- How to query a sub-element of the design document in CouchDB?
- Does CouchDB /_changes?since=X request give older feed before X?
- Count query in CouchDB
Related Questions in REPLICATION
- Which column to use for ordering change data read from change tables in SQL Server?
- Postgresql Database Replicate Using Docker-Compose File
- PG_chameleon during start replica turns columns into UNKNOWN_COL{number}
- Consistency of replicated map across cluster nodes
- DB Replicating from different publisher to a sing subscriber
- How to route different db requests to read only instance
- Replication postgresql database error connection between master to standby
- mongodb statefulset pods restarting without any useful error during replication
- Snapshots in Logical Decoding
- SQL Server replication: Need to remove articles from the publication
- TSQL query for transactional replication log reader agent account in SQL Server
- Does PostgresSQL 16 support Active Active replication ? I am using the free version
- Invoke-Command to a DC for replication not working in Windows 11
- Postgres connection failed while Debezium connector streaming changes
- How to Achieve Master-Master Replication in MongoDB for Two Databases in Different Locations?
Related Questions in TOUCHDB
- The pricing programs of hosted CouchDB providers do not make sense
- Couchdb - is it possible to "disreplicate" a replicated document
- Duplicate symbol error when using TouchDB and FMDB wrapper together
- CBLite Android - Get values in second level
- Migrate between two CouchDB designs
- TouchDB saves the attachment but does not save the property
- Difference between CBLQuery's(a.k.a CouchQuery's) documentID and sourceDocumentID
- How do I include class TDCollateJSon in my my code?
- _replicate db does not exists in couchDb on Android
- LiteServAndroid could not able to configuring project
- View TouchDB mobile database in desktop
- Replication from CouchDB to TouchDB
- TouchDB - CouchbaseLite Libraries?
- Gradle: Project "x" not found in root project "myProject"
- Cost of continuous replications vs one-shot replications (using TouchDB and Cloudant)
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
I have a similar setup with TouchDB and BigCouch in EC2 (the centralized database). It can be quite an adventure to get the pushing and pulling working right. =)
I think you are on the right track with using a replication filter with the pulls. If you limit the pulls for Client B with a replication filter, your life will most likely be easier because Client B can modify anything on his local TouchDB and it won't hurt anything.
In other words, don't replicate down documents you don't want Client B to modify.
To do that you would have to introduce a field into the document that specifies an access level - or some array maybe that has Client B's user id in it. That way he only sees what he is authorized to see.
Two notes before I forget: a) TouchDB on Android is sketchy right now. They are working to make it better, but it's behind the iOS version. b) I strongly recommend looking into writing your replication filter in Erlang. I got a 50% speed increase from doing that.