Création d'un formulaire de connexion

Une des premières étapes de l'intégration du CMS Ametys consiste à déterminer comment se connectent les contributeurs (le processus d'authentification est détaillé dans la page Authentification du CMS).
Une des possibilités est de permettre aux contributeurs de saisir leur login et leur mot de passe dans un formulaire HTML.

Un formulaire par défaut est fournit dans Ametys, sous l'extension org.ametys.runtime.plugins.core.authentication.FormBased. Il est cependant possible de définir son propre formulaire de connexion.

Pour définir un nouveau formulaire de connexion, il faut créer un nouveau point d'extension de type org.ametys.runtime.authentication.CredentialsProvider. La déclaration de ce nouveau point d'extension doit être effectué dans le fichier plugin.xml d'un plugin Ametys. Au besoin, vous serez amené à créer un nouveau plugin, suivez alors les instructions de la page Architecture d'un plugin Ametys.

Voici-ci après un exemple définit dans un plugin "myplugin".

Exemple de déclaration (fichier plugin.xml)

<extensions>
 	<extension point="org.ametys.runtime.authentication.CredentialsProvider"
    		   id="org.ametys.plugins.myplugin.authentication.MyFormBased"
               class="org.ametys.runtime.plugins.core.authentication.FormBasedCredentialsProvider"
               logger="org.ametys.runtime.authentication.formbased">
    	<username-field>Username</username-field>
        <password-field>Password</password-field>
        <rememberMe-field>rememberMe</rememberMe-field>
        <cookie>
        	<cookieEnabled>true</cookieEnabled>
            <cookieLifeTime>604800</cookieLifeTime>
            <cookieName>AmetysAuthentication</cookieName>
        </cookie>
        <loginUrl internal="true">plugins/myplugin/login.html</loginUrl>
        <loginFailedUrl provideLoginParameter="true" internal="true">plugins/myplugin/login.html</loginFailedUrl>	
	</extension>
</extensions>

L'url du formulaire de connexion est ici : http://[server_url]/plugins/myplugin/login.html

Le fichier sitemap.xml du plugin doit donc contenir les pipelines suivants :

<map:match pattern="login.html">
	<map:generate type="action-result" label="content"/>
    <map:transform type="xslt" src="pages/login.xsl">
    	<map:parameter name="contextPath" value="{request:contextPath}"/>
        <map:parameter name="workspaceURI" value="{request-attr:workspaceURI}"/>
        <map:parameter name="workspaceName" value="{request-attr:workspaceName}"/>
    </map:transform>
    <map:transform type="i18n" label="xml">
    	<map:parameter name="locale" value="{locale:locale}"/>
        <map:parameter name="default-catalogue-id" value="{request-attr:pluginName}"/>
    </map:transform>
    <map:serialize/>
</map:match>
            
<map:match pattern="login_failed.html">
	<map:generate type="action-result" label="content"/>
    <map:transform type="xslt" src="pages/login.xsl">
    	<map:parameter name="contextPath" value="{request:contextPath}"/>
        <map:parameter name="workspaceURI" value="{request-attr:workspaceURI}"/>
        <map:parameter name="workspaceName" value="{request-attr:workspaceName}"/>
        <map:parameter name="login-failed" value="true"/>
    </map:transform>
    <map:transform type="i18n" label="xml">
    	<map:parameter name="locale" value="{locale:locale}"/>
        <map:parameter name="default-catalogue-id" value="plugin.cms"/>
    </map:transform>
    <map:serialize/>
</map:match>

La XSL "pages/login.xsl" du plugin doit afficher le formulaire de connexion et les erreurs éventuelles.

Vous pouvez télécharger ici un exemple de fichier login.xsl simplifié (sans css) pour afficher le formulaire de connexion