/** * Obtener los datos para la ficha de tokens de API */ public function getToken() { $this->view->addTemplate('tokens'); $token = \SP\ApiTokens::getTokens($this->view->itemId, true); $this->view->assign('users', \SP\DB::getValuesForSelect('usrData', 'user_id', 'user_name')); $this->view->assign('actions', \SP\ApiTokens::getTokenActions()); $this->view->assign('token', $token); $this->view->assign('gotData', is_object($token)); if ($this->view->isView === true) { $msg = sprintf('%s ;;Usuario: %s', _('Token de autorización visualizado'), $token->user_login); Log::writeNewLogAndEmail(_('Autorizaciones'), $msg); } }
/** * Establecer variables comunes del formulario para todos los interfaces */ private function setCommonData() { if ($this->isGotData()) { // $this->view->assign('accountParentId', $this->getAccount()->getAccountParentId()); $this->view->assign('accountIsHistory', $this->getAccount()->getAccountIsHistory()); $this->view->assign('accountOtherUsers', $this->getAccount()->getAccountUsersId()); $this->view->assign('accountOtherUsersName', UserAccounts::getUsersNameForAccount($this->getId())); $this->view->assign('accountOtherGroups', $this->getAccount()->getAccountUserGroupsId()); $this->view->assign('accountOtherGroupsName', \SP\Groups::getGroupsNameForAccount($this->getId())); $this->view->assign('changesHash', $this->getAccount()->calcChangesHash()); $this->view->assign('chkUserEdit', $this->view->accountData->account_otherUserEdit ? 'checked' : ''); $this->view->assign('chkGroupEdit', $this->view->accountData->account_otherGroupEdit ? 'checked' : ''); $this->view->assign('historyData', \SP\AccountHistory::getAccountList($this->getAccount()->getAccountParentId())); $this->view->assign('isModified', $this->view->accountData->account_dateEdit && $this->view->accountData->account_dateEdit != '0000-00-00 00:00:00'); $this->view->assign('maxFileSize', round(\SP\Config::getValue('files_allowed_size') / 1024, 1)); $this->view->assign('filesAllowedExts', \SP\Config::getValue('files_allowed_exts')); $this->view->assign('filesDelete', $this->_action == Acl::ACTION_ACC_EDIT ? 1 : 0); } $this->view->assign('accountParentId', Session::getLastAcountId()); $this->view->assign('categories', \SP\DB::getValuesForSelect('categories', 'category_id', 'category_name')); $this->view->assign('customers', \SP\DB::getValuesForSelect('customers', 'customer_id', 'customer_name')); $this->view->assign('otherUsers', \SP\DB::getValuesForSelect('usrData', 'user_id', 'user_name')); $this->view->assign('otherGroups', \SP\DB::getValuesForSelect('usrGroups', 'usergroup_id', 'usergroup_name')); $this->getCustomFieldsForItem(); }
/** * Obtener la pestaña de LDAP * @return bool */ public function getLdapTab() { $this->setAction(self::ACTION_CFG_LDAP); if (!$this->checkAccess(self::ACTION_CFG_GENERAL)) { return; } $this->view->addTemplate('ldap'); $this->view->assign('chkLdap', \SP\Config::getValue('ldap_enabled') ? 'checked="checked"' : ''); $this->view->assign('chkLdapADS', \SP\Config::getValue('ldap_ads') ? 'checked="checked"' : ''); $this->view->assign('ldapIsAvailable', \SP\Util::ldapIsAvailable()); $this->view->assign('ldapServer', \SP\Config::getValue('ldap_server')); $this->view->assign('ldapBindUser', \SP\Config::getValue('ldap_binduser')); $this->view->assign('ldapBindPass', \SP\Config::getValue('ldap_bindpass')); $this->view->assign('ldapBase', \SP\Config::getValue('ldap_base')); $this->view->assign('ldapGroup', \SP\Config::getValue('ldap_group')); $this->view->assign('groups', \SP\DB::getValuesForSelect('usrGroups', 'usergroup_id', 'usergroup_name')); $this->view->assign('profiles', \SP\DB::getValuesForSelect('usrProfiles', 'userprofile_id', 'userprofile_name')); $this->view->assign('ldapDefaultGroup', \SP\Config::getValue('ldap_defaultgroup')); $this->view->assign('ldapDefaultProfile', \SP\Config::getValue('ldap_defaultprofile')); $this->view->assign('actionId', $this->getAction(), 'ldap'); $this->view->append('tabs', array('title' => _('LDAP'))); $this->view->assign('tabIndex', $this->getTabIndex(), 'ldap'); }
/** * Inicializar la aplicación. * Esta función inicializa las variables de la aplicación y muestra la página * según el estado en el que se encuentre. */ public static function start() { self::setIncludes(); if (version_compare(PHP_VERSION, '5.1.2', '>=')) { // Registro del cargador de clases (PHP >= 5.1.2) if (version_compare(PHP_VERSION, '5.3.0', '>=')) { spl_autoload_register('SP\\Init::loadClass', true); } else { spl_autoload_register(array('SP\\Init', 'loadClass')); } } else { /** * Fall back to traditional autoload for old PHP versions * * @param string $classname The name of the class to load */ function __autoload($classname) { \SP\Init::loadClass($classname); } } error_reporting(E_ALL | E_STRICT); if (defined('DEBUG') && DEBUG) { ini_set('display_errors', 1); } date_default_timezone_set('UTC'); // Intentar desactivar magic quotes. if (get_magic_quotes_gpc() == 1) { ini_set('magic_quotes_runtime', 0); } // Copiar la cabecera http de autentificación para apache+php-fcgid if (isset($_SERVER['HTTP_XAUTHORIZATION']) && !isset($_SERVER['HTTP_AUTHORIZATION'])) { $_SERVER['HTTP_AUTHORIZATION'] = $_SERVER['HTTP_XAUTHORIZATION']; } // Establecer las cabeceras de autentificación para apache+php-cgi if (isset($_SERVER['HTTP_AUTHORIZATION']) && preg_match('/Basic\\s+(.*)$/i', $_SERVER['HTTP_AUTHORIZATION'], $matches)) { list($name, $password) = explode(':', base64_decode($matches[1]), 2); $_SERVER['PHP_AUTH_USER'] = strip_tags($name); $_SERVER['PHP_AUTH_PW'] = strip_tags($password); } // Establecer las cabeceras de autentificación para que apache+php-cgi funcione si la variable es renombrada por apache if (isset($_SERVER['REDIRECT_HTTP_AUTHORIZATION']) && preg_match('/Basic\\s+(.*)$/i', $_SERVER['REDIRECT_HTTP_AUTHORIZATION'], $matches)) { list($name, $password) = explode(':', base64_decode($matches[1]), 2); $_SERVER['PHP_AUTH_USER'] = strip_tags($name); $_SERVER['PHP_AUTH_PW'] = strip_tags($password); } // Establecer el modo debug si una sesión de xdebug está activa if (isset($_COOKIE['XDEBUG_SESSION']) && !defined('DEBUG')) { define('DEBUG', true); } // Establecer el nivel de logging if (defined('DEBUG') && DEBUG) { // error_log('sysPass DEBUG'); error_reporting(E_ALL); ini_set('display_errors', 'On'); } else { error_reporting(E_ALL & ~(E_DEPRECATED | E_STRICT | E_NOTICE)); ini_set('display_errors', 'Off'); } // Cargar las extensiones self::loadExtensions(); // Iniciar la sesión de PHP self::startSession(); // Establecer las rutas de la aplicación self::setPaths(); // Cargar el lenguaje Language::setLanguage(); // Establecer el tema de sysPass Themes::setTheme(); // Comprobar si es necesario cambiar a HTTPS self::checkHttps(); // Comprobar si es necesario inicialización if (self::checkInitSourceInclude()) { return; } // Comprobar la configuración self::checkConfig(); // Comprobar si está instalado self::checkInstalled(); // Comprobar si el modo mantenimiento está activado self::checkMaintenanceMode(); // Comprobar si la Base de datos existe if (!DB::checkDatabaseExist()) { self::initError(_('Error en la verificación de la base de datos')); } // Comprobar si es cierre de sesión self::checkLogout(); // Comprobar la versión y actualizarla self::checkVersion(); // Inicializar la sesión self::initSession(); // Comprobar acciones en URL self::checkPreLoginActions(); // Intentar establecer el tiempo de vida de la sesión en PHP $sessionLifeTime = self::getSessionLifeTime(); @ini_set('gc_maxlifetime', (string) $sessionLifeTime); if (!Config::getValue("installed", false)) { Session::setUserId(''); } if (isset($_SERVER['PHP_AUTH_USER']) && Session::getUserId() && $_SERVER['PHP_AUTH_USER'] != Session::getUserId()) { self::logout(); } // Manejar la redirección para usuarios logeados if (Request::analyze('redirect_url', '', true) && self::isLoggedIn()) { $location = 'index.php'; // Denegar la regirección si la URL contiene una @ // Esto previene redirecciones como ?redirect_url=:user@domain.com if (strpos($location, '@') === false) { header('Location: ' . $location); return; } } // Volver a cargar la configuración si se recarga la página if (Request::checkReload()) { Config::readConfig(); // Restablecer el idioma y el tema visual Language::setLanguage(); Themes::setTheme(); } if (self::isLoggedIn() || Request::analyze('isAjax', false, true)) { return; } // El usuario no está logado y no es una petición, redirigir al login self::goLogin(); }
/** * Obtener los datos para la caja de búsqueda */ public function getSearchBox() { $this->view->addTemplate('searchbox'); $this->view->assign('customers', \SP\DB::getValuesForSelect('customers', 'customer_id', 'customer_name')); $this->view->assign('categories', \SP\DB::getValuesForSelect('categories', 'category_id', 'category_name')); }
/** * Inicializar la aplicación. * Esta función inicializa las variables de la aplicación y muestra la página * según el estado en el que se encuentre. */ public static function start() { self::setIncludes(); if (version_compare(PHP_VERSION, '5.1.2', '>=')) { // Registro del cargador de clases (PHP >= 5.1.2) if (version_compare(PHP_VERSION, '5.3.0', '>=')) { spl_autoload_register('SP\\Init::loadClass', true); } else { spl_autoload_register(array('SP\\Init', 'loadClass')); } } else { /** * Fall back to traditional autoload for old PHP versions * * @param string $classname The name of the class to load */ function __autoload($classname) { \SP\Init::loadClass($classname); } } date_default_timezone_set('UTC'); // Intentar desactivar magic quotes. if (get_magic_quotes_gpc() == 1) { ini_set('magic_quotes_runtime', 0); } // Variables de autentificación self::setAuth(); // Establecer el nivel de logging self::setLogging(); // Cargar las extensiones self::loadExtensions(); // Iniciar la sesión de PHP self::startSession(); // Establecer las rutas de la aplicación self::setPaths(); // Cargar el lenguaje Language::setLanguage(); // Establecer el tema de sysPass Themes::setTheme(); // Comprobar si es necesario cambiar a HTTPS self::checkHttps(); // Comprobar si es necesario inicialización if (self::checkInitSourceInclude()) { return; } // Comprobar la configuración self::checkConfig(); // Comprobar si está instalado self::checkInstalled(); // Comprobar si el modo mantenimiento está activado self::checkMaintenanceMode(); // Comprobar si la Base de datos existe if (!DB::checkDatabaseExist()) { self::initError(_('Error en la verificación de la base de datos')); } // Comprobar si es cierre de sesión self::checkLogout(); // Comprobar la versión y actualizarla self::checkVersion(); // Inicializar la sesión self::initSession(); // Comprobar acciones en URL self::checkPreLoginActions(); // Intentar establecer el tiempo de vida de la sesión en PHP @ini_set('gc_maxlifetime', (string) self::getSessionLifeTime()); if (!Config::getValue("installed", false)) { Session::setUserId(''); } // Comprobar si se ha identificado mediante el servidor web y el usuario coincide if (self::isLoggedIn() && !Auth::checkServerAuthUser(Session::getUserLogin())) { self::logout(); } // Manejar la redirección para usuarios logeados if (Request::analyze('redirect_url', '', true) && self::isLoggedIn()) { $location = 'index.php'; // Denegar la redirección si la URL contiene una @ // Esto previene redirecciones como ?redirect_url=:user@domain.com if (strpos($location, '@') === false) { header('Location: ' . $location); return; } } // Volver a cargar la configuración si se recarga la página if (Request::checkReload()) { Config::readConfig(); // Restablecer el idioma y el tema visual Language::setLanguage(); Themes::setTheme(); } if (self::isLoggedIn() || Request::analyze('isAjax', false, true)) { return; } // El usuario no está logado y no es una petición, redirigir al login self::goLogin(); }
/** * Eliminar token * * @throws SPException */ public function deleteToken() { $query = 'DELETE FROM authTokens WHERE authtoken_id = :id LIMIT 1'; $data['id'] = $this->_tokenId; try { DB::getQuery($query, __FUNCTION__, $data); } catch (SPException $e) { throw new SPException(SPException::SP_CRITICAL, _('Error interno')); } $Log = new Log(_('Eliminar Autorización')); $Log->addDescription(sprintf('%d', $this->_tokenId)); $Log->writeLog(); Email::sendEmail($Log); }