Example #1
0
 protected function private_core()
 {
     $this->agente = new agente();
     $fslog = new fs_log();
     $this->historial = $fslog->all_by('login');
     if (isset($_POST['nnick'])) {
         $nu = $this->user->get($_POST['nnick']);
         if ($nu) {
             $this->new_error_msg('El usuario <a href="' . $nu->url() . '">ya existe</a>.');
         } else {
             if (isset($_POST['nadmin']) and !$this->user->admin) {
                 $this->new_error_msg('Solamente un administrador puede crear otro administrador.');
             } else {
                 $nu = new fs_user();
                 $nu->nick = $_POST['nnick'];
                 if ($nu->set_password($_POST['npassword'])) {
                     $nu->admin = isset($_POST['nadmin']);
                     if (isset($_POST['ncodagente'])) {
                         if ($_POST['ncodagente'] != '') {
                             $nu->codagente = $_POST['ncodagente'];
                         }
                     }
                     if ($nu->save()) {
                         Header('location: index.php?page=admin_user&snick=' . $nu->nick);
                     } else {
                         $this->new_error_msg("¡Imposible guardar el usuario!");
                     }
                 }
             }
         }
     } else {
         if (isset($_GET['delete'])) {
             $nu = $this->user->get($_GET['delete']);
             if ($nu) {
                 if (FS_DEMO) {
                     $this->new_error_msg('En el modo <b>demo</b> no se pueden eliminar usuarios.
               Esto es así para evitar malas prácticas entre usuarios que prueban la demo.');
                 } else {
                     if ($nu->admin and !$this->user->admin) {
                         $this->new_error_msg("No tienes permiso para eliminar a un administrador.");
                     } else {
                         if (!$this->user->allow_delete_on(__CLASS__)) {
                             $this->new_error_msg("No tienes permiso para eliminar usuarios.");
                         } else {
                             if ($nu->delete()) {
                                 $this->new_message("Usuario " . $nu->nick . " eliminado correctamente.");
                             } else {
                                 $this->new_error_msg("¡Imposible eliminar al usuario!");
                             }
                         }
                     }
                 }
             } else {
                 $this->new_error_msg("¡Usuario no encontrado!");
             }
         }
     }
 }
 protected function process()
 {
     $this->show_fs_toolbar = FALSE;
     $this->agente = new agente();
     $fslog = new fs_log();
     $this->historial = $fslog->all_by('login');
     if (isset($_POST['nnick'])) {
         $nu = $this->user->get($_POST['nnick']);
         if ($nu) {
             Header('location: ' . $nu->url());
         } else {
             $nu = new fs_user();
             $nu->nick = $_POST['nnick'];
             if ($nu->set_password($_POST['npassword'])) {
                 $nu->admin = isset($_POST['nadmin']);
                 if (isset($_POST['ncodagente'])) {
                     if ($_POST['ncodagente'] != '') {
                         $nu->codagente = $_POST['ncodagente'];
                     }
                 }
                 if ($nu->save()) {
                     Header('location: index.php?page=admin_user&snick=' . $nu->nick);
                 } else {
                     $this->new_error_msg("¡Imposible guardar el usuario!");
                 }
             }
         }
     } else {
         if (isset($_GET['delete'])) {
             $nu = $this->user->get($_GET['delete']);
             if ($nu) {
                 if (FS_DEMO) {
                     $this->new_error_msg('En el modo <b>demo</b> no se pueden eliminar usuarios.
               Esto es así para evitar malas prácticas entre usuarios que prueban la demo.');
                 } else {
                     if ($nu->delete()) {
                         $this->new_message("Usuario " . $nu->nick . " eliminado correctamente.");
                     } else {
                         $this->new_error_msg("¡Imposible eliminar al usuario!");
                     }
                 }
             } else {
                 $this->new_error_msg("¡Usuario no encontrado!");
             }
         }
     }
 }
Example #3
0
 /**
  * Establece un ejercicio como predeterminado para este usuario.
  * Función obsoleta.
  * @param type $cod el código del ejercicio
  */
 protected function save_codejercicio($cod)
 {
     if ($cod != $this->user->codejercicio) {
         $this->default_items->set_codejercicio($cod);
         $this->user->codejercicio = $cod;
         if (!$this->user->save()) {
             $this->new_error_msg('Error al establecer el ejercicio ' . $cod . ' como ejercicio predeterminado para este usuario.');
         }
     }
 }
 /**
  * Establecemos los elementos por defecto, pero no se guardan.
  * Para guardarlos hay que usar las funciones fs_controller::save_lo_que_sea().
  * La clase fs_default_items sólo se usa para indicar valores
  * por defecto a los modelos.
  */
 private function set_default_items()
 {
     /// gestionamos la página de inicio
     if (isset($_GET['default_page'])) {
         if ($_GET['default_page'] == 'FALSE') {
             $this->default_items->set_default_page(NULL);
             $this->user->fs_page = NULL;
         } else {
             $this->default_items->set_default_page($this->page->name);
             $this->user->fs_page = $this->page->name;
         }
         $this->user->save();
     } else {
         if (is_null($this->default_items->default_page())) {
             $this->default_items->set_default_page($this->user->fs_page);
         }
     }
     if (is_null($this->default_items->showing_page())) {
         $this->default_items->set_showing_page($this->page->name);
     }
     $this->default_items->set_codejercicio($this->empresa->codejercicio);
     if (isset($_COOKIE['default_almacen'])) {
         $this->default_items->set_codalmacen($_COOKIE['default_almacen']);
     } else {
         $this->default_items->set_codalmacen($this->empresa->codalmacen);
     }
     if (isset($_COOKIE['default_formapago'])) {
         $this->default_items->set_codpago($_COOKIE['default_formapago']);
     } else {
         $this->default_items->set_codpago($this->empresa->codpago);
     }
     if (isset($_COOKIE['default_impuesto'])) {
         $this->default_items->set_codimpuesto($_COOKIE['default_impuesto']);
     }
     $this->default_items->set_codpais($this->empresa->codpais);
     $this->default_items->set_codserie($this->empresa->codserie);
     $this->default_items->set_coddivisa($this->empresa->coddivisa);
 }
 /**
  * Devuelve TRUE si el usuario realmente tiene acceso a esta página
  * @return type
  */
 private function log_in()
 {
     $ips = array();
     if ($this->ip_baneada($ips)) {
         $this->banear_ip($ips);
         $this->new_error_msg('Tu IP ha sido baneada. Tendrás que esperar 10 minutos antes de volver a intentar entrar.');
     } else {
         if (isset($_POST['user']) and isset($_POST['password'])) {
             if (FS_DEMO) {
                 $user = $this->user->get($_POST['user']);
                 if (!$user) {
                     $user = new fs_user();
                     $user->nick = $_POST['user'];
                     $user->set_password('demo');
                     $user->admin = TRUE;
                     /// creamos un agente para asociarlo
                     $agente = new agente();
                     $agente->codagente = $agente->get_new_codigo();
                     $agente->nombre = $_POST['user'];
                     $agente->apellidos = 'Demo';
                     if ($agente->save()) {
                         $user->codagente = $agente->codagente;
                     }
                 }
                 $user->new_logkey();
                 if ($user->save()) {
                     setcookie('user', $user->nick, time() + FS_COOKIES_EXPIRE);
                     setcookie('logkey', $user->log_key, time() + FS_COOKIES_EXPIRE);
                     $this->user = $user;
                     $this->load_menu();
                 }
             } else {
                 $user = $this->user->get($_POST['user']);
                 $password = strtolower($_POST['password']);
                 if ($user) {
                     if ($user->password == sha1($password)) {
                         $user->new_logkey();
                         if ($user->save()) {
                             setcookie('user', $user->nick, time() + FS_COOKIES_EXPIRE);
                             setcookie('logkey', $user->log_key, time() + FS_COOKIES_EXPIRE);
                             $this->user = $user;
                             $this->load_menu();
                         } else {
                             $this->new_error_msg('Imposible guardar los datos de usuario.');
                         }
                         $fslog = new fs_log();
                         $fslog->usuario = $user->nick;
                         $fslog->tipo = 'login';
                         $fslog->detalle = 'Login correcto.';
                         $fslog->ip = $user->last_ip;
                         $fslog->save();
                     } else {
                         $this->new_error_msg('¡Contraseña incorrecta!');
                         $this->banear_ip($ips);
                     }
                 } else {
                     $this->new_error_msg('El usuario ' . $_POST['user'] . ' no existe!');
                     $this->user->clean_cache(TRUE);
                     $this->cache->clean();
                 }
             }
         } else {
             if (isset($_COOKIE['user']) and isset($_COOKIE['logkey'])) {
                 $user = $this->user->get($_COOKIE['user']);
                 if ($user) {
                     if ($user->log_key == $_COOKIE['logkey']) {
                         $user->logged_on = TRUE;
                         $user->update_login();
                         $this->user = $user;
                         $this->load_menu();
                     } else {
                         if (!is_null($user->log_key)) {
                             $this->new_message('¡Cookie no válida! Alguien ha accedido a esta cuenta desde otro PC con IP: ' . $user->last_ip . ". Si has sido tú, ignora este mensaje.");
                             $this->log_out();
                         }
                     }
                 } else {
                     $this->new_error_msg('¡El usuario ' . $_COOKIE['user'] . ' no existe!');
                     $this->log_out();
                     $this->user->clean_cache(TRUE);
                     $this->cache->clean();
                 }
             }
         }
     }
     return $this->user->logged_on;
 }