LoginP4SQLite3 1.0

Catégorie / Domaine : Administration
Compatibilité SCOL Voy@ger : V 3.5 et supérieure
Mise à jour : 09/2010

Fonction

Ce module donne la possibilité de sécuriser l’accès aux pseudonymes des utilisateurs par le biais de mots de passe (avec un système de cryptage). Il utilise pour cela une base de données qui contient des informations relatives à chaque pseudonyme (login, mot de passe, adresse e-mail, etc.).
Le module gère aussi l’enregistrement des utilisateurs, la possibilité de changer de mot de passe, ou de se le faire rappeler en cas d’oubli.
Il est également possible de définir différents droits pour les utilisateurs via un item (typiquement pour l’administration du site). Une interface administrateur permet de changer ces droits dynamiquement.
Associé au module colorTerm 2.3, il devient possible de marquer le pseudonyme comme étant "[away]" (absent).

Le module LoginP4SQLite3 s'appuie sur une base de données SQLite. Il nécessite la présence de l'extension libsqlite3.dll dans le dossier scol\plugins. Si cette bibliothèque n'est pas livré avec votre version de Scol, il faudra la télécharger depuis le Scolring et l'installer manuellement avant l'utilisation du module.

Notez qu'une base SQLite3 n'est qu'un simple fichier lisible par n'importe quel outil compatible. Une base SQLite n'offre aucun moyen de protection de la base elle-même (sinon avec des extensions tierses coûteuses), ce n'est pas le but recherché. Si les données stockées sont sensibles, veuillez soit sécuriser son accès (une méthode peut être de filtrer grâce aux droits d'accès utilisateurs, si le système de fichiers le permet) soit opter pour un autre type de base tel que MySQL (ou autres) qui pourra être géré avec le module LoginP4.

Pour une utilisation avec une base de données autre que SQLite, consultez l'aide du module LoginP4. Ce dernier s'appuie sur une liaison ODBC (sous MS Windows comme sous GNU/Linux).

Préalable

- Installation de la bibliothèque libsqlite3.dll (MS Windows) / libsqlite3.so (GNU / Linux) :
Téléchargez-la si elle n'est pas incluse dans le pack Scol.
Placez-la dans le dossier scol\plugins
Editez le fichier usm.ini (ou cliquez droit sur l'icone scol dans la barre des taches, choisissez Avancé puis Mode Expert)
Ajoutez la ligne (respecter la casse du nom de la bibliothèque, le langage Scol y est sensible) :

plugin plugins/libsqlite3.dll SCOLloadSQLITE SCOLfreeSQLITE (MS Windows)

plugin plugins/libsqlite3.so SCOLloadSQLITE SCOLfreeSQLITE (GNU/Linux)

Enregistrez ces modifications et relancez Scol.

- Préparation de la base de données :
Pour mettre en œuvre le module loginP4SQLite3, vous devez utiliser et mettre en place une Base de Données, compatible SQLite3. Cette base de données contiendra toutes les informations relatives aux comptes utilisateurs gérés.
Le paramétrage et l’utilisation de ce module sont illustrés au travers d’un exemple : les pseudonymes et les mots de passe sont gérés par une table nommée login_table dans une base de données. La table login_table contient l’ensemble des informations de connexion pour chaque pseudonyme. Elle est structurée comme suit (elle diffère légèrement de celle du module LoginP4) :

Nom de la colonne

Type

Longueur

Champ vide autorise

Valeur par defaut

Doublons autorisés

login

varchar

20

Non

Non

password

varchar

17

Non

Oui

userName (optionnel)

varchar

20

Non

""

Oui

email

varchar

50

Oui

“”

Oui

passwordnumber

numeric

Non

Oui

clienttype

varchar

20

Oui

“”

Oui

nbsuccessfullconnections

numeric

Non

0

Oui

nbunsuccessfullconnections

numeric

Non

0

Oui

lastConnectionDate

varchar

25

Non

“”

Oui

accountState

numeric

Non

1

Oui

 

Configuration


Figure 1 : Interface du module LoginP4

(1) : Les informations contenues dans la zone (1) permettent de créer le lien avec la base de données qui contient les pseudonymes et mots de passe sécurisés. Elle contient 3 champs :
- le nom de la source de données,
- le bouton Connexion
- le nom de la table contenant les pseudonymes.

Nom de la source de données Champ permettant d’indiquer le chemin de la base de données utilisée avec le module. Pour cela, cliquez sur le bouton Parcourir et sélectionnez-le dans l'arborescence Scol (la base doit se trouver dans un sous répertoire accessible à Scol).

Créer une nouvelle base Ce bouton crée un nouvelle base de données avec une structure et un nommage identiques à ceux définis ci-dessus. Indiquez simplement l'emplacement du nouveau fichier (dans un sous répertoire accessible à Scol). Si vous souhaitez la personnaliser, vous devrez la créer avec un outil externe.

Connexion Lorsque le nom de la source de données est renseigné, le bouton Connexion établit la connexion entre le module loginP4SQLite3 et la base de données

Nom de la table Une liste déroulante indique les noms des tables de cette base : ce champ doit contenir le nom de la table qui contient les informations sur les pseudonymes des utilisateurs. Sélectionnez-le. Dans notre exemple, la table s’appelle login_table.
   
(2) : Les informations contenues dans la zone (2) permettent d’indiquer le nom des colonnes de la table des pseudonymes, dont le module loginP4 a besoin.
Le module loginP4SQLite3 permet la gestion de différents types d’utilisateurs. Pour cela, le module charge le contenu de la colonne ‘type d’utilisateur’ de la base de données dans un item client nommé par défaut ‘userType’. Typiquement, on utilisera ce système pour gérer l’administration du site. Afin de faciliter l’intégration, deux évènements spécifiques ont été créés : loginChgIsAdmin et loginChgIsNotAdmin.
Si, pour un utilisateur donné, la colonne ‘type d’utilisateur’ n’est pas vide, l’item client ‘userType’ est rempli et l’évènement loginChgIsAdmin est déclenché. Il est ensuite possible d’exploiter l’évènement à l’aide de conditions sur les liens sur l’item ‘userType’ afin d’activer ou non d’autres modules en fonction du niveau d’administration. Un évènement loginChgIsNotAdmin existe aussi et permet de fermer les modules d’administration quand une personne ayant une colonne ‘type d’utilisateur’ vide se connecte.
Il est aussi possible d’utiliser les conditions directement sur l’événement loginChanged, événement déclenché dès qu’un utilisateur s’enregistre, quelque soit son type.

Colonne des pseudonymes Nom de la colonne contenant les pseudonymes (logins). Dans notre exemple, cette colonne s’appelle login.

Colonne mot de passe

Nom de la colonne contenant les mots de passe (crypté) des utilisateurs. Dans notre exemple, cette colonne s’appelle password.


Colonne des emails Nom de la colonne contenant les adresses E-mail des utilisateurs. Dans notre exemple, cette colonne s’appelle email.

Colonne numéro des mots de passe Nom de la colonne dans laquelle un nombre géré automatiquement par LoginP4SQLite3 pour le cryptage des mots de passe est stocké. Dans notre exemple, cette colonne s’appelle passwordnumber.

Colonne type d'utilisateur Nom de la colonne définissant les types d’utilisateurs. Dans notre exemple, cette colonne s’appelle clienttype.

Ref de l’item ‘type d’utilisateur’ Spécifie l’item client qui définira le type d’utilisateur.

Colonne nombre de connexions réussies Nom de la colonne dans laquelle le nombre de connexions réussies depuis la première connexion est indiqué. Dans notre exemple, cette colonne s’appelle nbsuccessfullconnections.

Colonne nombre de connexions non réussies Nom de la colonne dans laquelle le nombre d’échecs de connexion depuis la dernière connexion réussie est indiqué. Dans notre exemple, cette colonne s’appelle nbunsuccessfullconnections.

Colonne date de la dernière connexion Nom de la colonne dans laquelle la date de la dernière connexion est indiquée. Dans notre exemple, cette colonne s’appelle lastConnectionDate.

Requête de validité des comptes Il est possible de valider ou invalider des comptes utilisateurs par l’intermédiaire d’une requête paramétrable. Par défaut, aucun test de validité n’est fait.
Exemple de requête de validité : « accountState=1 » (Si accountState est le nom de la colonne ainsi définie dans la base, ce qui est le casdans l'exemple).
Dans ce cas, quand un utilisateur essaie de se connecter et que la valeur de la colonne accountState est différente de 1, il se verra refuser la connexion



(3) : Les informations contenues dans la zone (3) permettent d’indiquer les seuils de tolérance de connexions sur le site, tels que le nombre de connexions autorisées pour un utilisateur, le nombre d’échecs de connections, etc… Lors de la première utilisation du module LoginP4SQLite3, il est recommandé de conserver les valeurs par défaut.

Max de connexions réussies Ce champ permet de paramétrer le nombre maximal de fois que le mot de passe pourra être validé. La valeur par défaut est 10000

Max de connexions non réussies Ce champ permet de paramétrer le nombre maximal d’échecs de connexions. Une fois ce nombre atteint, le client n’a plus qu’un seul essai possible : s’il entre un mauvais mot de passe, il est directement déconnecté du site. La valeur par défaut est 5

Accepter les pseudonymes non enregistrés Si cette option est cochée, un pseudonyme inexistant dans la base de données pourra être utilisé sans mot de passe

Activer les cookies Si cette option est activée, les pseudos et les mots de passes seront mémorisés dans un « cookie ».

Seuil d’avertissement de l’expiration du mot de passe Indique un seuil à partir duquel un message s’affiche chez l’utilisateur lors de sa connexion pour indiquer que son mot de passe va expirer.
Une valeur de 1 % pour un maximum de 10000 connexions réussies signifie que l’utilisateur sera prévenu que son mot de passe va expirer à partir de sa 9900ème connexion réussie.

Utiliser le pseudonyme de connexion pour le nom ou un nom dans une autre colonne Champ activé si l’option « accepter les pseudonymes non enregistrés » n’est pas cochée ; il vous permet de spécifier un nom d’utilisateur différent pour le pseudonyme saisi lors de la connexion dans l’interface de LoginP4SQLite3 et le pseudonyme vu par les autres utilisateurs du site



(4) : Les informations contenues dans la zone (4) permettent de définir les options de l’interface cliente. La confirmation de création de compte ou la récupération de mots de passe oubliés utilisent des mails. Pour cela, le module LoginP4SQLite3 doit être relie au module MAIL via l’évènement sendPwdEmail.

Bouton "mot de passe oublié" Si cette option est cochée, un bouton ‘Mot de passe oublié’ est ajouté dans l’interface cliente de saisie du pseudonyme. Ce bouton permet à l’utilisateur de demander à recevoir un nouveau mot de passe par e-mail.

Bouton "modifier le mot de passe" Si cette option est cochée, un bouton ‘modifier le mot de passe’ est ajouté dans l’interface cliente de saisie du pseudonyme. Ce bouton permet à l’utilisateur de changer son mot de passe.

Bouton "devenir membre" Si cette option est cochée, un bouton ‘Devenir membre’ est ajouté dans l’interface cliente de saisie du pseudonyme. Ce bouton permet à l’utilisateur de s’enregistrer dans la base de données (il recevra un mot de passe par e-mail).

E-mail de l'expéditeur Adresse électronique de l’émetteur pour l’envoi des e-mails.

Max de pseudonymes par e-mail Utilisé pour définir le nombre maximal de pseudonymes possibles pour une adresse e-mail donnée ; une fois cette limite atteinte, il ne sera plus possible de créer de comptes avec cette même adresse email.



(5) : Les informations contenues dans la zone (5) permettent de gérer une « liste noire » de pseudonymes

Fichier des pseudonymes interdits Dans ce champ, le chemin d’accès au fichier contenant la liste de logins interdits est indiqué. (voir plus bas).



(6) : Les informations contenues dans la zone (6) permettent d’initialiser certains champs de la base lors de la création d’un compte utilisateur via l’interface cliente.

Requête d’initialisation des champs La requête indiquée dans ce champ sera exécutée à chaque création de compte via l’interface cliente.
Exemple : « SET accountState = 1 »
Dans ce cas, le champ accountState prendra la valeur de 1 lors de la création d’un compte.
(voir aussi l’explication précédente sur la ‘requête de validité des comptes’)



(7) : Enfin, la zone (7) permet d’indiquer la bitmap de fond qui sera utilisée pour l’interface cliente du module LoginP4SQLite3.

Bitmap de fond Cette zone permet de choisir une image bitmap de fond pour l’interface cliente du module au format JPG. En cliquant sur la zone, la bitmap par défaut peut être remplacée par une bitmap de votre choix. Cette image doit avoir une taille de :
380 x 220 si toutes les options sont cochées
260 x 190 si aucune option n’est cochée
260 x 220 si l’option « accepter les pseudonymes non enregistrés» n’est pas cochée mais qu’une ou plus des autres options est cochée.

# Pour créer des comptes, deux solutions sont possibles :
- La création des comptes est automatique : dans l’interface cliente, l’utilisateur clique sur le bouton ‘devenir membre’. Un e-mail contenant un mot de passe lui est alors envoyé.
- Un nouveau compte est créé directement dans la base de données. Le mot de passe étant crypté, il est nécessaire de le rentrer via l’interface d’administration du module (action editAdmin).

# Fichier des pseudonymes interdits :
C'est un simple fichier texte que vous placez dans un sous-dossier de scol\partition.
Ouvrez ce fichier avec votre éditeur favori et respectez la syntaxe suivante :
- A chaque ligne correspond un mot
- pour une chaine (le pseudo) : STRING le_pseudo
- pour une sous-chaine (une partie d'un pseudo) : SUBSTRING la_partie_du_pseudo

Exemple :
STRING DUPONT
STRING MYSITE
SUBSTRING ADMIN

Les pseudonymes "dupont" et "mysite" seront interdits, mais pas "dupond" ou "monsite".
De même, les pseudonymes contenant "admin" seront rejetés : "administrateur", "siteadmin", ...

# En ligne, il est possible d'avoir une console d'administration :

- Nb d'enregistrements : nombre de pseudonymes dans la table.
- Pseudonyme : saisissez ici le pseudo recherché puis appuyez sur le bouton Chercher. Les autres champs seront alors automatiquement renseignés suivant les données de la table.
- Mot de passe : mot de passe actuel (crypté). Il est possible d'en entrer un nouveau puis de valider avec le bouton Changer.
- Email : Email correspondant au pseudonyme. Il est possible d'en entrer un nouveau puis de valider avec le bouton Changer.
- Niveau d'ADM : Possible administration level for the nickname. It is possible to edit a new one and validate it with the button Change.

Note : les mots étant cryptés, il est inutile de changer les mots de passe en éditant la table des pseudonymes.

Mise en oeuvre

Action Fonction
module.événement à LoginP4SQLite3.start Démarre le module LoginP4SQLite3 chez le client et affiche le nom du pseudonyme courant dans la zone LoginP4.text (mais pas l'interface de changement de pseudo)
module.événement à LoginP4SQLite3.show Affiche l’interface de saisie des pseudonymes sur l’interface cliente (zone LoginP4SQLite3.login)
module.événement à LoginP4SQLite3.hide Cache l’interface de saisie des pseudonymes
module.événement à LoginP4SQLite3.destroy Arrête le module LoginP4SQLite3 sur le client.
module.événement à LoginP4SQLite3.check Permet de vérifier si le couple pseudonyme/mot de passe est correct
module.événement à LoginP4SQLite3.editAdmin Affiche une interface d’administration permettant de changer les mots de passe et e-mail de tous les utilisateurs
module.événement à LoginP4SQLite3.Away
A relier à l'événement du même nom du colorTerm
module.événement à LoginP4SQLite3.Back A relier à l'événement du même nom du colorTerm

Evénement Fonction
LoginP4SQLite3.in à module Action Le démarrage du module sur le client engendre une action
LoginP4SQLite3.destroyed à module Action L’arrêt du module sur le client engendre une action
LoginP4SQLite3.hidden à module Action La disparition de l’interface du module LoginP4SQLite3 sur le client engendre une action
LoginP4SQLite3.shown à module Action L’affichage de l’interface du module LoginP4SQLite3 engendre une action
LoginP4SQLite3.loginRefused à module Action Le refus du pseudonyme (mot de passe incorrect, pseudonyme expiré ou déjà utilisé…) engendre une action
LoginP4SQLite3.loginChanged à module Action Tout changement de pseudonyme d’un utilisateur engendre une action
LoginP4SQLite3.loginChgIsAdmin à module Action Si le champ « type d’utilisateur » n’est pas vide, une action est engendrée (événement pour l’administration)
LoginP4SQLite3.loginChgIsNotAdmin à module Action Si le champ « type d’utilisateur » n’est pas vide, une action est engendrée (événement pour l’administration)

Zone Fonction Interface Affectation
LoginP4SQLite3.login Interface du module LoginP4SQLite3 permettant à l’utilisateur de changer de pseudonyme Client Non
LoginP4SQLite3.text Champ d'affichage du pseudonyme Client Non