[PouchDb][Cloudant] Gérer les droits utilisateurs (Post évolutif.).

monetablissement

cloudantpouch

Introduction


Les PME, de nos jours, sont intéressées par des applications multi utilisateurs .

Bien sur, il ne s’agit pas que de la présence du fameux ‘log in – password’ comme disent les anglophones, mais il faut aussi pouvoir gérer avec une granularité très fine les droits dans les petits recoins de l’application .

Ce post est évolutif, puisque je découvre en temps réel les fonctionnalités liés au login.

Pour l’instant, je n’active pas SSL (note : Les mots de passe des utilisateurs sont automatiquement haschés par cloudant, comme couchDb le fait aussi.).

Il faut ajouter le plug in pouchDb Authentication


PouchDb dispose d’un plug in qui facilite l’authentification ici :

https://github.com/pouchdb-community/pouchdb-authentication

Je le télécharge, puis le référence dans mon index.html comme ça :

<!-- POUCHDB AUTH --><script src="js/pouchdb.authentication.min.js"></script>

La particularité de IBM CLOUDANT


Mes premiers tests concluent sur le fait que

PHASE 1 Il faut créer une base de donnée _users sur Cloudant (Jusque là on est dans du couchDb classique.)

database_users

PHASE 2 Il faut également que les users créés dans la base _users  soit également créés dans l’interface Cloudant , afin de lui attribuer les droits suivant :cloudant1.jpg

A ce stade, je peux désormais utiliser l’API suivant :

https://github.com/pouchdb-community/pouchdb-authentication/blob/master/docs/api.md

Je commande par réaliser un teste de création d’un utilisateur en insérant le code suivant dans le fichier app.js :

db.signUp('batman', 'brucewayne', function (err, response) {
  if (err) {
    if (err.name === 'conflict') {
      // "batman" already exists, choose another username
    } else if (err.name === 'forbidden') {
      // invalid username
    } else {
      // HTTP error, cosmic rays, etc.
    }
  }
});

Si le code précédent fonctionne, on voit le nouveau user apparaitre dans ibm cloudant :
batman.jpg

Voilà, donc, ensuite, si on remanie le code dans app.js pour n’autoriser QUE batman à s’authentifier, du coup, on écrit se code  dans app.js :

var  remoteDatabase = "https://1c54473b-be6e-42d6-b914-d0ecae937981-bluemix.cloudant.com/etablissements";
var db = new PouchDB(remoteDatabase);

 db.logIn('batman', 'brucewayne', function (err, response) {
  if (err) {
    if (err.name === 'unauthorized' || err.name === 'forbidden') {
      // name or password incorrect
	  alert('name or password incorrect');
	  console.log('test');
    } else {
      // cosmic rays, a meteor, etc.
	  alert('ok');
	  console.log('test');
    }
  }
});

De ce fait, dès qu’on essaye de faire un PUT dans l’application, c’est refusé avec erreur non autorisé , par contre Batman peut faire des lectures :
cloudant20

Conclusion


Il reste à coder en HTML-JS la  gestion des droits, en utilisant toutes les fonctionnalités de l’API. pouchdb-authentication

Pour l’instant, on est toujours en Full Front End, et on en déduit qu’il est éventuellement possible que cette technologie prenne le pas sur toutes les autres de type noSql (Plus de Node.js, plus de back end), les gens voulant exprimer leurs idées simplement, d’ordre général.

 

Publicités