SharePoint 2007 Form Services : Émulation des rôles utilisateur

AIT YAHIA Iidir

Ce tutoriel a pour objectif de vous montrer comment créer une ACL basée sur l'émulation d'une gestion des rôles utilisateur avec InfoPath Form Services.
Commentez

- Titre : SharePoint 2007 Form Services : Émulation des rôles utilisateur

- Auteur : AIT YAHIA Iidir

- Parution : 28 août 2009

- Licence : Copyright ® 2009 AIT YAHIA Iidir. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Introduction

- II. Prérequis

- III. Mise en œuvre

- III-A. Utilisation d'une liste SharePoint

- III-A-1. Création de la liste SharePoint

- III-A-2. Paramétrage du formulaire

- III-A-3. Récupération du nom d'utilisateur

- III-A-4. Récupération du rôle d'utilisateur

- III-A-5. Mise en forme conditionnelle

- III-B. Uilisation d'un fichier XML embarqué

- III-B-1. Élaboration du fichier XML

- III-B-2. Paramétrage du formulaire

- III-B-3. Récupération du nom d'utilisateur.

- III-B-4. Récupération du rôle d'utilisateur

- III-B-5. Mise en forme conditionnelle

- IV. Conclusion

- V. Remerciements

I - Introduction

Parmi les fonctionnalités offertes par les formulaires InfoPath, la gestion des rôles utilisateurs est l'une de mes préférées. Elle nous permet d'implémenter un système de contrôle d'accès sans avoir recours au code, ce qui peut se traduire par exemple par le fait de basculer de vue ou de masquer des champs particuliers selon le grade de l'utilisateur connecté.

Malheureusement, cette fonctionnalité n'est pas supportée par InfoPath Form Services. Ce qui aurait pu être un très gros avantage pour SharePoint, néanmoins il existe des combines pour émuler une gestion des rôles utilisateur, nous allons exposer dans ce tutoriel deux méthodes différentes.

II - Prérequis

Pour comprendre au mieux ce qui va suivre vous devrez avoir des connaissances de base sur SharePoint et InfoPath Form Services, sinon il serait nécessaire de commencer par ces tutoriels :

Installation et création de votre première application web de Benjamin Roux
MOSS 2007, Présentation de Forms Services de Stephane Eyskens

Vous devrez disposer de Microsoft Office SharePoint Server 2007 (MOSS 2007) avec Form Services et d'Infopath 2007 pour la conception de votre formulaire.

III - Mise en œuvre

Au préalable, créez un formulaire InfoPath simple compatible Form Services. Nous avons pris pour ce tutoriel l'exemple, une demande de congés avec une section visible uniquement pour l'administrateur.

Pour la mise en œuvre, nous avons besoin d'un stock pour la définition des rôles utilisateur. Pour ce fait nous avons deux options, l'utilisation d'une liste SharePoint ou d'un fichier XML embarqué comme fichier ressource.

Dans ce tutoriel, nous allons étaler les deux méthodes dont le principe de fonctionnement est quasi identique.

III-A - Utilisation d'une liste SharePoint

III-A-1 - Création de la liste SharePoint

Dans votre solution SharePoint, créez une nouvelle liste personnalisée que nous allons nommer Rôles utilisateurs.

Dans notre liste, nous aurons besoin que de deux colonnes, une pour les rôles et l'autre pour les noms d'utilisateurs. Renommez la colonne Titre créé par défaut en Roles et ajouter une nouvelle de type texte nommée utilisateurs.

III-A-2 - Paramétrage du formulaire

Dans notre formulaire nous aurons besoin d'ajouter deux champs cachés et nommés NomUtilisateur et RoleUtilisateur qui vont contenir les informations d'identification (le rôle est le nom d'utilisateur). Pour plus de clarté, nous allons mettre ces deux champs dans un groupe nommé Auth.

Dans le menu Outils | Connexions de données, ajoutez une nouvelle connexion de type réception des données liée à notre liste et nommée recRoles. Sélectionnez les deux colonnes Roles et utilisateur.

III-A-3 - Récupération du nom d'utilisateur

Il nous faudra maintenant initialiser le champ NomUtilisateur avec le nom de l'utilisateur courant et récupérer son rôle depuis notre liste SharePoint Roles Utilisateurs. Pour procéder, nous allons définir quelques règles à l'ouverture du formulaire.

Dans InfoPath allez dans le menu Outils | Options de formulaire, dans la catégorie Ouvrir et enregistrer cliqué sur le bouton règles puis sur Ajouter.

Nous allons créer nouvelle règle nommée Rec nom d'utilisateur avec une seule action, qui va initialiser la valeur de notre champ NomUtilisateur. Pour ce faire, nous allons utiliser la fonction nomUtilisateur() qui va récupérer le nom de l'utilisateur qui est connecté.

Pour la sélection du champ et de la fonction nomUtilisateur() vous devez impérativement utiliser les fenêtres de sélections prévues à cet effet, car, avec une saisie manuelle, la fonction sera considérée en tant que texte.

Votre règle devrait ressembler à ceci.

III-A-4 - Récupération du rôle d'utilisateur

Nous allons créer une deuxième règle nommée Init role utilisateur qui va initialiser la valeur de notre champ RoleUtilsateur à rien (à vide), procédez de la même manière comme nous l'avons fait avec la première règle. Nous avons ajouté cette règle par précaution, cars si l'un des utilisateurs ne fait plus partie de votre liste, celui-ci pourra toujours accéder à votre formulaire avec son ancien rôle.

Votre deuxième règle devrait ressembler à ceci.

Nous allons créer à présent notre troisième règle nommée Rec rôle utilisateur, avec une seule action qui définir la valeur du champ roleUtilisateur avec le rôle correspondant à l'utilisateur en cours.

Après avoir sélectionné la connexion recRoles et le champ Roles, définissez un filtre sur le champ utilisateur quand il est égal au champ roleUtilisateur de notre formulaire.

L'action devra ressembler à ceci.

III-A-5 - Mise en forme conditionnelle

À présent, tout ce dont nous avons besoin est notre disposition pour définir la mise en forme conditionnelle de la section réservée à l'administrateur.

Pour y parvenir, sélectionnez la section contenant les boutons Accepter et Rejeter, affichez le menu contextuel y afférent et cliquez sur le menu Mise en forme conditionnelle.

Dans la fenêtre Mise en forme conditionnelle cliquez sur ajoutez et définissez la condition Masquer ce contrôle lorsque le champ roleUtilisateur est différent "Administrateur".

Fermez toutes les fenêtres, publiez et testez votre formulaire.

III-B - Uilisation d'un fichier XML embarqué

Dans cette partie du tutoriel, nous allons passer en revue uniquement les particularités de cette seconde méthode.

III-B-1 - Élaboration du fichier XML

Comme nous l'avons dit plus haut dans cette méthode nous allons utiliser un fichier XML pour stocker la définition des rôles. Pour notre besoin la structure du fichier XML devrait ressembler à ceci.

<?xml version="1.0" encoding="utf-8"?>
<roles>
<role>
<nom>Administrateur</nom>
<utilisateurs>
<username>aityahiaidir</username>
</utilisateurs>
</role>
<role>
<nom>Utilisateur</nom>
<utilisateurs>
<username>vous</username>
<username>sandrine</username>
</utilisateurs>
</role>
</roles>

Enregistrez votre fichier XML sous le nom de Roles.xml et ajoutez-le comme fichier ressource à votre formulaire. Vous pouvez accéder à fenêtre d'ajout de ressources à l'aide du menu Outils | Fichiers de ressources.

III-B-2 - Paramétrage du formulaire

Définissez les champs NomUtilisateur et RoleUtilisateur comme nous l'avons fait pour la première méthode.

Ajoutez une nouvelle connexion de type réception de données, mais cette fois-ci sélectionnez document XML comme source.

Sélectionnez le fichier ressource Role.xls, nommez votre connexion recRoles comme pour la précédente méthode et laissez tous les autres paramètres de l'assistant tels que définis par défaut.

III-B-3 - Récupération du nom d'utilisateur.

Procédez de la même manière telle que nous l'avons fait dans la première méthode.

III-B-4 - Récupération du rôle d'utilisateur

Créez la seconde règle Init role utilisateur exactement comme dans la première méthode.

Nous allons créer la troisième règle nommée Rec rôle utilisateur comme pour la première méthode à quelques différences près au niveau du choix des champs.

Définissez un filtre sur le champ username quand il est égal au champ roleUtilisateur de notre formulaire.

III-B-5 - Mise en forme conditionnelle

Procédez de la même manière telle que nous l'avons fait dans la première méthode.

IV - Conclusion

Voilà, c'est fini pour ce tutoriel, nous avons exposé un simple exemple, mais il vous est possible de faire beaucoup de choses quand vous avez le rôle de l'utilisateur qui s'est connecté comme lui interdire l'édition sur certains champs ou complètement basculer de vue, etc.

Ça sera à vous de choisir la méthode que vous voulez adopter, personnellement je vous recommande la première méthode (utilisation d'une liste SharePoint) car il vous sera aisé d'administrer les rôles de vos utilisateurs via votre liste.

L'inconvénient majeur de cette méthode est qu'elle ne peut pas corréler avec les groupes et utilisateurs de l'annuaire d'Active Directory, comme c'est le cas avec InfoPath, il est donc préférable de restreindre son utilisation aux petits groupes avec peu de mouvements.

V - Remerciements

je tiens à remercier dourouc05 pour sa minussieuse relecture.