Esempio n. 1
0
 public function createAdmin()
 {
     $this->view = false;
     /*
      * email
      * first name
      * last name
      * country
      * city
      * password
      * password repeat
      */
     createUser:
     $this->cadre("create administrator user");
     $email_is_valid = false;
     do {
         $rl = new Hoa\Console\Readline\Readline();
         $email = $rl->readLine('Your email [will be used as login] : ');
         if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
             $this->displayResult("This email considered as valid !", "KO");
         } else {
             $this->displayResult("This email considered as valid !", "OK");
             $domain = explode('@', $email)[1];
             if (checkdnsrr($domain, 'MX')) {
                 $this->displayResult("This MX records exists !", "OK");
                 $email_is_valid = true;
             } else {
                 $this->displayResult("This MX records exists !", "KO");
             }
         }
     } while ($email_is_valid === false);
     //first name
     $firstname = $rl->readLine('Your firstname : ');
     //last name
     $lastname = $rl->readLine('Your lastname : ');
     //country
     $sql = "SELECT libelle FROM geolocalisation_country where libelle != '' ORDER BY libelle";
     $DB = $this->di['db']->sql(DB_DEFAULT);
     $res = $DB->sql_query($sql);
     $country = [];
     while ($ob = $DB->sql_fetch_object($res)) {
         $country[] = $ob->libelle;
     }
     do {
         $rl = new Hoa\Console\Readline\Readline();
         $rl->setAutocompleter(new Hoa\Console\Readline\Autocompleter\Word($country));
         $country2 = $rl->readLine('Your country [First letter in upper case, then tab for help] : ');
         $sql = "select id from geolocalisation_country where libelle = '" . $DB->sql_real_escape_string($country2) . "'";
         $res = $DB->sql_query($sql);
         if ($DB->sql_num_rows($res) == 1) {
             $ob = $DB->sql_fetch_object($res);
             $id_country = $ob->id;
             $this->displayResult("Country found in database !", "OK");
         } else {
             $this->displayResult("Country found in database !", "KO");
         }
     } while ($DB->sql_num_rows($res) != 1);
     //city
     $sql = "SELECT libelle FROM geolocalisation_city where id_geolocalisation_country = '" . $id_country . "' ORDER BY libelle";
     $DB = $this->di['db']->sql(DB_DEFAULT);
     $res = $DB->sql_query($sql);
     $city = [];
     while ($ob = $DB->sql_fetch_object($res)) {
         $city[] = $ob->libelle;
     }
     do {
         $rl = new Hoa\Console\Readline\Readline();
         $rl->setAutocompleter(new Hoa\Console\Readline\Autocompleter\Word($city));
         $city2 = $rl->readLine('Your city [First letter in upper case, then tab for help] : ');
         $sql = "select id from geolocalisation_city where libelle = '" . $DB->sql_real_escape_string($city2) . "'";
         $res = $DB->sql_query($sql);
         if ($DB->sql_num_rows($res) == 1) {
             $ob = $DB->sql_fetch_object($res);
             $id_city = $ob->id;
             $this->displayResult("City found in database !", "OK");
         } else {
             $this->displayResult("City found in database !", "KO");
         }
     } while ($DB->sql_num_rows($res) != 1);
     //password
     $rl = new Hoa\Console\Readline\Password();
     $good = false;
     do {
         $pwd = $rl->readLine('Password : '******'Password (repeat) : ');
         if (!empty($pwd) && $pwd === $pwd2) {
             $good = true;
             $this->displayResult("The passwords must be the same & not empty", "OK");
         } else {
             $this->displayResult("The passwords must be the same & not empty", "KO");
         }
     } while ($good !== true);
     $ip = trim(@file_get_contents("http://icanhazip.com"));
     if (empty($ip) || !filter_var($ip, FILTER_VALIDATE_IP)) {
         $ip = "127.0.0.1";
     }
     $data['user_main']['is_valid'] = 1;
     $data['user_main']['email'] = $email;
     $data['user_main']['login'] = $email;
     $data['user_main']['password'] = \Glial\Auth\Auth::hashPassword($email, $pwd);
     //to set uppercase to composed name like 'Jean-Louis'
     $firstname = str_replace("-", " - ", $firstname);
     $firstname = mb_convert_case($firstname, MB_CASE_TITLE, "UTF-8");
     $data['user_main']['firstname'] = str_replace(" - ", "-", $firstname);
     $data['user_main']['name'] = mb_convert_case($lastname, MB_CASE_UPPER, "UTF-8");
     $data['user_main']['ip'] = $ip;
     $data['user_main']['date_created'] = date('Y-m-d H:i:s');
     $data['user_main']['id_group'] = 4;
     // 4 = super admin
     $data['user_main']['id_geolocalisation_country'] = $id_country;
     $data['user_main']['id_geolocalisation_city'] = $id_city;
     $data['user_main']['id_client'] = 1;
     $id_user = $DB->sql_save($data);
     if ($id_user) {
         $this->displayResult("Admin account successfully created", "OK");
     } else {
         print_r($data);
         $error = $DB->sql_error();
         print_r($error);
         $this->displayResult("Admin account successfully created", "KO");
         goto createUser;
     }
     echo Color::getColoredString("\nAdministrator successfully created !\n", "green");
     $ip_list = shell_exec('ifconfig -a | grep "inet ad" | cut -d ":" -f 2 | cut -d " " -f 1');
     $ips = explode("\n", $ip_list);
     foreach ($ips as $ip) {
         if (empty($ip)) {
             continue;
         }
         echo "You can connect to the application on this url : " . Color::getColoredString("http://" . $ip . WWW_ROOT, "yellow") . "\n";
     }
     echo "You can connect to the application on this url : " . Color::getColoredString("http://" . gethostname() . WWW_ROOT, "yellow") . "\n";
 }
Esempio n. 2
0
 /**
  * Read, edit, bind… a password from STDIN.
  *
  * @access  public
  * @param   string  $prefix    Prefix.
  * @return  string
  */
 public function readPassword($prefix = null)
 {
     static $_rl = null;
     if (null === $_rl) {
         $_rl = new \Hoa\Console\Readline\Password();
     }
     return $_rl->readLine($prefix);
 }