LSaddon::posix : added generate_memberUidFromUniqueMember() function
authorBenjamin Renard <brenard@easter-eggs.com>
Mon, 24 Jun 2013 15:38:26 +0000 (17:38 +0200)
committerBenjamin Renard <brenard@easter-eggs.com>
Mon, 24 Jun 2013 15:38:26 +0000 (17:38 +0200)
public_html/conf/LSaddons/config.LSaddons.posix.php
public_html/includes/addons/LSaddons.posix.php

index c2e6692..938281d 100644 (file)
@@ -59,4 +59,7 @@ define('LS_POSIX_HOMEDIRECTORY_FTP_PWD','password');
 // Create homeDirectory by FTP - Path
 define('LS_POSIX_HOMEDIRECTORY_FTP_PATH','%{homeDirectory}');
 
+// Pattern to transform user DN to uid
+define('LS_POSIX_DN_TO_UID_PATTERN','/^'.LS_POSIX_UID_ATTR.'=([^,]*),.*$/');
+
 ?>
index c655eb7..9e4b5c5 100644 (file)
@@ -66,7 +66,8 @@ LSerror :: defineError('POSIX_01',
       'LS_POSIX_HOMEDIRECTORY_FTP_PORT',
       'LS_POSIX_HOMEDIRECTORY_FTP_USER',
       'LS_POSIX_HOMEDIRECTORY_FTP_PWD',
-      'LS_POSIX_HOMEDIRECTORY_FTP_PATH'
+      'LS_POSIX_HOMEDIRECTORY_FTP_PATH',
+      'LS_POSIX_DN_TO_UID_PATTERN',
     );
 
     foreach($MUST_DEFINE_CONST as $const) {
@@ -210,5 +211,28 @@ function generateMemberFromMemberUid($ldapObject) {
 
   }
 
+function generate_memberUidFromUniqueMember($ldapObject) {
+    if ( get_class($ldapObject -> attrs[ 'memberUid' ]) != 'LSattribute' ) {
+      LSerror :: addErrorCode('POSIX_01',array('dependency' => 'memberUid', 'attr' => 'memberUid'));
+      return;
+    }
+
+    if ( get_class($ldapObject -> attrs[ 'uniqueMember' ]) != 'LSattribute' ) {
+      LSerror :: addErrorCode('POSIX_01',array('dependency' => 'uniqueMember', 'attr' => 'memberUid'));
+      return;
+    }
+
+    $dns = $ldapObject -> attrs[ 'uniqueMember' ] -> getValue();
+    $uids = array();
+    if (is_array($dns)) {
+      foreach($dns as $dn) {
+        if(preg_match(LS_POSIX_DN_TO_UID_PATTERN,$dn,$matches)) {
+          $uids[]=$matches[1];
+        }
+      }
+    }
+    return $uids;
+}
+
 
 ?>