Contributeurs en base de données personnalisée

Dans le processus d'intégration du CMS Ametys, il est nécessaire de définir de quelle manière seront gérés les contributeurs.

Le CMS Ametys propose un certains de gestionnaires d'utilisateurs prédéfinis. Il est cependant possible de définir son propre gestionnaire pour utiliser une base utilisateurs déjà existante dans votre système d'information, ou de personnaliser les champs d'un utilisateur.

Les gestionnaires pouvant être utilisés dans ce cas sont tous les gestionnaires relatifs à une base de données:

  • org.ametys.runtime.plugins.core.user.jdbc.JdbcUsersManager (base d'utilisateurs non modifiablesans stockage des identifiants de connexion)
  • org.ametys.runtime.plugins.core.user.jdbc.ModifiableJdbcUsersManager (base d'utilisateurs modifiable sans stockage des identifiants de connexion)
  • org.ametys.runtime.plugins.core.user.jdbc.CredentialsAwareJdbcUsersManager (base d'utilisateurs non modifiable avec stockage des identifiants de connexion)
  • org.ametys.runtime.plugins.core.user.jdbc.ModifiableCredentialsAwareJdbcUsersManager (base d'utilisateurs modifiable avec stockage des identifiants de connexion)

Connexion à la base de données

Si la base de données n'est pas la base de données par défaut du CMS, il faut tout d'abord définir un nouveau pool de connexion à cette base de données ou "data source".

Rendez-vous sur la page Création d'une source de données SQL (data source) et suivez la procédure pour créer un nouveau pool de connexion.

Déclaration d'une nouvelle base d'utilisateurs

Le nouveau gestionnaire d'utilisateurs est déclaré dans le fichier plugin.xml d'un plugin.

Vous aurez peut-être besoin de créer un nouveau plugin; pour cela suivez  les instructions de la page Architecture d'un plugin Ametys

Exemple de déclaration d'une base utilisateurs

<extension point="org.ametys.runtime.user.UsersManager" 
           id="org.ametys.custom.CustomJdbcUsersManager"
           class="org.ametys.runtime.plugins.core.user.jdbc.JdbcUsersManager"
           logger="org.ametys.runtime.plugins.core.users.jdbc.simple">
    <pool>runtime.datasource.jdbc.mypool</pool>
    <table>MyUsersTable</table>
    <param id="login" column="id"/>
    <param id="firstname" column="prenom"/>
    <param id="lastname" column="nom"/>
    <param id="email" column="mail"/>
</extension>


Dans cet exemple :

  • <pool> : identifiant du pool de connexion utilisé
  • <table> : le nom de la table SQL contenant les utilisateurs

Les paramètres "login", "firstname", "lastname" et "email" sont obligatoires. Si le gestionnaire utilisé doit définir et stocker le mot de passe, le paramètre "password" est également obligatoire.

L'attribut column permet de définir la colonne de la table correspondant au paramètre.

Il est possible d'ajouter autant de paramètres que souhaité, en suivant les indications données à la page Généralités sur les paramètres.

Attention, à ce jour, il existe quelques limitations :

- aucun widget n'est disponible ici
- les types "binary", "date" et "boolean" ne sont pas supportés
- les valeurs énumérées ne peuvent pas être utilisées

Voici un autre exemple de déclaration avec quelques paramètres personnalisés. Le gestionnaire utilisé permet cette fois-ci de définir un mot de passe.

<extension point="org.ametys.runtime.user.UsersManager"
           id="org.ametys.custom.CustomUsersManager"
           class="org.ametys.runtime.plugins.core.user.jdbc.ModifiableCredentialsAwareJdbcUsersManager"
           logger="org.ametys.custom.users">
                <pool>runtime.datasource.core.jdbc.pool</pool>
                <table>Custom_Users</table>
                <param id="login"/>
                <param id="firstname"/>
                <param id="lastname"/>
                <param id="email" column="courriel"/>
                <param id="password"/>
                <param id="role" column="role" type="string">
                    <label i18n="false">Role</label>
                    <description i18n="false">Role</description>
                    <validation>
                        <mandatory/>
                    </validation>
                </param>
                <param id="age" column="age" type="long">
                    <label i18n="false">Age</label>
                    <description i18n="false">Age</description>
                </param>
</extension>

Il est de votre ressort de modifier et maintenir le script SQL correspondant à votre table d'utilisateurs.

Vous pourrez ensuite sélectionner ce nouveau point d'extension soit via l'outil "Plugins et Workspaces" accessible depuis l'interface d'administration ou modifier directement le fichier WEB-INF/param/runtime.xml (voir Fichier runtime.xml) .

Extrait du fichier runtime.xml

<extensions>
    <org.ametys.runtime.user.UsersManager>org.ametys.custom.CustomUsersManager</org.ametys.runtime.user.UsersManager>
    ...
</extensions>

Attention, les mots de passe doivent être stockés en MD5 et encodés en base 64. Il est donc plus simple de les saisir via l'interface d'administrateur (pour plus d'informations veuillez consulter le Manuel d'administration, partie Gestion des utilisateurs).