Exemplo n.º 1
0
 /**
  * @param      $actionId  int El id de la acción
  * @param      $authToken string El token de seguridad
  * @param null $userPass  string La clave del usuario
  * @throws SPException
  */
 public function __construct($actionId, $authToken, $userPass = null)
 {
     if (!Auth::checkAuthToken($actionId, $authToken)) {
         throw new SPException(SPException::SP_CRITICAL, _('Acceso no permitido'));
     }
     $this->_userId = ApiTokens::getUserIdForToken($authToken);
     $this->_actionId = $actionId;
     $this->_auth = true;
     if (!is_null($userPass)) {
         $userLogin = UserUtil::getUserLoginById($this->_userId);
         $User = new User();
         $User->setUserId($this->_userId);
         $User->setUserLogin($userLogin);
         $User->setUserPass($userPass);
         if (Auth::authUserMySQL($userLogin, $userPass) && !UserUtil::checkUserIsDisabled($userLogin) && UserPass::checkUserMPass($User) && UserPass::checkUserUpdateMPass($userLogin) && !$User->isUserChangePass()) {
             $this->_mPass = $User->getUserMPass(true);
         } else {
             throw new SPException(SPException::SP_CRITICAL, _('Acceso no permitido'));
         }
     }
     Session::setUserId($this->_userId);
 }
Exemplo n.º 2
0
                // Autentificamos con la BBDD
                if (!SP\Auth::authUserMySQL($userLogin, $userPass)) {
                    $Log->addDescription(_('Login incorrecto'));
                    $Log->addDescription(sprintf('%s: %s', _('Usuario'), $userLogin));
                    $Log->writeLog();
                    SP\Response::printJSON(_('Usuario/Clave incorrectos'));
                }
            }
        }
    }
}
// Comprobar si concide el login con la autentificación del servidor web
if (!Auth::checkServerAuthUser($userLogin)) {
    $Log->addDescription(_('Login incorrecto'));
    $Log->addDescription(sprintf('%s: %s', _('Usuario'), $userLogin));
    $Log->addDescription(sprintf('%s: %s (%s)', _('Autentificación'), Auth::getServerAuthType(), Auth::getServerAuthUser()));
    $Log->writeLog();
    SP\Response::printJSON(_('Usuario/Clave incorrectos'));
}
// Comprobar si el usuario está deshabilitado
if (UserUtil::checkUserIsDisabled($userLogin)) {
    $Log->addDescription(_('Usuario deshabilitado'));
    $Log->addDescription(sprintf('%s: %s', _('Usuario'), $userLogin));
    $Log->writeLog();
    SP\Response::printJSON(_('Usuario deshabilitado'));
}
// Obtenemos los datos del usuario
if (!$User->getUserInfo()) {
    $Log->addDescription(_('Error al obtener los datos del usuario de la BBDD'));
    $Log->writeLog();
    SP\Response::printJSON(_('Error interno'));
Exemplo n.º 3
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();
 }