cozy / cozy-libs

Libraries used to build Cozy products and tools.
MIT License
7 stars 12 forks source link

Cozy-Sharing quelques issues #1229

Open Crash-- opened 3 years ago

Crash-- commented 3 years ago

En débuguant un peu pour #1227, je me suis aperçu de quelques petits soucis par rapport à cozy-sharing.

Récapitulons un peu ce que fait cette lib : Au mount:

On dispatch les sharings / permissions en faisant attention au revoqué / membres etc. On va ensuite mapé sur les éléments pour :

Si le doctype est different de io.cozy.files on s'arrête là.

Si le doctype est celui des fichiers alors :

L'ensemble fonctionne pas trop mal mais quelques remarques :

Ce qui fait que quand on récupère une sharing ou une permission pour le doctype io.cozy.files, on va se retrouver à mettre dans le slice byIds, "Contact1" et "Group1". On devrait certainement juste se baser sur la permission réellement dédiée au doctype qu'on demande afin de ne pas avoir à gérer des effets de bord ? Est-ce que c'est à cozy-client de gérer ça quand on fait :

permissionCol.findLinksByDoctype(doctype)

Ou à cozy-sharing de les enlever quand on boucle dessus ?

Autre point : Si je partage l'ensemble d'un doctype via une permission, qu'est-ce qu'on s'attend à mettre dans le slice "byIds" ? Est-ce qu'on met genre "*" pour signifier tout ? null ? Et on contourne ensuite tous les traitements sur les paths pour retourner que tout est partagé ? (sur #1227 j'ai mis un tableau vide pour éviter de crasher nos apps dans un premier temps car c'est un cas qui arrive aujourd'hui avec le GL)

JF-Cozy commented 3 years ago

Les partages sont maintenant créés avec les règles de partage les plus élevée (readWrite), mais chaque membre du partage peut avoir une restriction readOnly.

On devrait donc faire disparaître la notion obsolète de one-way / two-way pour la remplacer par la notion booléenne readOnly (qui si elle est fausse est un readWrite implicite).

Ceci impliquerait de modifier :

JF-Cozy commented 3 years ago

Lors d'un partage non approuvé, cela créé un sharing shortcut. Même si l'expéditeur a créé le partage en two-way, le destinataire se voit être en one-way car actuellement on se base sur les rule du partage pour définir *-way. Or il n'y a pas de rule dans un tel cas, on décide donc par défaut de choisir one-way.

On devrait se baser sur le readOnly des membres plutôt que les rules(voir issue au-dessus https://github.com/cozy/cozy-libs/issues/1229#issuecomment-779690610)