Exemple #1
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);
 }