FAQ - Foire aux questions

Comment récupérer uniquement les objets que l'utilisateur peut lire ?

Dans Wikitty, si vous gérez la sécurité et qu'un utilisateur n'a pas le droit de lire un objet que vous demandez, null sera retourné. Dans le cas de listes d'objets, cela peut vite devenir génant de devoir vérifier que l'objet retourné n'est pas nul. Une manière de contourner ceci est de limiter les résultats de recherche aux objets que l'utilisateur à le droit de lire.

Exemple

Dans cet exemple, le droit de lecture est accordé soit au privateGroup, soit à tout le monde. On vérifie donc que l'utilisateur authentifié fait soit partie du privateGroup soit on restreint les résultats aux objets dont le reader n'est pas le privateGroup:

// Récupère le privateGroup (méthode métier)
WikittyGroup privateGroup = getPrivateGroup();

// Récupère l'utilisateur authentifié
WikittyUser user = wikittyClient.getUser();

// Récupère les membres du privateGroup
Set<String> members = privateGroup.getMembers();

// Vérifie si l'utilisateur fait partie du privateGroup
if (members != null && user != null &&
members.contains(user.getWikittyId())) {
// L'utilisateur fait partie du privateGroup, on ne change rien à la
// requête.
} else {
// L'utilisateur ne fait pas partie du privateGroup, on restreint
// donc les résultats de notre query.
query.neq(WikittyAuthorisation.FQ_FIELD_WIKITTYAUTHORISATION_READER,
privateGroup.getWikittyId());
}