A partir de Ametys 4.3
A partir de Ametys 4.3, il est possible (et recommandé) de récupérer l'utilisateur connecté en javascript en utilisant la fonction JS getAmetysUser .
Ceci permet par exemple d'afficher un bouton connexion et/ou un menu utilisateur sur des pages publiques et des pages pouvant être mises en page.
La fonction getAmetysUser s'utilise avec une fonction de callback. La fonction de callback reçoit en argument :
soit null si aucun utilisateur est connecté soit un objet JSON représentant l'utilisateur connecté (avec son login, nom, prénom, mail, ...) Voici ci-dessous un exemple de code HTML/JS qui affiche un bouton "Se connecter" si aucun utilisateur est connecté, ou un menu avec le nom de l'utilisateur et un bouton de déconnexion.
Oups ! La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.<ul class="ametys-header-profile-menu">
<li id="userConnectItem" style="display: none">
<a class="ametys-header-connect-btn" href="{ametys:siteUriPrefix()}/_authenticate?requestedURL={ametys:siteUriPrefix()}/{$lang}/{$sitemap//page[@sitemap:current = 'true']/@sitemap:path}.html">Se connecter</a>
</li>
<li id="userMenuItem" style="display: none">
<a id="profileMenuInvoker" data-dropdown-target="#profileMenu">
<span class="ametys-header-profile-menu__item-text"></span>
<span class="ametys-dropdown-invoker__icon ametys-icon-angle-down"></span>
</a>
<div id="profileMenu">
<ul class="ametys-dropdown-menu">
<li class="ametys-dropdown-menu__item">
<a href="{ametys:siteUriPrefix()}/logout.html?requestedURL={ametys:siteUriPrefix()}/{$lang}/index.html">Se déconnecter</a>
</li>
</ul>
</div>
</li>
</ul>
<script type="text/javascript">
$j(document).ready(function() {
var _getAmetysUserCb = function(user)
{
if (user)
{
$j('#userMenuItem').find('.ametys-header-profile-menu__item-text').html(user.fullname);
$j('#userMenuItem').show();
$j('#userConnectItem').hide();
}
else
{
$j('#userMenuItem').hide();
$j('#userConnectItem').show();
}
}
getAmetysUser(_getAmetysUserCb);
});
</script> <ul class="ametys-header-profile-menu">
<li id="userConnectItem" style="display: none">
<a class="ametys-header-connect-btn" href="{ametys:siteUriPrefix()}/_authenticate?requestedURL={ametys:siteUriPrefix()}/{$lang}/{$sitemap//page[@sitemap:current = 'true']/@sitemap:path}.html">Se connecter</a>
</li>
<li id="userMenuItem" style="display: none">
<a id="profileMenuInvoker" data-dropdown-target="#profileMenu">
<span class="ametys-header-profile-menu__item-text"></span>
<span class="ametys-dropdown-invoker__icon ametys-icon-angle-down"></span>
</a>
<div id="profileMenu">
<ul class="ametys-dropdown-menu">
<li class="ametys-dropdown-menu__item">
<a href="{ametys:siteUriPrefix()}/logout.html?requestedURL={ametys:siteUriPrefix()}/{$lang}/index.html">Se déconnecter</a>
</li>
</ul>
</div>
</li>
</ul>
<script type="text/javascript">
$j(document).ready(function() {
var _getAmetysUserCb = function(user)
{
if (user)
{
$j('#userMenuItem').find('.ametys-header-profile-menu__item-text').html(user.fullname);
$j('#userMenuItem').show();
$j('#userConnectItem').hide();
}
else
{
$j('#userMenuItem').hide();
$j('#userConnectItem').show();
}
}
getAmetysUser(_getAmetysUserCb);
});
</script> Voir le code
<ul class="ametys-header-profile-menu">
<li id="userConnectItem" style="display: none">
<a class="ametys-header-connect-btn" href="{ametys:siteUriPrefix()}/_authenticate?requestedURL={ametys:siteUriPrefix()}/{$lang}/{$sitemap//page[@sitemap:current = 'true']/@sitemap:path}.html">Se connecter</a>
</li>
<li id="userMenuItem" style="display: none">
<a id="profileMenuInvoker" data-dropdown-target="#profileMenu">
<span class="ametys-header-profile-menu__item-text"></span>
<span class="ametys-dropdown-invoker__icon ametys-icon-angle-down"></span>
</a>
<div id="profileMenu">
<ul class="ametys-dropdown-menu">
<li class="ametys-dropdown-menu__item">
<a href="{ametys:siteUriPrefix()}/logout.html?requestedURL={ametys:siteUriPrefix()}/{$lang}/index.html">Se déconnecter</a>
</li>
</ul>
</div>
</li>
</ul>
<script type="text/javascript">
$j(document).ready(function() {
var _getAmetysUserCb = function(user)
{
if (user)
{
$j('#userMenuItem').find('.ametys-header-profile-menu__item-text').html(user.fullname);
$j('#userMenuItem').show();
$j('#userConnectItem').hide();
}
else
{
$j('#userMenuItem').hide();
$j('#userConnectItem').show();
}
}
getAmetysUser(_getAmetysUserCb);
});
</script>