示例#1
0
 /**
  * Validates any data provided to the stage.
  *
  * @access  public
  * @return  bool|Jaws_Error  Returns either true on success, or a Jaws_Error
  *                          containing the reason for failure.
  */
 function Validate()
 {
     if ($_SESSION['install']['predefined']) {
         return true;
     }
     $request = Jaws_Request::getInstance();
     $postReq = $request->fetch(array('secure', 'customize'), 'post');
     $_SESSION['secure'] = !empty($postReq['secure']);
     $_SESSION['customize'] = !empty($postReq['customize']);
     // try to entering to secure transformation mode
     if ($_SESSION['secure'] && (!isset($_SESSION['pub_key']) || empty($_SESSION['pub_key']))) {
         require_once JAWS_PATH . 'include/Jaws/Crypt.php';
         $pkey = Jaws_Crypt::Generate_RSA_KeyPair(512);
         if (!Jaws_Error::isError($pkey)) {
             $_SESSION['pub_key'] = $pkey['pub_key'];
             $_SESSION['pvt_key'] = $pkey['pvt_key'];
         } else {
             return new Jaws_Error(_t('INSTALL_AUTH_ERROR_RSA_KEY_GENERATION'), 0, JAWS_ERROR_WARNING);
         }
     }
     $key_file = INSTALL_PATH . 'key.txt';
     if (file_exists($key_file)) {
         $key = trim(file_get_contents($key_file));
         if ($key === $_SESSION['install']['Authentication']['key']) {
             _log(JAWS_LOG_DEBUG, "Input log and session key match");
             return true;
         }
         _log(JAWS_LOG_DEBUG, "The key found doesn't match the one below, please check that you entered the key correctly");
         return new Jaws_Error(_t('INSTALL_AUTH_ERROR_KEY_MATCH', 'key.txt'), 0, JAWS_ERROR_WARNING);
     }
     _log(JAWS_LOG_DEBUG, "Your key file was not found, please make sure you created it, and the web server is able to read it.");
     return new Jaws_Error(_t('INSTALL_AUTH_ERROR_KEY_FILE', 'key.txt'), 0, JAWS_ERROR_WARNING);
 }
示例#2
0
 /**
  * Builds account settings for logged users
  *
  * @access  public
  * @return  string  XHTML content
  */
 function MyAccount()
 {
     $this->gadget->CheckPermission('EditUserName,EditUserNickname,EditUserEmail,EditUserPassword', false);
     $uModel = new Jaws_User();
     $uInfo = $uModel->GetUser($GLOBALS['app']->Session->GetAttribute('user'), true, true);
     if (Jaws_Error::IsError($uInfo) || empty($uInfo)) {
         return false;
     }
     $this->AjaxMe('script.js');
     $tpl = $this->gadget->template->loadAdmin('MyAccount.html');
     $tpl->SetBlock('MyAccount');
     $tpl->SetVariable('uid', $uInfo['id']);
     $tpl->SetVariable('legend_title', _t('USERS_USERS_ACCOUNT'));
     $JCrypt = Jaws_Crypt::getInstance();
     if (!Jaws_Error::IsError($JCrypt)) {
         $GLOBALS['app']->Layout->AddScriptLink('libraries/js/rsa.lib.js');
         $tpl->SetBlock('MyAccount/encryption');
         // key length
         $length =& Piwi::CreateWidget('HiddenEntry', 'length', $JCrypt->length());
         $length->SetID('length');
         $tpl->SetVariable('length', $length->Get());
         // modulus
         $modulus =& Piwi::CreateWidget('HiddenEntry', 'modulus', $JCrypt->modulus());
         $modulus->SetID('modulus');
         $tpl->SetVariable('modulus', $modulus->Get());
         //exponent
         $exponent =& Piwi::CreateWidget('HiddenEntry', 'exponent', $JCrypt->exponent());
         $modulus->SetID('exponent');
         $tpl->SetVariable('exponent', $exponent->Get());
         $tpl->ParseBlock('MyAccount/encryption');
     }
     // username
     $username =& Piwi::CreateWidget('Entry', 'username', $uInfo['username']);
     $username->SetID('username');
     $tpl->SetVariable('lbl_username', _t('USERS_USERS_USERNAME'));
     $tpl->SetVariable('username', $username->Get());
     // nickname
     $nickname =& Piwi::CreateWidget('Entry', 'nickname', $uInfo['nickname']);
     $nickname->SetID('nickname');
     $tpl->SetVariable('lbl_nickname', _t('USERS_USERS_NICKNAME'));
     $tpl->SetVariable('nickname', $nickname->Get());
     // email
     $email =& Piwi::CreateWidget('Entry', 'email', $uInfo['email']);
     $email->SetID('email');
     $tpl->SetVariable('lbl_email', _t('GLOBAL_EMAIL'));
     $tpl->SetVariable('email', $email->Get());
     // pass1
     $pass1 =& Piwi::CreateWidget('PasswordEntry', 'pass1', '');
     $pass1->SetID('pass1');
     $tpl->SetVariable('lbl_pass1', _t('USERS_USERS_PASSWORD'));
     $tpl->SetVariable('pass1', $pass1->Get());
     // pass2
     $pass2 =& Piwi::CreateWidget('PasswordEntry', 'pass2', '');
     $pass2->SetID('pass2');
     $tpl->SetVariable('lbl_pass2', _t('USERS_USERS_PASSWORD_VERIFY'));
     $tpl->SetVariable('pass2', $pass2->Get());
     $avatar =& Piwi::CreateWidget('Image', $uModel->GetAvatar($uInfo['avatar'], $uInfo['email'], 128, $uInfo['last_update']), $uInfo['username']);
     $avatar->SetID('avatar');
     $tpl->SetVariable('avatar', $avatar->Get());
     $btnSave =& Piwi::CreateWidget('Button', 'SubmitButton', _t('GLOBAL_UPDATE'), STOCK_SAVE);
     $btnSave->AddEvent(ON_CLICK, "javascript: updateMyAccount();");
     $tpl->SetVariable('save', $btnSave->Get());
     $tpl->SetVariable('incompleteUserFields', _t('USERS_MYACCOUNT_INCOMPLETE_FIELDS'));
     $tpl->SetVariable('wrongPassword', _t('USERS_MYACCOUNT_PASSWORDS_DONT_MATCH'));
     $tpl->ParseBlock('MyAccount');
     return $tpl->Get();
 }
示例#3
0
 /**
  * Does any actions required to finish the stage, such as DB queries.
  *
  * @access  public
  * @return  bool|Jaws_Error  Either true on success, or a Jaws_Error
  *                          containing the reason for failure.
  */
 function Run()
 {
     $keys = array_keys($this->_Defaults);
     $keys[] = 'dbpass';
     $request = Jaws_Request::getInstance();
     $post = $request->fetch($keys, 'post');
     $post['dbpass'] = $request->fetch('dbpass', 'post', false);
     $request->reset();
     if (isset($_SESSION['upgrade']['data']['Database'])) {
         $post = $_SESSION['upgrade']['data']['Database'] + $post;
     }
     if ($_SESSION['secure']) {
         require_once JAWS_PATH . 'include/Jaws/Crypt.php';
         $JCrypt = Jaws_Crypt::getInstance(array('pvt_key' => $_SESSION['pvt_key'], 'pub_key' => $_SESSION['pub_key']));
         if (!Jaws_Error::isError($JCrypt)) {
             $post['dbpass'] = $JCrypt->decrypt($post['dbpass']);
         } else {
             return $JCrypt;
         }
     }
     if (substr($post['prefix'], -1) == '_') {
         $prefix = $post['prefix'];
     } elseif (strlen($post['prefix']) > 0) {
         $prefix = $post['prefix'] . '_';
     } else {
         $prefix = $post['prefix'];
     }
     if (!empty($post['path'])) {
         if (DIRECTORY_SEPARATOR != '/') {
             $post['path'] = str_replace('/', '\\', $post['path']);
         }
         if (substr($post['path'], -1) != DIRECTORY_SEPARATOR) {
             $post['path'] .= DIRECTORY_SEPARATOR;
         }
     }
     $_SESSION['upgrade']['Database'] = array('user' => trim($post['user']), 'password' => $post['dbpass'], 'isdba' => !empty($post['isdba']) ? 'true' : 'false', 'name' => trim($post['name']), 'path' => trim($post['path']), 'host' => trim($post['host']), 'port' => trim($post['port']), 'prefix' => $prefix, 'driver' => $post['driver']);
     // Connect to database
     require_once JAWS_PATH . 'include/Jaws/DB.php';
     $objDatabase = Jaws_DB::getInstance('default', $_SESSION['upgrade']['Database']);
     if (Jaws_Error::IsError($objDatabase)) {
         _log(JAWS_LOG_DEBUG, "There was a problem connecting to the database, please check the details and try again");
         return new Jaws_Error(_t('UPGRADE_DB_RESPONSE_CONNECT_FAILED'), 0, JAWS_ERROR_WARNING);
     }
     _log(JAWS_LOG_DEBUG, "Checking current database");
     $sql = "SELECT * FROM [[registry]]";
     $result = Jaws_DB::getInstance()->queryRow($sql);
     if (Jaws_Error::isError($result)) {
         _log(JAWS_LOG_DEBUG, "Something wrong happened while checking the current database, error is:");
         _log(JAWS_LOG_DEBUG, $result->getMessage());
         return new Jaws_Error($result->getMessage(), 0, JAWS_ERROR_ERROR);
     }
     _log(JAWS_LOG_DEBUG, "Connected to " . $_SESSION['upgrade']['Database']['driver'] . " database driver successfully.");
     return true;
 }
示例#4
0
文件: Login.php 项目: Dulciane/jaws
 /**
  * Logins user, if something goes wrong then redirect user to previous page
  * and notify the error
  *
  * @access  public
  * @return  void
  */
 function Login()
 {
     $post = jaws()->request->fetch(array('username', 'password', 'authtype', 'remember', 'usecrypt', 'referrer'), 'post');
     if (isset($post['usecrypt'])) {
         $JCrypt = Jaws_Crypt::getInstance();
         if (!Jaws_Error::IsError($JCrypt)) {
             $post['password'] = $JCrypt->decrypt($post['password']);
         }
     }
     // check captcha
     $htmlPolicy = Jaws_Gadget::getInstance('Policy')->action->load('Captcha');
     $resCheck = $htmlPolicy->checkCaptcha('login');
     if (!Jaws_Error::IsError($resCheck)) {
         // try to login
         $resCheck = $GLOBALS['app']->Session->Login($post['username'], $post['password'], $post['remember'], $post['authtype']);
     }
     if (Jaws_Error::isError($resCheck)) {
         unset($post['password']);
         $GLOBALS['app']->Session->PushResponse($resCheck->GetMessage(), 'Users.Login.Response', RESPONSE_ERROR, $post);
         $login_url = $this->gadget->urlMap('LoginBox', array('referrer' => $post['referrer']));
         Jaws_Header::Location($login_url);
     }
     Jaws_Header::Location(hex2bin($post['referrer']));
 }
示例#5
0
文件: admin.php 项目: uda/jaws
    $httpAuth = new Jaws_HTTPAuth();
}
// Check for login action is requested
if (!$GLOBALS['app']->Session->Logged()) {
    $loginMsg = '';
    if ($ReqGadget == 'ControlPanel' && $ReqAction == 'Login' || $httpAuthEnabled && isset($_SERVER['PHP_AUTH_USER'])) {
        if ($httpAuthEnabled) {
            $httpAuth->AssignData();
            $user = $httpAuth->getUsername();
            $passwd = $httpAuth->getPassword();
        } else {
            $user = jaws()->request->fetch('username', 'post');
            $passwd = jaws()->request->fetch('password', 'post');
            $crypted = jaws()->request->fetch('usecrypt', 'post');
            if (isset($crypted)) {
                $JCrypt = Jaws_Crypt::getInstance();
                if (!Jaws_Error::IsError($JCrypt)) {
                    $passwd = $JCrypt->decrypt($passwd);
                }
            }
        }
        // check captcha
        $mPolicy = Jaws_Gadget::getInstance('Policy')->action->load('Captcha');
        $resCheck = $mPolicy->checkCaptcha('login');
        if (!Jaws_Error::IsError($resCheck)) {
            $param = jaws()->request->fetch(array('redirect_to', 'remember', 'authtype'), 'post');
            $resCheck = $GLOBALS['app']->Session->Login($user, $passwd, isset($param['remember']), $param['authtype']);
        }
        if (!Jaws_Error::IsError($resCheck)) {
            // Can enter to Control Panel?
            if ($GLOBALS['app']->Session->GetPermission('ControlPanel', 'default_admin')) {
示例#6
0
文件: Ajax.php 项目: juniortux/jaws
 /**
  * Updates my account
  *
  * @access  public
  * @return  array   Response array (notice or error)
  */
 function UpdateMyAccount()
 {
     $this->gadget->CheckPermission('EditUserName,EditUserNickname,EditUserEmail,EditUserPassword', false);
     $uData = jaws()->request->fetchAll('post');
     $uid = $uData['uid'];
     // unset invalid keys
     $invalids = array_diff(array_keys($uData), array('username', 'nickname', 'email', 'password'));
     foreach ($invalids as $invalid) {
         unset($uData[$invalid]);
     }
     $JCrypt = Jaws_Crypt::getInstance();
     if (!Jaws_Error::IsError($JCrypt)) {
         $uData['password'] = $JCrypt->decrypt($uData['password']);
     }
     $res = $this->_UserModel->UpdateUser($uid, $uData);
     if (Jaws_Error::isError($res)) {
         $GLOBALS['app']->Session->PushLastResponse($res->getMessage(), RESPONSE_ERROR);
     } else {
         $GLOBALS['app']->Session->PushLastResponse(_t('USERS_MYACCOUNT_UPDATED'), RESPONSE_NOTICE);
     }
     return $GLOBALS['app']->Session->PopLastResponse();
 }
示例#7
0
 /**
  * Does any actions required to finish the stage, such as DB queries.
  *
  * @access  public
  * @return  bool|Jaws_Error  Either true on success, or a Jaws_Error
  *                          containing the reason for failure.
  */
 function Run()
 {
     $keys = array_keys($this->_Defaults);
     $keys[] = 'dbpass';
     $request = Jaws_Request::getInstance();
     $post = $request->fetch($keys, 'post');
     $post['dbpass'] = $request->fetch('dbpass', 'post', false);
     $request->reset();
     if (isset($_SESSION['install']['data']['Database'])) {
         $post = $_SESSION['install']['data']['Database'] + $post;
     }
     if ($_SESSION['secure']) {
         require_once JAWS_PATH . 'include/Jaws/Crypt.php';
         $JCrypt = Jaws_Crypt::getInstance(array('pvt_key' => $_SESSION['pvt_key'], 'pub_key' => $_SESSION['pub_key']));
         if (!Jaws_Error::isError($JCrypt)) {
             $post['dbpass'] = $JCrypt->decrypt($post['dbpass']);
         } else {
             return $JCrypt;
         }
     }
     if (substr($post['prefix'], -1) == '_') {
         $prefix = $post['prefix'];
     } elseif (strlen($post['prefix']) > 0) {
         $prefix = $post['prefix'] . '_';
     } else {
         $prefix = $post['prefix'];
     }
     if (!empty($post['path'])) {
         if (DIRECTORY_SEPARATOR != '/') {
             $post['path'] = str_replace('/', '\\', $post['path']);
         }
         if (substr($post['path'], -1) != DIRECTORY_SEPARATOR) {
             $post['path'] .= DIRECTORY_SEPARATOR;
         }
     }
     $_SESSION['install']['Database'] = array('user' => trim($post['user']), 'password' => $post['dbpass'], 'isdba' => !empty($post['isdba']) ? 'true' : 'false', 'name' => trim($post['name']), 'path' => trim($post['path']), 'host' => trim($post['host']), 'port' => trim($post['port']), 'prefix' => $prefix, 'driver' => $post['driver']);
     // Connect to database
     require_once JAWS_PATH . 'include/Jaws/DB.php';
     $objDatabase = Jaws_DB::getInstance('default', $_SESSION['install']['Database']);
     if (Jaws_Error::IsError($objDatabase)) {
         _log(JAWS_LOG_DEBUG, "There was a problem connecting to the database.");
         return new Jaws_Error(_t('INSTALL_DB_RESPONSE_CONNECT_FAILED'), 0, JAWS_ERROR_WARNING);
     }
     $variables = array();
     $variables['timestamp'] = Jaws_DB::getInstance()->date();
     $result = Jaws_DB::getInstance()->installSchema('Resources/schema/schema.xml', $variables);
     _log(JAWS_LOG_DEBUG, "Installing core schema");
     if (Jaws_Error::isError($result)) {
         _log(JAWS_LOG_DEBUG, $result->getMessage());
         return $result;
     }
     // Create application
     require_once JAWS_PATH . 'include/Jaws.php';
     $GLOBALS['app'] = jaws();
     $GLOBALS['app']->Registry->Init();
     $GLOBALS['app']->loadPreferences(array('language' => $_SESSION['install']['language']), false);
     Jaws_Translate::getInstance()->LoadTranslation('Install', JAWS_COMPONENT_INSTALL);
     // registry keys
     $result = $GLOBALS['app']->Registry->insertAll(array(array('version', JAWS_VERSION), array('gadgets_installed_items', ','), array('gadgets_disabled_items', ','), array('gadgets_autoload_items', ','), array('plugins_installed_items', ',')));
     if (Jaws_Error::isError($result)) {
         _log(JAWS_LOG_DEBUG, $result->getMessage());
     }
     $gadgets = array('Settings', 'ControlPanel', 'Components', 'UrlMapper', 'Layout', 'Users', 'Policy');
     foreach ($gadgets as $gadget) {
         $objGadget = Jaws_Gadget::getInstance($gadget);
         if (Jaws_Error::IsError($objGadget)) {
             _log(JAWS_LOG_DEBUG, "There was a problem installing core gadget: " . $gadget);
             return $objGadget;
         }
         $installer = $objGadget->installer->load();
         $result = $installer->InstallGadget();
         if (Jaws_Error::IsError($result)) {
             _log(JAWS_LOG_DEBUG, "There was a problem installing core gadget: " . $gadget);
             return $result;
         }
     }
     return true;
 }
示例#8
0
文件: Login.php 项目: juniortux/jaws
 /**
  * Get HTML login form
  *
  * @access  public
  * @param   string  $message If a message is needed
  * @return  string  XHTML template of the login form
  */
 function LoginBox($message = '')
 {
     // Init layout
     $GLOBALS['app']->Layout->Load('gadgets/ControlPanel/Templates', 'LoginBox.html');
     $ltpl =& $GLOBALS['app']->Layout->_Template;
     $GLOBALS['app']->Layout->AddHeadLink('gadgets/ControlPanel/Resources/style.css?' . $this->gadget->version);
     $ltpl->SetVariable('admin_script', BASE_SCRIPT);
     $ltpl->SetVariable('control-panel', _t('GLOBAL_CONTROLPANEL'));
     $reqpost = jaws()->request->fetch(array('username', 'authtype', 'remember', 'usecrypt', 'redirect_to'), 'post');
     if (is_null($reqpost['authtype'])) {
         $reqpost['authtype'] = jaws()->request->fetch('authtype', 'get');
     }
     // referrer page link
     $reqURL = Jaws_Utils::getRequestURL();
     $reqURL = empty($reqURL) || $reqURL == BASE_SCRIPT ? BASE_SCRIPT . '?checksess' : "{$reqURL}&checksess";
     $redirect_to = is_null($reqpost['redirect_to']) ? bin2hex($reqURL) : $reqpost['redirect_to'];
     $ltpl->SetVariable('redirect_to', $redirect_to);
     $JCrypt = Jaws_Crypt::getInstance();
     if (!Jaws_Error::IsError($JCrypt)) {
         $GLOBALS['app']->Layout->AddScriptLink('libraries/js/rsa.lib.js');
         $ltpl->SetBlock('layout/onsubmit');
         $ltpl->ParseBlock('layout/onsubmit');
         $ltpl->SetBlock('layout/encryption');
         $ltpl->SetVariable('length', $JCrypt->length());
         $ltpl->SetVariable('modulus', $JCrypt->modulus());
         $ltpl->SetVariable('exponent', $JCrypt->exponent());
         $ltpl->ParseBlock('layout/encryption');
         // usecrypt
         $ltpl->SetBlock('layout/usecrypt');
         $ltpl->SetVariable('lbl_usecrypt', _t('GLOBAL_LOGIN_SECURE'));
         if (empty($reqpost['username']) || !empty($reqpost['usecrypt'])) {
             $ltpl->SetBlock('layout/usecrypt/selected');
             $ltpl->ParseBlock('layout/usecrypt/selected');
         }
         $ltpl->ParseBlock('layout/usecrypt');
     }
     $ltpl->SetVariable('legend_title', _t('CONTROLPANEL_LOGIN_TITLE'));
     $ltpl->SetVariable('lbl_username', _t('GLOBAL_USERNAME'));
     $ltpl->SetVariable('username', $reqpost['username']);
     $ltpl->SetVariable('lbl_password', _t('GLOBAL_PASSWORD'));
     $authtype = $this->gadget->registry->fetch('authtype', 'Users');
     if (!is_null($reqpost['authtype']) || $authtype !== 'Default') {
         $authtype = is_null($reqpost['authtype']) ? $authtype : $reqpost['authtype'];
         $ltpl->SetBlock('layout/authtype');
         $ltpl->SetVariable('lbl_authtype', _t('GLOBAL_AUTHTYPE'));
         foreach ($GLOBALS['app']->GetAuthTypes() as $method) {
             $ltpl->SetBlock('layout/authtype/item');
             $ltpl->SetVariable('method', $method);
             if ($method == $authtype) {
                 $ltpl->SetVariable('selected', 'selected="selected"');
             } else {
                 $ltpl->SetVariable('selected', '');
             }
             $ltpl->ParseBlock('layout/authtype/item');
         }
         $ltpl->ParseBlock('layout/authtype');
     }
     // remember
     $ltpl->SetBlock('layout/remember');
     $ltpl->SetVariable('lbl_remember', _t('GLOBAL_REMEMBER_ME'));
     if (!empty($reqpost['remember'])) {
         $ltpl->SetBlock('layout/remember/selected');
         $ltpl->ParseBlock('layout/remember/selected');
     }
     $ltpl->ParseBlock('layout/remember');
     //captcha
     $mPolicy = Jaws_Gadget::getInstance('Policy')->action->load('Captcha');
     $mPolicy->loadCaptcha($ltpl, 'layout', 'login');
     $ltpl->SetVariable('login', _t('GLOBAL_LOGIN'));
     $ltpl->SetVariable('back', _t('CONTROLPANEL_LOGIN_BACK_TO_SITE'));
     $message = is_null(jaws()->request->fetch('checksess')) ? $message : _t('GLOBAL_ERROR_SESSION_NOTFOUND');
     if (!empty($message)) {
         $ltpl->SetBlock('layout/message');
         $ltpl->SetVariable('message', $message);
         $ltpl->ParseBlock('layout/message');
     }
     return $GLOBALS['app']->Layout->Get();
 }
示例#9
0
文件: Users.php 项目: juniortux/jaws
 /**
  * Builds a form to edit user data
  *
  * @access  public
  * @return  string  XHTML form
  */
 function UserUI()
 {
     $tpl = $this->gadget->template->loadAdmin('User.html');
     $tpl->SetBlock('user');
     $JCrypt = Jaws_Crypt::getInstance();
     if (!Jaws_Error::IsError($JCrypt)) {
         $tpl->SetBlock('user/encryption');
         // key length
         $length =& Piwi::CreateWidget('HiddenEntry', 'length', $JCrypt->length());
         $length->SetID('length');
         $tpl->SetVariable('length', $length->Get());
         // modulus
         $modulus =& Piwi::CreateWidget('HiddenEntry', 'modulus', $JCrypt->modulus());
         $modulus->SetID('modulus');
         $tpl->SetVariable('modulus', $modulus->Get());
         //exponent
         $exponent =& Piwi::CreateWidget('HiddenEntry', 'exponent', $JCrypt->exponent());
         $modulus->SetID('exponent');
         $tpl->SetVariable('exponent', $exponent->Get());
         $tpl->ParseBlock('user/encryption');
     }
     // username
     $username =& Piwi::CreateWidget('Entry', 'username');
     $username->SetID('username');
     $tpl->SetVariable('lbl_username', _t('USERS_USERS_USERNAME'));
     $tpl->SetVariable('username', $username->Get());
     // nickname
     $nickname =& Piwi::CreateWidget('Entry', 'nickname');
     $nickname->SetID('nickname');
     $tpl->SetVariable('lbl_nickname', _t('USERS_USERS_NICKNAME'));
     $tpl->SetVariable('nickname', $nickname->Get());
     // email
     $email =& Piwi::CreateWidget('Entry', 'email');
     $email->SetID('email');
     $tpl->SetVariable('lbl_email', _t('GLOBAL_EMAIL'));
     $tpl->SetVariable('email', $email->Get());
     // superadmin
     $superadmin =& Piwi::CreateWidget('Combo', 'superadmin');
     $superadmin->SetID('superadmin');
     $superadmin->AddOption(_t('GLOBAL_NO'), 0);
     $superadmin->AddOption(_t('GLOBAL_YES'), 1);
     $superadmin->SetDefault(0);
     $tpl->SetVariable('lbl_superadmin', _t('USERS_USERS_TYPE_SUPERADMIN'));
     $tpl->SetVariable('superadmin', $superadmin->Get());
     // pass1
     $pass1 =& Piwi::CreateWidget('PasswordEntry', 'pass1');
     $pass1->SetID('pass1');
     $tpl->SetVariable('lbl_pass1', _t('USERS_USERS_PASSWORD'));
     $tpl->SetVariable('pass1', $pass1->Get());
     // pass2
     $pass2 =& Piwi::CreateWidget('PasswordEntry', 'pass2');
     $pass2->SetID('pass2');
     $tpl->SetVariable('lbl_pass2', _t('USERS_USERS_PASSWORD_VERIFY'));
     $tpl->SetVariable('pass2', $pass2->Get());
     // concurrent logins
     $concurrents =& Piwi::CreateWidget('Entry', 'concurrents', '0');
     $concurrents->SetID('concurrents');
     $tpl->SetVariable('lbl_concurrents', _t('USERS_USERS_CONCURRENTS'));
     $tpl->SetVariable('concurrents', $concurrents->Get());
     // expiry date
     $dExpiry =& Piwi::CreateWidget('DatePicker', 'expiry_date', '');
     $dExpiry->SetId('expiry_date');
     $dExpiry->showTimePicker(true);
     $dExpiry->setLanguageCode($this->gadget->registry->fetch('admin_language', 'Settings'));
     $dExpiry->setCalType($this->gadget->registry->fetch('calendar', 'Settings'));
     $dExpiry->setDateFormat('%Y-%m-%d %H:%M:%S');
     $tpl->SetVariable('lbl_expiry_date', _t('USERS_USERS_EXPIRY_DATE'));
     $tpl->SetVariable('expiry_date', $dExpiry->Get());
     // status
     $status =& Piwi::CreateWidget('Combo', 'status');
     $status->SetID('status');
     $status->AddOption(_t('USERS_USERS_STATUS_0'), 0);
     $status->AddOption(_t('USERS_USERS_STATUS_1'), 1);
     $status->AddOption(_t('USERS_USERS_STATUS_2'), 2);
     $status->SetDefault(1);
     $tpl->SetVariable('lbl_status', _t('GLOBAL_STATUS'));
     $tpl->SetVariable('status', $status->Get());
     $tpl->ParseBlock('user');
     return $tpl->Get();
 }
示例#10
0
 /**
  * Does any actions required to finish the stage, such as DB queries.
  *
  * @access  public
  * @return  bool|Jaws_Error  Either true on success, or a Jaws_Error
  *                          containing the reason for failure.
  */
 function Run()
 {
     $request = Jaws_Request::getInstance();
     $post = $request->fetch(array('username', 'email', 'nickname', 'password'), 'post');
     if (isset($_SESSION['install']['data']['CreateUser'])) {
         $post = $_SESSION['install']['data']['CreateUser'] + $post;
     }
     if ($_SESSION['secure']) {
         require_once JAWS_PATH . 'include/Jaws/Crypt.php';
         $JCrypt = Jaws_Crypt::getInstance(array('pvt_key' => $_SESSION['pvt_key'], 'pub_key' => $_SESSION['pub_key']));
         if (!Jaws_Error::isError($JCrypt)) {
             $post['password'] = $JCrypt->decrypt($post['password']);
         } else {
             return $JCrypt;
         }
     }
     $_SESSION['install']['CreateUser'] = array('username' => $post['username'], 'email' => $post['email'], 'nickname' => $post['nickname']);
     require_once JAWS_PATH . 'include/Jaws/DB.php';
     $objDatabase = Jaws_DB::getInstance('default', $_SESSION['install']['Database']);
     #if (Jaws_Error::IsError($objDatabase)) {
     #   return new Jaws_Error("There was a problem connecting to the database, please check the details and try again.", 0, JAWS_ERROR_WARNING);
     #}
     require_once JAWS_PATH . 'include/Jaws.php';
     $GLOBALS['app'] = jaws();
     $GLOBALS['app']->Registry->Init();
     $GLOBALS['app']->loadPreferences(array('language' => $_SESSION['install']['language']), false);
     Jaws_Translate::getInstance()->LoadTranslation('Install', JAWS_COMPONENT_INSTALL);
     require_once JAWS_PATH . 'include/Jaws/User.php';
     $userModel = new Jaws_User();
     $userInfo = $userModel->GetUser($post['username']);
     if (!Jaws_Error::IsError($userInfo)) {
         //username exists
         if (isset($userInfo['username'])) {
             _log(JAWS_LOG_DEBUG, "Update existing user");
             $res = $userModel->UpdateUser($userInfo['id'], array('username' => $post['username'], 'nickname' => $post['nickname'], 'email' => $post['email'], 'password' => $post['password']));
         } else {
             _log(JAWS_LOG_DEBUG, "Adding first/new admin user to Jaws");
             $res = $userModel->AddUser(array('username' => $post['username'], 'nickname' => $post['nickname'], 'email' => $post['email'], 'password' => $post['password'], 'superadmin' => true));
         }
     } else {
         $res = $userInfo;
     }
     if (Jaws_Error::IsError($res)) {
         _log(JAWS_LOG_DEBUG, "There was a problem while creating your user:");
         _log(JAWS_LOG_DEBUG, $res->GetMessage());
         return new Jaws_Error(_t('INSTALL_USER_RESPONSE_CREATE_FAILED'), 0, JAWS_ERROR_ERROR);
     }
     return true;
 }