Groupware utilisateur

Le groupware utilisateur standard offre des fonctions de sécurité pour chaque projet. Celui livré dans ce framework a été migré en POO et peut s’exécuter indépendamment d’un logiciel. Il est à ainsi possible, à un « responsable » n’ayant pas installé un logiciel, d’activer/désactiver des utilisateurs pour chaque projet. Pour cela, un compte super-utilisateur y a été créé (différent du superviseur standard).

Le groupware utilisateur (GPU) gère, nativement dans les produits PCSOFT, les droits d’accès des utilisateurs aux fenêtres et aux champs d’une application. Cette gestion native évite au programmeur beaucoup de lignes de code. C’est pourquoi le framework Betula propose de l’utiliser mais dans une version améliorée.

Le groupware utilisateur de Betula :

  • est basé sur la nouvelle version (18 et supérieur)
  • a une fenêtre administrateur complètement refaite en POO (20 classes et une collection de procédures) et simplifiée
  • a une fenêtre login simplifiée
  • est personnalisé avec des informations supplémentaires
  • est prévu pour une utilisation en entreprise

Utilisation en entreprise

Le GPU de PCSOFT est nativement prévu pour gérer plusieurs projets (et composants). C’est l’utilité de la table Cible qui s’alimente grâce aux projets de l’entreprise qui accèdent à la même base de données (pas obligatoirement HyperFileSQL client/serveur, voir la fonction gpwOuvreConnexion).

De même, dans une entreprise qui possède un réseau informatique, il y a un Active Directory qui gère les accès des utilisateurs aux ordinateurs (nom d’utilisateur et mot de passe). Cette fonctionnalité sera utilisée dans le GPU Betula (voir « Mise en route »).

Enfin, il n’est pas inhabituel que certaines personnes de l’entreprise utilisent un logiciel mais que leur responsable ne l’utilise pas. Par contre, ce dernier doit pouvoir gérer les droits de ses subordonnés.  L’administration du GPU Bétula peut donc s’exécuter de manière autonome.

Dans l’assistant de configuration du GPU (onglet Projet), il n’est pas possible de mettre une autre base de données que HyperfileSQL, il n’y a pas de nom d’utilisateur et de mot de passe pour une connexion LDAP, les login et création de nouvel utilisateur par OAuth2 (onglet Inscription disponible depuis la 24) sont inutiles en entreprise. Le login se fera donc par programmation (voir « Mise en route »).

Personnalisation

Puisque le GPU peut être installé sur d’autres bases de données que HFSQL, PCSOFT utilise des requêtes pour gérer les droits sur les fenêtres et les champs. Il n’y a donc pas de danger pour personnaliser le GPU en ajoutant des rubriques dans les tables existantes, voire des nouvelles tables. Elles ne seront pas vues par le GPU au moment de l’exécution mais seront utiles dans les fenêtres d’administration.

Le GPU de Betula ajoute donc ces éléments :

  • La table Cible contient une colonne « mémo texte » dans lequel se trouve un JSON pour décrire la cible (voir ci-dessous)
  • La table Utilisateur a une colonne en plus : « langue par défaut »
  • La table Elément contient toutes les informations disponibles dans gpwEnumèreChamp ainsi que l’image de la fenêtre (voir « Synchronisation des champs et des fenêtres » ci-dessous)

Du fait du contexte entreprise et de l’utilisation de la synchro des utilisateur (voir paragraphe ci-dessous), la fenêtre d’administration FEN_GPU_Principal a été grandement simplifiée : un utilisateur ne peut plus être créé par le GPU puisque venant de l’Active Directory et les 5 plans servant à la récupération d’autres versions du GPU n’ont pas été gardé pour cette version.

La collection de procédures COL_GPU

Cette collection est spécifique au GroupWare Utilisateur.

Synchronisation des utilisateurs

La fonction COL_GPU.MajDepuisLDAP synchronise le LDAP et l’ensemble des utilisateurs présents dans la table Utilisateur du GPU.  Cette fonction peut, par exemple, être utilisé dans un service Windows qui fait la mise à jour chaque nuit.

Elle est volontairement faite par programmation (sans utilisation de gpwImportUtilisateursLDAP) de sorte à savoir ce qui est synchronisé et comment.

Synchronisation des champs et des fenêtres

Du fait que l’administration du GPU est fait pour s’exécuter en-dehors de tout projet, il n’est plus possible d’utiliser dans cette fenêtre l’instruction gpwEnumèreChamp comme dans le groupware natif. De ce fait, cette instruction doit être exécutée soit lors de l’exécution du projet, soit depuis le poste du développeur. C’est cette dernière méthode qui a été choisie dans le framework (voir « Mise en route ») en utilisant COL_GPU.MajElements.

Cette méthode récupère également l’image des fenêtres et les stockent dans la rubrique GPU_Element.ImgFenetre.  Cette image peut ainsi apparaître dans un GPU installé chez un responsable sans que l’application ne soit installée.

Mise en route

L’utilisation du GPU doit être paramétré dans l’assistant de PCSOFT dans l’onglet projet avec les options suivantes : Intégration/Groupware utilisateur automatique et Exécution/Manuel.

Dans l’initialisation du projet, mettre :

SI EnModeTest() ALORS
	COL_GPU.MajElements()                   //Pour mettre à jour les fenêtres et les champs du projet
SINON
	SI PAS Login() ALORS FinProgramme()     //Pour faire le login utilisateur
FIN

Faire ensuite une procédure globale au projet dans laquelle la fenêtre de login est personnalisée avec un logo, un message personnalisé (entre le logo et le login) et une procédure qui sera compilée dynamiquement qui, ici, ouvre un nouveau courriel au support de la compagnie pour demander le reset du mot de passe.

PROCÉDURE Login()
SI PAS gpclApp.m_pclUtilisateur.Lit() _OU_ PAS gpclApp.m_pclUtilisateur.p_bEstActif _OU_ gpclApp.m_pclUtilisateur.p_bEstCompteGénérique _OU_ EnModeTest() ALORS
	sProcédure est une chaîne = [
		LanceAppliAssociée("mailto:"+"support@"+NomDeDomaine())	//attention, le mot de passe de l'utilisateur étant dans l'Active Directory gpwMotPasseOublié ne peut pas être utilisé. Prévoir ici votre processus interne à l'entreprise.
	]
	sID,sPass sont des chaînes
	BOUCLE
		(sID,sPass)=Ouvre(FEN_GPU_Login,"logo.png","Ceci est un message",sProcédure)
		SI sID>"" ALORS
			SI Position(sID,"@")<1 ALORS sID+="@"+NomDeDomaine()
			SI gpclApp.m_pclDBConnexion.AjouteLDAP("TestUser",*,sID,sPass) ALORS
				SI LoginGPU() ALORS RENVOYER Vrai 
			FIN
			SI PAS OuiNon("Nom d'utilisateur ou mot de passe incorrect","Voulez-vous réessayer ?") ALORS SORTIR
		SINON 
			SORTIR
		FIN
	FIN
SINON
	RENVOYER LoginGPU()
FIN
RENVOYER Faux

Et une dernière procédure pour faire véritablement le login dans le GPU (cette procédure peut être mise comme « interne » à celle ci-dessus)

PROCÉDURE LoginGPU()
nConnexion est un entier = gpclApp.m_pclDBConnexion.AjouteSQLServer(cBaseDeDonnées.ODBC,"MonNomDeServeur","UtilisateurAdmin","MotDePasseAdmin","BaseDeDonnéesDuGPU")
SI nConnexion>0 ALORS
	SI gpclApp.m_pclUtilisateur.LoginGPW(nConnexion) ALORS RENVOYER Vrai SINON Erreur(gpclApp.m_pclUtilisateur.p_sErreur)
SINON
	Erreur(gpclApp.m_pclDBConnexion.p_sErreur)
FIN
RENVOYER Faux

Particularités du GPU

  1. Les mots de passe des utilisateurs étant gérés dans l’Active Directory, ceux dans le GPU sont obsolètes.  Pour les utilisateurs actifs dans l’AD, ils auront tous le même mot de passe dans le GPU (voir COL_GPU.MajDepuisLDAP). Les utilisateurs inactifs dans l’AD auront un mot de passe sera vide dans le GPU. La rubrique « GPU_Utilisateur.MotPasse » peut alors être vu comme un indicateur « actif/inactif » de l’utilisateur (notion qui manque dans le GPU de PCSOFT)
  2. Un compte « Superviseur » peut exister dans l’Active Directory et donc entrer en conflit avec le compte par défaut de PCSOFT.  Astuce : comme aucun compte Active Directory ne peut commencer par un point, un compte « .SUPERVISEUR » est créé par le framework dans le GPU. En plus, ceci le place naturellement en haut de la liste des utilisateurs triée sur la colonne  Login.