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>
|
<title>Profils d'utilisateurs</title>
|
||||||
|
|
||||||
<para>Cette section décrit la manière dont sont définis les profils d'utilisateurs
|
<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
|
se connectant à l'interface appelés <emphasis>LSprofile</emphasis>. Il est possible
|
||||||
possible de définir autant de profils d'utilisateurs que l'on souhaite. Pour
|
d'attribuer un profil à l'utilisateur connecté sur tout ou partie de l'annuaire LDAP.
|
||||||
chaque profil d'utilisateur, il faudra définir dans quelles parties de
|
</para>
|
||||||
l'annuaire ce profil existe (Exemple : les admistrateurs de groupes existent
|
|
||||||
uniquement dans la branche de l'annuaire stockant les groupes). Enfin pour
|
<sect5 id='config-LSprofile-default'>
|
||||||
chaque partie de l'annuaire, il faudra définir la manière d'identifier si
|
<title>Profils d'utilisateurs par défaut</title>
|
||||||
l'utilisateur qui se connecte appartient à ce profil.</para>
|
<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">
|
<programlisting linenumbering="unnumbered">
|
||||||
<citetitle>Structure</citetitle>...
|
<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
|
label sera utilisé pour faire référence au <emphasis>LSprofile</emphasis> lorsque
|
||||||
nécéssaire. <emphasis>(Paramètre facultatif)</emphasis></para>
|
nécéssaire. <emphasis>(Paramètre facultatif)</emphasis></para>
|
||||||
|
|
||||||
|
</sect5>
|
||||||
|
|
||||||
</sect4>
|
</sect4>
|
||||||
<!-- Fin LSprofiles -->
|
<!-- Fin LSprofiles -->
|
||||||
|
|
|
@ -48,7 +48,8 @@ $GLOBALS['LSobjects']['LSsysaccount'] = array (
|
||||||
'linkAttributeValue' => "dn",
|
'linkAttributeValue' => "dn",
|
||||||
'rights' => array(
|
'rights' => array(
|
||||||
'admin' => 'w',
|
'admin' => 'w',
|
||||||
'admingroup' => 'w'
|
'admingroup' => 'w',
|
||||||
|
'LSsysaccount' => 'r',
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -78,6 +79,7 @@ $GLOBALS['LSobjects']['LSsysaccount'] = array (
|
||||||
),
|
),
|
||||||
'rights' => array(
|
'rights' => array(
|
||||||
'self' => 'r',
|
'self' => 'r',
|
||||||
|
'LSsysaccount' => 'r',
|
||||||
'admin' => 'w',
|
'admin' => 'w',
|
||||||
),
|
),
|
||||||
'view' => 1,
|
'view' => 1,
|
||||||
|
@ -139,6 +141,7 @@ $GLOBALS['LSobjects']['LSsysaccount'] = array (
|
||||||
'multiple' => 1,
|
'multiple' => 1,
|
||||||
'rights' => array(
|
'rights' => array(
|
||||||
'self' => 'r',
|
'self' => 'r',
|
||||||
|
'LSsysaccount' => 'r',
|
||||||
'admin' => 'w',
|
'admin' => 'w',
|
||||||
),
|
),
|
||||||
'view' => 1,
|
'view' => 1,
|
||||||
|
|
|
@ -24,5 +24,6 @@ $GLOBALS['LSaddons']['loads'] = array (
|
||||||
'samba',
|
'samba',
|
||||||
'posix',
|
'posix',
|
||||||
'ftp',
|
'ftp',
|
||||||
'maildir'
|
'maildir',
|
||||||
|
'LSaccessRightsMatrixView'
|
||||||
);
|
);
|
||||||
|
|
|
@ -61,9 +61,17 @@ function LSaccessRightsMatrixView() {
|
||||||
$LSprofiles = array(
|
$LSprofiles = array(
|
||||||
'user' => _('All connected users'),
|
'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"]))
|
if (isset(LSsession :: $ldapServer["LSprofiles"]) && is_array(LSsession :: $ldapServer["LSprofiles"]))
|
||||||
foreach(LSsession :: $ldapServer["LSprofiles"] as $LSprofile => $LSprofile_conf)
|
foreach(LSsession :: $ldapServer["LSprofiles"] as $LSprofile => $LSprofile_conf)
|
||||||
$LSprofiles[$LSprofile] = (isset($LSprofile_conf['label'])?__($LSprofile_conf['label']):$LSprofile);
|
$LSprofiles[$LSprofile] = (isset($LSprofile_conf['label'])?__($LSprofile_conf['label']):$LSprofile);
|
||||||
|
|
||||||
$LSobjects = array();
|
$LSobjects = array();
|
||||||
foreach (LSsession :: $ldapServer["LSaccess"] as $LSobject) {
|
foreach (LSsession :: $ldapServer["LSaccess"] as $LSobject) {
|
||||||
if (!LSsession :: loadLSobject($LSobject))
|
if (!LSsession :: loadLSobject($LSobject))
|
||||||
|
@ -74,7 +82,7 @@ function LSaccessRightsMatrixView() {
|
||||||
foreach(LSconfig :: get("LSobjects.$LSobject.attrs", array()) as $attr_name => $attr_config) {
|
foreach(LSconfig :: get("LSobjects.$LSobject.attrs", array()) as $attr_name => $attr_config) {
|
||||||
$raw_attr_rights = LSconfig :: get('rights', array(), 'array', $attr_config);
|
$raw_attr_rights = LSconfig :: get('rights', array(), 'array', $attr_config);
|
||||||
$attr_rights = array();
|
$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);
|
$attr_rights['self'] = LSconfig :: get('self', False, null, $raw_attr_rights);
|
||||||
foreach(array_keys($LSprofiles) as $LSprofile) {
|
foreach(array_keys($LSprofiles) as $LSprofile) {
|
||||||
$attr_rights[$LSprofile] = LSconfig :: get($LSprofile, False, null, $raw_attr_rights);
|
$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) {
|
foreach(LSconfig :: get("LSobjects.$LSobject.LSrelation", array()) as $relation_name => $relation_config) {
|
||||||
$raw_relation_rights = LSconfig :: get('rights', array(), 'array', $relation_config);
|
$raw_relation_rights = LSconfig :: get('rights', array(), 'array', $relation_config);
|
||||||
$relation_rights = array();
|
$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);
|
$relation_rights['self'] = LSconfig :: get('self', False, null, $raw_relation_rights);
|
||||||
foreach(array_keys($LSprofiles) as $LSprofile) {
|
foreach(array_keys($LSprofiles) as $LSprofile) {
|
||||||
$relation_rights[$LSprofile] = LSconfig :: get($LSprofile, False, null, $raw_relation_rights);
|
$relation_rights[$LSprofile] = LSconfig :: get($LSprofile, False, null, $raw_relation_rights);
|
||||||
|
@ -112,7 +120,7 @@ function LSaccessRightsMatrixView() {
|
||||||
reset($LSobjects);
|
reset($LSobjects);
|
||||||
$LSobject = (isset($_REQUEST['LSobject']) && array_key_exists($_REQUEST['LSobject'], $LSobjects)?$_REQUEST['LSobject']:key($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);
|
$LSprofiles = array_merge(array('self' => _('The user him-self')), $LSprofiles);
|
||||||
|
|
||||||
LSlog :: get_logger('LSaddon_LSaccessRightsMatrixView') -> debug($LSobjects);
|
LSlog :: get_logger('LSaddon_LSaccessRightsMatrixView') -> debug($LSobjects);
|
||||||
|
|
|
@ -1896,9 +1896,10 @@ class LSsession {
|
||||||
$access=array();
|
$access=array();
|
||||||
foreach(self :: $ldapServer['LSaccess'] as $objectType) {
|
foreach(self :: $ldapServer['LSaccess'] as $objectType) {
|
||||||
if (self :: loadLSobject($objectType)) {
|
if (self :: loadLSobject($objectType)) {
|
||||||
if (self :: canAccess($objectType)) {
|
if (self :: canAccess($objectType))
|
||||||
$access[$objectType] = LSconfig :: get('LSobjects.'.$objectType.'.label');
|
$access[$objectType] = $objectType :: getLabel();
|
||||||
}
|
else
|
||||||
|
self :: log_debug("loadLSaccess(): authenticated user have no access to $objectType");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$LSaccess[self :: $topDn] = $access;
|
$LSaccess[self :: $topDn] = $access;
|
||||||
|
@ -2005,6 +2006,9 @@ class LSsession {
|
||||||
public static function whoami($dn) {
|
public static function whoami($dn) {
|
||||||
$retval = array('user');
|
$retval = array('user');
|
||||||
|
|
||||||
|
if (self :: $LSuserObjectType)
|
||||||
|
$retval[] = self :: $LSuserObjectType;
|
||||||
|
|
||||||
foreach(self :: $LSprofiles as $profile => $infos) {
|
foreach(self :: $LSprofiles as $profile => $infos) {
|
||||||
if(self :: isLSprofile($dn,$profile)) {
|
if(self :: isLSprofile($dn,$profile)) {
|
||||||
$retval[]=$profile;
|
$retval[]=$profile;
|
||||||
|
|
Loading…
Reference in a new issue