/**
  * Método principal
  */
 public function index()
 {
     $usuario = new Usuario();
     if (!$usuario->getInformacionUsuario(Session::get('id'))) {
         Flash::info('Lo sentimos pero no se ha podido establecer tu información');
         return Redirect::to('dashboard');
     }
     $perfil = $usuario->perfil;
     $app_ajax_old = $usuario->app_ajax;
     $tmp_usr = $usuario;
     if (Input::hasPost('usuario')) {
         $usuario = Usuario::setUsuario('update', Input::post('usuario'), array('repassword' => Input::post('repassword'), 'oldpassword' => Input::post('oldpassword'), 'id' => $usuario->id, 'login' => $usuario->login, 'perfil_id' => $usuario->perfil_id));
         if ($usuario) {
             Flash::valid('El usuario se ha actualizado correctamente.');
             if ($app_ajax_old != $usuario->app_ajax) {
                 Session::set('app_ajax', $usuario->app_ajax);
                 return APP_AJAX ? View::redirect(PUBLIC_PATH . 'sistema/mi_cuenta/') : Redirect::to('/sistema/mi_cuenta');
             }
             $usuario->perfil = $perfil;
         } else {
             $usuario = $tmp_usr;
         }
     }
     $this->temas = DwUtils::getFolders(dirname(APP_PATH) . '/public/css/backend/themes/');
     $this->usuario = $usuario;
     $this->page_title = 'Actualizar mis datos';
 }
Example #2
0
 /**
  * Inicializa el Logger
  */
 public static function initialize($name = '')
 {
     if (empty($name)) {
         self::$_logName = 'audit' . date('Y-m-d') . '.txt';
     }
     self::$_login = Session::get('login');
     self::$_ip = Session::get('ip') ? Session::get('ip') : DwUtils::getIp();
     self::$_route = Router::get('route');
 }
Example #3
0
 /**
  * Método para registrar un acceso
  * @param string $tipo Tipo de acceso acceso/salida
  * @param int $usuario Usuario que accede
  * @param string $ip  Dirección ip
  */
 public static function setAcceso($tipo, $usuario)
 {
     $usuario = Filter::get($usuario, 'numeric');
     $obj = new Acceso();
     $obj->usuario_id = $usuario;
     $obj->ip = DwUtils::getIp();
     $obj->tipo_acceso = $tipo == Acceso::ENTRADA ? 1 : 2;
     $obj->create();
 }
Example #4
0
 /**
  * Método para abrir y cerrar sesión
  * @param type $opt
  * @return boolean
  */
 public static function setSession($opt = 'open', $user = NULL, $pass = NULL, $mode = NULL)
 {
     if ($opt == 'close') {
         $usuario = Session::get('id');
         if (DwAuth::logout()) {
             //Registro la salida
             Acceso::setAcceso(Acceso::SALIDA, $usuario);
             return true;
         }
         DwMessage::error(DwAuth::getError());
     } else {
         if ($opt == 'open') {
             if (DwAuth::isLogged()) {
                 return true;
             } else {
                 if (DwForm::isValidToken()) {
                     if (DwAuth::login(array('login' => $user), array('password' => sha1($pass)), $mode)) {
                         $usuario = self::getUsuarioLogueado();
                         if ($usuario->id != 2 && $usuario->estado_usuario != EstadoUsuario::ACTIVO) {
                             DwAuth::logout();
                             DwMessage::error('Lo sentimos pero tu cuenta se encuentra inactiva. <br />Si esta información es incorrecta contacta al administrador del sistema.');
                             return false;
                         }
                         Session::set('nombre', $usuario->nombre);
                         Session::set('apellido', $usuario->apellido);
                         Session::set('foto', $usuario->fotografia);
                         Session::set("ip", DwUtils::getIp());
                         Session::set('perfil', $usuario->perfil);
                         Session::set('tema', $usuario->tema);
                         Session::set('app_ajax', $usuario->app_ajax);
                         //Registro el acceso
                         Acceso::setAcceso(Acceso::ENTRADA, $usuario->id);
                         DwMessage::info("¡ Bienvenido <strong>{$usuario->login}</strong> !.");
                         return true;
                     } else {
                         DwMessage::error(DwAuth::getError());
                     }
                 } else {
                     DwMessage::info('La llave de acceso ha caducado. <br />Por favor ' . Html::link('sistema/login/entrar/', 'recarga la página <b>aquí</b>'));
                 }
             }
         } else {
             DwMessage::error('No se ha podido establecer la sesión actual.');
         }
     }
     return false;
 }
Example #5
0
 /**
  * Método para abrir y cerrar sesión
  * @param type $opt
  * @return boolean
  */
 public static function setSession($opt = 'open', $user = NULL, $pass = NULL, $mode = NULL)
 {
     if ($opt == 'close') {
         //Cerrar Sesión
         $usuario = Session::get('id');
         if (DwAuth::logout()) {
             //Registro la salida
             Acceso::setAcceso(Acceso::SALIDA, $usuario);
             return TRUE;
         }
         Flash::error(DwAuth::getError());
     } else {
         if ($opt == 'open') {
             //Abrir Sesión
             if (DwAuth::isLogged()) {
                 return TRUE;
             } else {
                 if (DwForm::isValidToken()) {
                     //Si el formulario es válido
                     if (DwAuth::login(array('login' => $user), array('password' => $pass), $mode)) {
                         $usuario = self::getUsuarioLogueado();
                         if ($usuario->perfil_id != Perfil::SUPER_USUARIO && $usuario->estado_usuario != EstadoUsuario::ACTIVO) {
                             DwAuth::logout();
                             Flash::error('Lo sentimos pero tu cuenta se encuentra inactiva. <br />Si esta información es incorrecta contacta al administrador del sistema.');
                             return false;
                         }
                         Session::set("ip", DwUtils::getIp());
                         Session::set('perfil', $usuario->perfil);
                         //Registro el acceso
                         Acceso::setAcceso(Acceso::ENTRADA, $usuario->id);
                         Flash::info("¡ Bienvenido <strong>{$usuario->login}</strong> !.");
                         return TRUE;
                     } else {
                         Flash::error(DwAuth::getError());
                     }
                 } else {
                     Flash::info('La llave de acceso ha caducado. <br />Por favor ' . Html::link('sistema/login/entrar/', 'recarga la página <b>aquí</b>'));
                 }
             }
         } else {
             Flash::error('No se ha podido establecer la sesión actual.');
         }
     }
     return FALSE;
 }
 /**
  * Método principal
  */
 public function index()
 {
     $usuario = new Usuario();
     if (!$usuario->getInformacionUsuario(Session::get('id'))) {
         DwMessage::get('id_no_found');
         return DwRedirect::to('dashboard');
     }
     $perfil = $usuario->perfil;
     $app_ajax_old = $usuario->app_ajax;
     if (Input::hasPost('usuario')) {
         if (DwSecurity::isValidKey(Input::post('usuario_id_key'), 'form_key')) {
             ActiveRecord::beginTrans();
             //Guardo la persona
             $persona = Persona::setPersona('update', Input::post('persona'), array('id' => $usuario->persona_id));
             if ($persona) {
                 $usuario = Usuario::setUsuario('update', Input::post('usuario'), array('persona_id' => $persona->id, 'repassword' => Input::post('repassword'), 'oldpassword' => Input::post('oldpassword'), 'id' => $usuario->id, 'login' => $usuario->login, 'sucursal_id' => $usuario->sucursal_id, 'perfil_id' => $usuario->perfil_id));
                 if ($usuario) {
                     ActiveRecord::commitTrans();
                     DwMessage::valid('El usuario se ha actualizado correctamente.');
                     if ($app_ajax_old != $usuario->app_ajax) {
                         Session::set('app_ajax', $usuario->app_ajax);
                         if (APP_AJAX) {
                             View::redirect(PUBLIC_PATH . 'sistema/mi_cuenta/');
                         } else {
                             DwRedirect::to('sistema/mi_cuenta');
                         }
                     }
                     $usuario->perfil = $perfil;
                     $usuario->fotografia = $persona->fotografia;
                 }
             } else {
                 ActiveRecord::rollbackTrans();
             }
         }
     }
     $this->temas = DwUtils::getFolders(dirname(APP_PATH) . '/public/css/backend/themes/');
     $this->usuario = $usuario;
     $this->page_title = 'Actualizar mis datos';
 }
Example #7
0
 /**
  * Método que se utiliza para escribir un .ini 
  * Se eliminan las variables cuyo valor sea delete-var   
  * @param type $file Nombre del archivo (sin el .ini);
  * @param type $source 
  */
 public static function write($file, $data, $source = '')
 {
     $vars = self::read($file, '', TRUE);
     $org = APP_PATH . "config/{$file}.ini";
     //Archivo actual
     @chmod(APP_PATH . "config/{$file}.ini", 0777);
     //Le damos permisos para editar
     //Verifico si tiene copia del original, sino se crea
     if (!is_file(APP_PATH . "config/{$file}.org.ini")) {
         //@TODO Verificar que funcione en windows
         $org = APP_PATH . "config/{$file}.ini";
         $des = APP_PATH . "config/{$file}.org.ini";
         copy($org, $des);
         //Copio el actual y lo paso a original
         @chmod("{$des}", 0777);
         //Permisos
         unlink($org);
         //Elimino el original para crear el nuevo
         touch($des);
         //Creo el nuevo .ini
     }
     //Armo el archivo
     $ini = ";; Archivo de configuración" . PHP_EOL;
     $ini .= PHP_EOL;
     $ini .= "; Si desea conocer más acerca de este archivo" . PHP_EOL;
     $ini .= "; puede abrir el archivo {$file}.org.ini, el cual tendrá" . PHP_EOL;
     $ini .= "; la descripción de los parámetros aplicados." . PHP_EOL;
     $ini .= PHP_EOL;
     //Verifico si no está el source especificado para crearlo
     if (!array_key_exists($source, $vars)) {
         $vars[$source] = $data;
     }
     //Recorro el archivo para ver que variables cambian, se crean o se eliminan
     foreach ($vars as $seccion => $filas) {
         $ini .= "[{$seccion}]" . PHP_EOL;
         if (is_array($filas)) {
             foreach ($filas as $variable => $valor) {
                 if ($source && $seccion == $source) {
                     if (array_key_exists($variable, $data)) {
                         if ($data[$variable] != 'delete-var') {
                             //Verifico si es para eliminar la variable
                             $valor = $data[$variable];
                         } else {
                             continue;
                         }
                     }
                 }
                 $variable = Filter::get($variable, 'lower');
                 if (in_array($valor, array('On', 'Off')) || is_numeric($valor)) {
                     $ini .= "{$variable} = {$valor}" . PHP_EOL;
                 } else {
                     $valor = Filter::get($valor, 'htmlspecialchars');
                     $ini .= "{$variable} = {$valor}" . PHP_EOL;
                 }
             }
             if ($source && $seccion == $source) {
                 //Verifico si está en el source correspondiente
                 foreach ($data as $variable => $valor) {
                     //Verifico que variables se crean
                     if (!array_key_exists($variable, $filas)) {
                         $variable = DwUtils::getSlug($variable, '_');
                         if (in_array($valor, array('On', 'Off')) || is_numeric($valor)) {
                             $ini .= "{$variable} = {$valor}" . PHP_EOL;
                         } else {
                             $valor = Filter::get($valor, 'htmlspecialchars');
                             $ini .= "{$variable} = {$valor}" . PHP_EOL;
                         }
                     }
                 }
             }
         }
         $ini .= PHP_EOL;
     }
     $ini .= PHP_EOL;
     $rs = file_put_contents(APP_PATH . "config/{$file}.ini", $ini);
     @chmod(APP_PATH . "config/{$file}.ini", 0777);
     //Actualizo las variables de configuracion
     self::read($file, '', TRUE);
     return $rs;
 }
 /**
  * Método para editar
  */
 public function editar($key)
 {
     if (!($id = DwSecurity::isValidKey($key, 'upd_usuario', 'int'))) {
         return DwRedirect::toAction('listar');
     }
     $usuario = new Usuario();
     if (!$usuario->getInformacionUsuario($id)) {
         DwMessage::get('id_no_found');
         return DwRedirect::toAction('listar');
     }
     if (Input::hasPost('usuario')) {
         // if(DwSecurity::isValidKey(Input::post('usuario_id_key'), 'form_key')) {
         ActiveRecord::beginTrans();
         if (Usuario::setUsuario('update', Input::post('usuario'), array('repassword' => Input::post('repassword'), 'id' => $usuario->id, 'login' => $usuario->login))) {
             ActiveRecord::commitTrans();
             DwMessage::valid('El usuario se ha actualizado correctamente.');
             return DwRedirect::toAction('listar');
         } else {
             ActiveRecord::rollbackTrans();
         }
         //}
     }
     $this->temas = DwUtils::getFolders(dirname(APP_PATH) . '/public/css/backend/themes/');
     $this->usuario = $usuario;
     $this->page_title = 'Actualizar usuario';
 }
Example #9
0
 /**
  * Método para listar los items en el backend
  */
 public static function getItems()
 {
     $route = trim(Router::get('route'), '/');
     $html = '';
     foreach (self::$_items as $menu => $items) {
         $html .= '<div id="sub-menu-' . DwUtils::getSlug($menu) . '" class="subnav hidden">' . PHP_EOL;
         $html .= '<ul class="nav nav-pills">' . PHP_EOL;
         if (array_key_exists($menu, self::$_items)) {
             foreach (self::$_items[$menu] as $item) {
                 if (!APP_OFFICE && $item->id == Menu::SUCURSAL) {
                     continue;
                 }
                 $active = ($item->url == $route or $item->url == 'principal') ? 'active' : null;
                 $submenu = $item->getListadoSubmenuPorPerfil(self::$_entorno, self::$_perfil, $item->id);
                 if ($submenu) {
                     $html .= '<li class="' . $active . 'dropdown">';
                     $html .= DwHtml::link($item->url, ' <b class="fa fa-' . $main->icono . '"></b>' . $item->menu, array('class' => 'dropdown-toggle', 'role' => "button", "data-toggle" => "dropdown"), $item->icono);
                     $html .= '<ul class="dropdown-menu" role="menu">';
                     foreach ($submenu as $tmp) {
                         $html .= '<li>' . DwHtml::link($tmp->url, $tmp->menu, null, $tmp->icono) . '</li>' . PHP_EOL;
                     }
                     $html .= '</ul>' . PHP_EOL;
                     $html .= '</li>' . PHP_EOL;
                 } else {
                     $html .= '<li class="' . $active . '">' . DwHtml::link($item->url, $item->menu, null, $item->icono) . '</li>' . PHP_EOL;
                 }
             }
         }
         $html .= '</ul>' . PHP_EOL;
         $html .= '</div>' . PHP_EOL;
     }
     return $html;
 }
Example #10
0
 /**
  * Método para abrir y cerrar sesión
  * @param type $opt
  * @return boolean
  */
 public static function setSession($opt = 'open', $user = NULL, $pass = NULL, $mode = NULL)
 {
     if ($opt == 'close') {
         $usuario = Session::get('id');
         if (DwAuth::logout()) {
             //Registro la salida
             Acceso::setAcceso(Acceso::SALIDA, $usuario);
             return true;
         }
         DwMessage::error(DwAuth::getError());
     } else {
         if ($opt == 'open') {
             if (DwAuth::isLogged()) {
                 return true;
             } else {
                 if (DwForm::isValidToken()) {
                     if (DwAuth::login(array('login' => strtoupper($user)), array('password' => sha1(strtoupper($pass))), $mode)) {
                         $usuario = self::getUsuarioLogueado();
                         $usuval = UsuarioClave::clave_valida($usuario->id);
                         $usuintentos = self::usuario_intentos($usuario->id);
                         if ($usuario->estatus != 1) {
                             DwAuth::logout();
                             DwMessage::error('Lo sentimos pero tu cuenta se encuentra inactiva. <br />Si esta información es incorrecta contacta al administrador del sistema.');
                             return false;
                         }
                         if ($usuintentos == 2) {
                             // DwAuth::logout();
                             //Session::set('perfil_id', '8');
                             //Session::set('tema', 'default');
                             //Session::set('nombre1', $usuario->nombre1);
                             //Session::set('apellido1', $usuario->apellido1);
                             //return DwRedirect::to('sistema/usuario_clave/cambiar_clave');
                             //DwMessage::error('usuintentos. '.$usuintentos.'<br />Si esta información es incorrecta contacta al administrador del sistema.');
                         }
                         if ($usuval != 1) {
                             // DwAuth::logout();
                             Session::set('perfil_id', '8');
                             Session::set('tema', 'default');
                             Session::set('nombres', $usuario->nombres);
                             Session::set('apellidos', $usuario->apellidos);
                             return DwRedirect::to('sistema/usuario_clave/cambiar_clave');
                         }
                         Session::set('nombres', $usuario->nombres);
                         Session::set('apellidos', $usuario->apellidos);
                         Session::set('ip', DwUtils::getIp());
                         Session::set('perfil', $usuario->perfil);
                         Session::set('tema', $usuario->tema);
                         Session::set('app_ajax', $usuario->app_ajax);
                         //Registro el acceso
                         Acceso::setAcceso(Acceso::ENTRADA, $usuario->id);
                         DwMessage::info("¡ Bienvenido <strong>{$usuario->nombres} {$usuario->apellidos}</strong> !.");
                         return true;
                     } else {
                         DwMessage::error(DwAuth::getError());
                     }
                 } else {
                     DwMessage::info('La llave de acceso ha caducado. <br />Por favor ' . Html::link('sistema/login/entrar/', 'recarga la página <b>aquí</b>'));
                 }
             }
         } else {
             DwMessage::error('No se ha podido establecer la sesión actual.');
         }
     }
     return false;
 }
Example #11
0
 /**
  * Callback que se ejecuta antes de guardar/modificar
  */
 public function before_save()
 {
     $this->perfil = Filter::get($this->perfil, 'string');
     $this->plantilla = Filter::get($this->plantilla, 'string');
     $this->plantilla = !empty($this->plantilla) ? DwUtils::getSlug($this->plantilla, '_') : 'default';
     if (!empty($this->id)) {
         if ($this->id == Perfil::SUPER_USUARIO) {
             Flash::warning('Lo sentimos, pero este perfil no se puede editar.');
             return 'cancel';
         }
     }
     $path = APP_PATH . 'views/_shared/templates/backend/' . $this->plantilla . '.phtml';
     //Verifico si se encuentra el template
     if (!is_file($path)) {
         Flash::error('Lo sentimos, pero no hemos podidio ubicar la plantilla ' . $this->plantilla);
         return 'cancel';
     }
 }
Example #12
0
 /**
  * Método para editar
  */
 public function editar($key)
 {
     if (!($id = Security::getKey($key, 'edit_menu', 'int'))) {
         return Redirect::toAction('listar');
     }
     $usuario = new Usuario();
     if (!$usuario->getInformacionUsuario($id)) {
         Flash::error('Lo sentimos, no se ha podido establecer la información del usuario');
         return Redirect::toAction('listar');
     }
     if (Input::hasPost('usuario')) {
         ActiveRecord::beginTrans();
         if (Usuario::setUsuario('update', Input::post('usuario'), array('repassword' => Input::post('repassword'), 'id' => $id, 'login' => $usuario->login))) {
             ActiveRecord::commitTrans();
             Flash::valid('El usuario se ha actualizado correctamente.');
             return Redirect::toAction("editar/{$key}/");
         } else {
             ActiveRecord::rollbackTrans();
         }
     }
     $this->temas = DwUtils::getFolders(dirname(APP_PATH) . '/public/css/backend/themes/');
     $this->usuario = $usuario;
     $this->page_title = 'Actualizar usuario';
 }
Example #13
0
 /**
  * Método para leer las autidorías del sistema
  */
 public static function getAudit($fecha, $page = 0)
 {
     $audit = DwRead::file('audit' . $fecha);
     //Armo un nuevo array para ordenarlos
     $contador = 0;
     $new_log = array();
     if (!empty($audit)) {
         foreach ($audit as $key => $row) {
             $data = explode(']', $row);
             $new_log[$contador]['item'] = $contador;
             $new_log[$contador]['fecha'] = date("Y-m-d H:i:s", strtotime(trim($data[0], '[')));
             $new_log[$contador]['tipo'] = trim($data[1], '[');
             $new_log[$contador]['ruta'] = trim($data[2], '[');
             $new_log[$contador]['usuario'] = trim($data[3], '[');
             $new_log[$contador]['ip'] = trim($data[4], '[');
             $new_log[$contador]['descripcion'] = trim($data[5], '[');
             $contador++;
         }
     }
     $result = DwUtils::orderArray($new_log, 'item', TRUE);
     if ($page > 0) {
         //Pagino el array
         $paginate = new DwPaginate();
         return $paginate->paginate($result, "page: {$page}");
     }
     return $result;
 }
Example #14
0
 /**
  * Método que se ejecuta antes de guardar y/o modificar     
  */
 public function before_save()
 {
     $this->sucursal = Filter::get($this->sucursal, 'string');
     $this->slug = DwUtils::getSlug($this->sucursal);
     $this->direccion = Filter::get($this->direccion, 'string');
     $this->telefono = Filter::get($this->telefono, 'numeric');
     $this->celular = Filter::get($this->celular, 'numeric');
     $this->fax = Filter::get($this->fax, 'numeric');
     $conditions = "sucursal = '{$this->sucursal}' AND ciudad_id = {$this->ciudad_id} AND empresa_id = {$this->empresa_id}";
     $conditions .= isset($this->id) ? " AND id != {$this->id}" : '';
     if ($this->count("conditions: {$conditions}")) {
         DwMessage::error('Lo sentimos, pero ya existe una sucursal registrada con el mismo nombre y ciudad.');
         return 'cancel';
     }
 }