2017-04-19 3 views
1

Dans mon entreprise, nous utilisons IBM Domino depuis plus d'une décennie. Nous l'utilisons pour construire des applications hors ligne avec support de réplication. Cela fonctionne bien, mais nous devons utiliser le client IBM Notes pour permettre cette fonctionnalité et cela ne fonctionne pas sur les appareils mobiles (à l'exception de l'ordinateur portable Windows, bien sûr).PouchDB + CouchDB pour les applications hors ligne avec gestion des droits (IBM Domino replace)

Je suis à la recherche d'autres solutions pour construire des applications hors ligne (premier-et-multi-support). Je pense que CouchDB + PouchDB est la meilleure solution. Mais pour remplacer Domino, je dois remplacer la fonction d'autorisation.

Domino a plusieurs niveaux de droits dans la base de données ACL (gestionnaire, concepteur, auteur, lecteur, ...). Et pour chaque document, nous pouvons ajouter un lecteur et un champ auteurqui limite qui peut écrire et lire le document.

Par exemple, nous utilisons Domino avec notre CRM, employé peut lire (et écrire) ses clients et les clients de l'employé qui sont le plus bas dans la hiérarchie de l'entreprise. Il peut également voir les clients dans ses zones géographiques (pas d'écriture).

Pour ce faire, dans Domino, on calcule (chaque soir) un lecteur et un champ d'auteur dans tous les documents du client. Comment puis-je réaliser quelque chose comme ça dans CouchDB? C'est possible?

Je l'ai lu de nombreuses possibilités:

  • synchronisation partielle avec des fonctions d'exposition ou filtre (CouchDB/PouchDB partial syncs with limited rights)
  • Une base de données par utilisateur. (Comment la base de données divisée dans mon cas?)
  • Utilisez une application proxy comme covercouch pour gérer ACL (https://github.com/ermouth/covercouch)
  • Développer mon propre proxy où dans peut mettre en œuvre des fonctions de filtrage pour correspondre à mes besoins?

Quelle est la meilleure solution pour résoudre mon problème ci-dessus?

+0

Vous avez raison, je précise ma question ci-dessus. – Dorian

+0

Beaucoup amélioré. Merci! – Flimzy

Répondre

3

Apache CouchDB n'a pas d'autorisations par document. Bien que vous puissiez utiliser la réplication filtrée pour répliquer uniquement un sous-ensemble de données, vous ne devez pas compter sur la réplication filtrée comme une forme de gestion des accès. Actuellement, votre seule option réellement viable consiste à adopter l'approche d'une base de données par utilisateur. Vous avez quelques options:

  • Utilisez le couch_peruser configuration option dans Apache CouchDB 2.0 qui permettra de créer une base de données pour chaque utilisateur créé dans la base de données _users et donner cette autorisation de l'utilisateur à lire et à écrire à leur propre base de données. Faites tourner votre propre schéma pour faire essentiellement la même chose que ci-dessus.
  • Utilisez Cloudant Envoy qui vous permet de fournir l'illusion d'une base de données par utilisateur à des cibles de réplication telles que PouchDB tout en stockant toutes ces données dans une base de données. Consultez Authentification pour applications Cloud Envoy, Part I et Part II pour plus de détails sur l'utilisation de Cloudant Envoy.
  • Utilisez Hoodie. Hoodie est un backend complet pour les applications Offline First, utilisant Apache CouchDB sur le serveur et PouchDB sur le client. Hoodie fournit des API pour la gestion des utilisateurs, la persistance des données, la synchronisation des données et un certain nombre d'autres fonctionnalités.