mirror of
https://gitlab.easter-eggs.com/ee/ldapsaisie.git
synced 2024-11-18 00:09:06 +01:00
Add default LSprofiles with the name of authenticable object types
Consquently adjust LSaccessRigthsMatrixView addon and make some representative change in LSexample for demo
This commit is contained in:
parent
cf1a98e4b3
commit
d68b15bac3
5 changed files with 102 additions and 44 deletions
|
@ -4,13 +4,53 @@
|
|||
<title>Profils d'utilisateurs</title>
|
||||
|
||||
<para>Cette section décrit la manière dont sont définis les profils d'utilisateurs
|
||||
se connectant à l'interface appelés <emphasis>LSprofile</emphasis>. Il est
|
||||
possible de définir autant de profils d'utilisateurs que l'on souhaite. Pour
|
||||
chaque profil d'utilisateur, il faudra définir dans quelles parties de
|
||||
l'annuaire ce profil existe (Exemple : les admistrateurs de groupes existent
|
||||
uniquement dans la branche de l'annuaire stockant les groupes). Enfin pour
|
||||
chaque partie de l'annuaire, il faudra définir la manière d'identifier si
|
||||
l'utilisateur qui se connecte appartient à ce profil.</para>
|
||||
se connectant à l'interface appelés <emphasis>LSprofile</emphasis>. Il est possible
|
||||
d'attribuer un profil à l'utilisateur connecté sur tout ou partie de l'annuaire LDAP.
|
||||
</para>
|
||||
|
||||
<sect5 id='config-LSprofile-default'>
|
||||
<title>Profils d'utilisateurs par défaut</title>
|
||||
<para>Il existe des profils d'utilisateurs par défaut, non liée à la configuration de
|
||||
l'application:
|
||||
<variablelist>
|
||||
|
||||
<varlistentry>
|
||||
<term>user</term>
|
||||
<listitem>
|
||||
<simpara>Tous les utilisateurs connectés à l'utilisateur. Ce &LSprofile; est valide sur l'ensemble de l'annuaire.</simpara>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>self</term>
|
||||
<listitem>
|
||||
<simpara>L'utilisateur connecté sur son objet correspondant dans l'annuaire. Ce &LSprofile; est utile pour donner des
|
||||
droits à l'utilisateur sur lui-même.</simpara>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>nom du type de l'objet connecté</term>
|
||||
<listitem>
|
||||
<simpara>Un &LSprofile; du nom du type d'objet utilisateur connecté est automatiquement ajouté à l'utilisateur.
|
||||
Ainsi, si l'utilisateur connecté est un &LSobject; <literal>LSpeople</literal> par exemple, il aura le &LSprofile;
|
||||
<literal>LSpeople</literal> sur tous l'annuaire. Ce &LSprofile; est utile pour donner des droits à tous un type
|
||||
d'objets pouvant se connecter à l'application (par exemple, tous les utilisateurs applicatifs).</simpara>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</para>
|
||||
|
||||
</sect5>
|
||||
|
||||
<sect5 id='config-LSprofile-custom'>
|
||||
<title>Profils d'utilisateurs personalisés</title>
|
||||
<para>Il est possible de définir autant de profils d'utilisateurs que l'on souhaite. Pour chaque profil
|
||||
d'utilisateur personnalisé, il faudra définir dans quelles parties de l'annuaire ce profil existe (Exemple :
|
||||
les admistrateurs de groupes existent uniquement dans la branche de l'annuaire stockant les groupes). Enfin
|
||||
pour chaque partie de l'annuaire, il faudra définir la manière d'identifier si l'utilisateur qui se connecte
|
||||
appartient à ce profil.</para>
|
||||
|
||||
<programlisting linenumbering="unnumbered">
|
||||
<citetitle>Structure</citetitle>...
|
||||
|
@ -288,5 +328,7 @@ objets retournés. Les paramètres de la recherche sont :
|
|||
label sera utilisé pour faire référence au <emphasis>LSprofile</emphasis> lorsque
|
||||
nécéssaire. <emphasis>(Paramètre facultatif)</emphasis></para>
|
||||
|
||||
</sect5>
|
||||
|
||||
</sect4>
|
||||
<!-- Fin LSprofiles -->
|
||||
|
|
|
@ -48,7 +48,8 @@ $GLOBALS['LSobjects']['LSsysaccount'] = array (
|
|||
'linkAttributeValue' => "dn",
|
||||
'rights' => array(
|
||||
'admin' => 'w',
|
||||
'admingroup' => 'w'
|
||||
'admingroup' => 'w',
|
||||
'LSsysaccount' => 'r',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
@ -78,6 +79,7 @@ $GLOBALS['LSobjects']['LSsysaccount'] = array (
|
|||
),
|
||||
'rights' => array(
|
||||
'self' => 'r',
|
||||
'LSsysaccount' => 'r',
|
||||
'admin' => 'w',
|
||||
),
|
||||
'view' => 1,
|
||||
|
@ -139,6 +141,7 @@ $GLOBALS['LSobjects']['LSsysaccount'] = array (
|
|||
'multiple' => 1,
|
||||
'rights' => array(
|
||||
'self' => 'r',
|
||||
'LSsysaccount' => 'r',
|
||||
'admin' => 'w',
|
||||
),
|
||||
'view' => 1,
|
||||
|
|
|
@ -24,5 +24,6 @@ $GLOBALS['LSaddons']['loads'] = array (
|
|||
'samba',
|
||||
'posix',
|
||||
'ftp',
|
||||
'maildir'
|
||||
'maildir',
|
||||
'LSaccessRightsMatrixView'
|
||||
);
|
||||
|
|
|
@ -61,9 +61,17 @@ function LSaccessRightsMatrixView() {
|
|||
$LSprofiles = array(
|
||||
'user' => _('All connected users'),
|
||||
);
|
||||
// Authenticable user objects types
|
||||
$authObjTypes = LSauth :: getAuthObjectTypes();
|
||||
foreach ($authObjTypes as $objType => $objParams)
|
||||
if (LSsession :: loadLSobject($objType))
|
||||
$LSprofiles[$objType] = LSldapObject :: getLabel($objType);
|
||||
|
||||
// Custom configured LSprofiles
|
||||
if (isset(LSsession :: $ldapServer["LSprofiles"]) && is_array(LSsession :: $ldapServer["LSprofiles"]))
|
||||
foreach(LSsession :: $ldapServer["LSprofiles"] as $LSprofile => $LSprofile_conf)
|
||||
$LSprofiles[$LSprofile] = (isset($LSprofile_conf['label'])?__($LSprofile_conf['label']):$LSprofile);
|
||||
|
||||
$LSobjects = array();
|
||||
foreach (LSsession :: $ldapServer["LSaccess"] as $LSobject) {
|
||||
if (!LSsession :: loadLSobject($LSobject))
|
||||
|
@ -74,7 +82,7 @@ function LSaccessRightsMatrixView() {
|
|||
foreach(LSconfig :: get("LSobjects.$LSobject.attrs", array()) as $attr_name => $attr_config) {
|
||||
$raw_attr_rights = LSconfig :: get('rights', array(), 'array', $attr_config);
|
||||
$attr_rights = array();
|
||||
if ($LSobject == LSsession :: get('authenticated_user_type'))
|
||||
if (array_key_exists($LSobject, $authObjTypes))
|
||||
$attr_rights['self'] = LSconfig :: get('self', False, null, $raw_attr_rights);
|
||||
foreach(array_keys($LSprofiles) as $LSprofile) {
|
||||
$attr_rights[$LSprofile] = LSconfig :: get($LSprofile, False, null, $raw_attr_rights);
|
||||
|
@ -90,7 +98,7 @@ function LSaccessRightsMatrixView() {
|
|||
foreach(LSconfig :: get("LSobjects.$LSobject.LSrelation", array()) as $relation_name => $relation_config) {
|
||||
$raw_relation_rights = LSconfig :: get('rights', array(), 'array', $relation_config);
|
||||
$relation_rights = array();
|
||||
if ($LSobject == LSsession :: get('authenticated_user_type'))
|
||||
if (array_key_exists($LSobject, $authObjTypes))
|
||||
$relation_rights['self'] = LSconfig :: get('self', False, null, $raw_relation_rights);
|
||||
foreach(array_keys($LSprofiles) as $LSprofile) {
|
||||
$relation_rights[$LSprofile] = LSconfig :: get($LSprofile, False, null, $raw_relation_rights);
|
||||
|
@ -112,7 +120,7 @@ function LSaccessRightsMatrixView() {
|
|||
reset($LSobjects);
|
||||
$LSobject = (isset($_REQUEST['LSobject']) && array_key_exists($_REQUEST['LSobject'], $LSobjects)?$_REQUEST['LSobject']:key($LSobjects));
|
||||
|
||||
if ($LSobject == LSsession :: get('authenticated_user_type'))
|
||||
if (array_key_exists($LSobject, $authObjTypes))
|
||||
$LSprofiles = array_merge(array('self' => _('The user him-self')), $LSprofiles);
|
||||
|
||||
LSlog :: get_logger('LSaddon_LSaccessRightsMatrixView') -> debug($LSobjects);
|
||||
|
|
|
@ -1896,9 +1896,10 @@ class LSsession {
|
|||
$access=array();
|
||||
foreach(self :: $ldapServer['LSaccess'] as $objectType) {
|
||||
if (self :: loadLSobject($objectType)) {
|
||||
if (self :: canAccess($objectType)) {
|
||||
$access[$objectType] = LSconfig :: get('LSobjects.'.$objectType.'.label');
|
||||
}
|
||||
if (self :: canAccess($objectType))
|
||||
$access[$objectType] = $objectType :: getLabel();
|
||||
else
|
||||
self :: log_debug("loadLSaccess(): authenticated user have no access to $objectType");
|
||||
}
|
||||
}
|
||||
$LSaccess[self :: $topDn] = $access;
|
||||
|
@ -2005,6 +2006,9 @@ class LSsession {
|
|||
public static function whoami($dn) {
|
||||
$retval = array('user');
|
||||
|
||||
if (self :: $LSuserObjectType)
|
||||
$retval[] = self :: $LSuserObjectType;
|
||||
|
||||
foreach(self :: $LSprofiles as $profile => $infos) {
|
||||
if(self :: isLSprofile($dn,$profile)) {
|
||||
$retval[]=$profile;
|
||||
|
|
Loading…
Reference in a new issue