예제 #1
0
 /**
  * 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);
     }
 }
예제 #2
0
 /**
  * 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();
 }
예제 #3
0
 /**
  * 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');
 }
예제 #4
0
 /**
  * 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();
 }
예제 #5
0
 /**
  * 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'));
 }
예제 #6
0
 /**
  * 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();
 }
예제 #7
0
 /**
  * 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);
 }