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

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.
1 commentaire Donner une note à l'article (5)

Article lu   fois.

L'auteur

Site personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

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.

Formulaire

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.

Liste des roles 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.

Champs

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.

Connexion au données

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.

Ajout Règles

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é.

Definir le nom d'utilisateur

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.

Fenêtres de selections

Votre règle devrait ressembler à ceci.

1er Regle

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.

Initialisaton du rôle

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.

Selection de la connexion

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.

Filtres

L'action devra ressembler à ceci.

Action definir role

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".

Mise en forme conditionelle

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.

 
Sélectionnez

<?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.

Fichier 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.

Connexion vers  un fichier XML

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.

Selection du fichier XML

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.

Selection du role dans le fichier XML

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

Condition pour le fichier XML

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.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

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. Droits de diffusion permanents accordés à Developpez LLC.