/** * 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); }
/** * 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(); }
/** * 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; }
/** * 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'])); }
$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')) {
/** * 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(); }
/** * 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; }
/** * 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(); }
/** * 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(); }
/** * 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; }