/** * 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'; }
/** * 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'); }
/** * 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(); }
/** * 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; }
/** * 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'; }
/** * 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'; }
/** * 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; }
/** * 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; }
/** * 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'; } }
/** * 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'; }
/** * 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; }
/** * 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'; } }