Add LSaddon::impersonate

This commit is contained in:
Benjamin Renard 2023-01-09 17:55:34 +01:00
parent 1b38957235
commit 43cb6c3f93
8 changed files with 876 additions and 730 deletions

View file

@ -12,6 +12,7 @@
&conf-LSaddon_accesslog;
&conf-LSaddon_asterisk;
&conf-LSaddon_exportSearchResultAsCSV;
&conf-LSaddon_impersonate;
&conf-LSaddon_LSaccessRightsMatrixView;
&conf-LSaddon_mail;
&conf-LSaddon_maildir;

View file

@ -2,6 +2,7 @@
<!ENTITY conf-LSaddon_accesslog SYSTEM "LSaddon_accesslog.docbook">
<!ENTITY conf-LSaddon_asterisk SYSTEM "LSaddon_asterisk.docbook">
<!ENTITY conf-LSaddon_exportSearchResultAsCSV SYSTEM "LSaddon_exportSearchResultAsCSV.docbook">
<!ENTITY conf-LSaddon_impersonate SYSTEM "LSaddon_impersonate.docbook">
<!ENTITY conf-LSaddon_LSaccessRightsMatrixView SYSTEM "LSaddon_LSaccessRightsMatrixView.docbook">
<!ENTITY conf-LSaddon_mail SYSTEM "LSaddon_mail.docbook">
<!ENTITY conf-LSaddon_maildir SYSTEM "LSaddon_maildir.docbook">

View file

@ -0,0 +1,30 @@
<sect2 id="config-LSaddon_impersonate">
<title>LSaddon_impersonate</title>
<para>Cet &LSaddon; fournie une fonction du même nom pouvant être utilisée
comme &customActions; et permettant de se reconnecter en tant qu'un autre
utilisateur de l'annuaire.</para>
<para>Ci-dessous, vous trouverez un exemple de configuration de la fonction
<literal>impersonate()</literal> comme &customActions; :</para>
<programlisting linenumbering="unnumbered">
<citetitle>Exemple d'utilisation</citetitle><![CDATA[$GLOBALS['LSobjects']['LSpeople'] = array (
[...]
'customActions' => array (
'impersonate' => array (
'function' => 'impersonate',
'label' => 'Reconnect as this user',
'hideLabel' => True,
'noConfirmation' => true,
'disableOnSuccessMsg' => true,
'icon' => 'tech_info',
'rights' => array (
'admin'
),
),
),
[...]
);]]>
</programlisting>
</sect2>

Binary file not shown.

After

Width:  |  Height:  |  Size: 793 B

View file

@ -0,0 +1,50 @@
<?php
/*******************************************************************************
* Copyright (C) 2007 Easter-eggs
* https://ldapsaisie.org
*
* Author: See AUTHORS file in top-level directory.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
******************************************************************************/
// Error messages
LSerror :: defineError('IMPERSONATE_01',
___("Impersonate: Fail to reconnect as %{name}.")
);
/**
* Check support of impersonate addon by LdapSaisie
*
* @author Benjamin Renard <brenard@easter-eggs.com>
*
* @return boolean true if impersonate addon is totally supported, false in other case
*/
function LSaddon_impersonate_support() {
return True;
}
function impersonate($object) {
if (LSsession::changeAuthUser($object)) {
LSsession::addInfo(getFData(
_('Successfully reconnected as %{name}.'),
$object->getDisplayName()
));
LSurl::redirect('?LSsession_refresh');
return True;
}
LSerror :: addErrorCode('IMPERSONATE_01', $object->getDisplayName());
return False;
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff