Partage de fichiers et de dossiers
La méthode secrecyClient.cloud.shareNode partage des fichiers ou des dossiers dans le cloud avec des utilisateurs ou des groupes spécifiques de votre application, en leur accordant certains droits d'accès Rights.
Elle prend un tableau d'accès en premier paramètre et une fonction de progression optionnelle en second. Chaque accès décrit le nœud et la clé publique du destinataire — et non son identifiant utilisateur — ainsi que les droits accordés. Utilisez secrecyClient.app.userPublicKey pour obtenir la clé publique d'un utilisateur dans votre application à partir de son identifiant, ou secrecyClient.group.publicKeys pour des identifiants de groupe. Voir clés et identités.
// Rights 'read' | 'write' | 'delete'
import { type Rights } from '@secrecy/lib';
const shareFileOrFolder = async ({
nodeId,
rights,
secrecyUserId,
}: {
nodeId: string;
rights: Rights;
secrecyUserId: string;
}): Promise<boolean> => {
// First we need to check if the secrecyClient is available
if (!secrecyClient) {
return false;
}
try {
// sharing is done by public key, so the user public key is resolved first
const pubKey = await secrecyClient.app.userPublicKey(secrecyUserId);
const result = await secrecyClient.cloud.shareNode([
{
nodeId,
pubKey,
rights,
// rights the recipient is allowed to grant or revoke in turn
addAccess: null,
delAccess: null,
sharingAddAccess: null,
sharingDelAccess: null,
},
]);
// isFinished is false when some accesses could not be granted
return result.isFinished;
} catch (error) {
console.error(error);
return false;
}
};Chaque accès accorde un niveau de droit via rights, ainsi que quatre droits de délégation optionnels : addAccess et delAccess (ce que le destinataire peut accorder ou révoquer sur le nœud) et sharingAddAccess et sharingDelAccess (ce qu'il peut accorder ou révoquer sur le partage lui-même). Passez null pour n'en accorder aucun.
Pour partager plusieurs nœuds ou partager avec plusieurs utilisateurs en une seule fois, un accès peut également prendre les tableaux nodeIds et/ou pubKeys à la place des champs au singulier.
La méthode renvoie { isFinished: true } lorsque tous les accès ont été accordés. Lorsqu'elle renvoie isFinished: false, la propriété details liste les accès aux nœuds manquants, les accès aux données manquants et les accès dont les droits diffèrent de ceux attendus.