Beispiel #1
0
 /**
  * Registers a superadministrator at installation
  * @return boolean
  */
 public function superadmin(User $account, Container $application, Database $database)
 {
     //@TODO create master user account
     //1. Load the model
     $config = $this->config;
     //$database   = \Library\Database::getInstance();
     //2. Prevalidate passwords and other stuff;
     $username = $application->input->getString("user_first_name", "", "post", FALSE, array());
     $usernameid = $application->input->getString("user_name_id", "", "post", FALSE, array());
     $userpass = $application->input->getString("user_password", "", "post", FALSE, array());
     $userpass2 = $application->input->getString("user_password_2", "", "post", FALSE, array());
     $useremail = $application->input->getString("user_email", "", "post", FALSE, array());
     //3. Encrypt validated password if new users!
     //4. If not new user, check user has update permission on this user
     //5. MailOut
     if (empty($userpass) || empty($username) || empty($usernameid) || empty($useremail)) {
         //Display a message telling them what can't be empty
         throw new Exception(t('Please provide at least a Name, Username, E-mail and Password'));
         return false;
     }
     //Validate the passwords
     if ($userpass != $userpass2) {
         throw new Exception(t('The user passwords do not match'));
         return false;
     }
     //6. Store the user
     if (!$account->store($application->input->data("post"), true)) {
         //Display a message telling them what can't be empty
         throw new Exception(t('Could not store the admin user account'));
         return false;
     }
     //Add this user to the superadministrators group!
     //$adminObject    = $account->getObjectByURI( $usernameid );
     $adminAuthority = $this->config->get("setup.site.superadmin-authority", NULL);
     //Default Permission Group?
     if (!empty($adminAuthority)) {
         $query = "INSERT INTO ?objects_authority( authority_id, object_id ) SELECT {$database->quote((int) $adminAuthority)}, object_id FROM ?objects WHERE object_uri={$database->quote($usernameid)}";
         $database->exec($query);
     }
     //@TODO Empty the setup/sessions folder
     // \Library\Folder::deleteContents( APPPATH."setup".DS."sessions" ); //No need to through an error
     //Completes installation
     //set session handler to database if database is connectable
     $config->set("setup.session.store", "database");
     $config->set("setup.database.installed", TRUE);
     if (!$config->saveParams()) {
         throw new Exception("could not save config");
         return false;
     }
     return true;
 }