Exemple #1
0
 /**
  * Searches LDAP
  *
  * @author [A. Gianotto] [<*****@*****.**>]
  * @since [v3.0]
  * @param $ldapatttibutes
  * @return array|bool
  */
 static function findLdapUsers()
 {
     $ldapconn = Ldap::connectToLdap();
     $ldap_bind = Ldap::bindAdminToLdap($ldapconn);
     $base_dn = Setting::getSettings()->ldap_basedn;
     $filter = Setting::getSettings()->ldap_filter;
     // Set up LDAP pagination for very large databases
     // @author Richard Hofman
     $page_size = 500;
     $cookie = '';
     $result_set = array();
     $global_count = 0;
     // Perform the search
     do {
         // Paginate (non-critical, if not supported by server)
         ldap_control_paged_result($ldapconn, $page_size, false, $cookie);
         $search_results = ldap_search($ldapconn, $base_dn, '(' . $filter . ')');
         if (!$search_results) {
             return redirect()->route('users')->with('error', trans('admin/users/message.error.ldap_could_not_search') . ldap_error($ldapconn));
         }
         // Get results from page
         $results = ldap_get_entries($ldapconn, $search_results);
         if (!$results) {
             return redirect()->route('users')->with('error', trans('admin/users/message.error.ldap_could_not_get_entries') . ldap_error($ldapconn));
         }
         // Add results to result set
         $global_count += $results['count'];
         $result_set = array_merge($result_set, $results);
         ldap_control_paged_result_response($ldapconn, $search_results, $cookie);
     } while ($cookie !== null && $cookie != '');
     // Clean up after search
     $result_set['count'] = $global_count;
     $results = $result_set;
     ldap_control_paged_result($ldapconn, 0);
     return $results;
 }
 public function getLdapTest()
 {
     try {
         $connection = Ldap::connectToLdap();
         try {
             Ldap::bindAdminToLdap($connection);
             return response()->json(['message' => 'It worked!'], 200);
         } catch (\Exception $e) {
             return response()->json(['message' => $e->getMessage()], 500);
         }
         return response()->json(['message' => 'It worked!'], 200);
     } catch (\Exception $e) {
         return response()->json(['message' => $e->getMessage()], 500);
     }
 }
Exemple #3
0
 /**
  * LDAP form processing.
  *
  * @author Aladin Alaily
  * @since [v1.8]
  * @return Redirect
  */
 public function postLDAP(Request $request)
 {
     ini_set('max_execution_time', 600);
     //600 seconds = 10 minutes
     ini_set('memory_limit', '500M');
     $ldap_result_username = Setting::getSettings()->ldap_username_field;
     $ldap_result_last_name = Setting::getSettings()->ldap_lname_field;
     $ldap_result_first_name = Setting::getSettings()->ldap_fname_field;
     $ldap_result_active_flag = Setting::getSettings()->ldap_active_flag_field;
     $ldap_result_emp_num = Setting::getSettings()->ldap_emp_num;
     $ldap_result_email = Setting::getSettings()->ldap_email;
     try {
         $ldapconn = Ldap::connectToLdap();
     } catch (\Exception $e) {
         return redirect()->back()->withInput()->with('error', $e->getMessage());
     }
     try {
         Ldap::bindAdminToLdap($ldapconn);
     } catch (\Exception $e) {
         return redirect()->back()->withInput()->with('error', $e->getMessage());
     }
     $summary = array();
     $results = Ldap::findLdapUsers();
     $tmp_pass = substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, 20);
     $pass = bcrypt($tmp_pass);
     for ($i = 0; $i < $results["count"]; $i++) {
         if (empty($ldap_result_active_flag) || $results[$i][$ldap_result_active_flag][0] == "TRUE") {
             $item = array();
             $item["username"] = isset($results[$i][$ldap_result_username][0]) ? $results[$i][$ldap_result_username][0] : "";
             $item["employee_number"] = isset($results[$i][$ldap_result_emp_num][0]) ? $results[$i][$ldap_result_emp_num][0] : "";
             $item["lastname"] = isset($results[$i][$ldap_result_last_name][0]) ? $results[$i][$ldap_result_last_name][0] : "";
             $item["firstname"] = isset($results[$i][$ldap_result_first_name][0]) ? $results[$i][$ldap_result_first_name][0] : "";
             $item["email"] = isset($results[$i][$ldap_result_email][0]) ? $results[$i][$ldap_result_email][0] : "";
             // User exists
             $item["createorupdate"] = 'updated';
             if (!($user = User::where('username', $item["username"])->first())) {
                 $user = new User();
                 $user->password = $pass;
                 $item["createorupdate"] = 'created';
             }
             // Create the user if they don't exist.
             $user->first_name = e($item["firstname"]);
             $user->last_name = e($item["lastname"]);
             $user->username = e($item["username"]);
             $user->email = e($item["email"]);
             $user->employee_num = e($item["employee_number"]);
             $user->activated = 1;
             if ($request->input('location_id') != '') {
                 $user->location_id = e($request->input('location_id'));
             }
             $user->notes = 'Imported from LDAP';
             $user->ldap_import = 1;
             $errors = '';
             if ($user->save()) {
                 $item["note"] = $item["createorupdate"];
                 $item["status"] = 'success';
             } else {
                 foreach ($user->getErrors()->getMessages() as $key => $err) {
                     $errors .= '<li>' . $err[0];
                 }
                 $item["note"] = $errors;
                 $item["status"] = 'error';
             }
             array_push($summary, $item);
         }
     }
     return redirect()->route('ldap/user')->with('success', "LDAP Import successful.")->with('summary', $summary);
 }