/**
  * Callback que se ejecuta antes de los métodos de todos los controladores
  */
 protected final function initialize()
 {
     /**
      * Si el método de entrada es ajax, el tipo de respuesta es sólo la vista
      */
     if (Input::isAjax()) {
         View::template(null);
     }
     /**
      * Verifico que haya iniciado sesión
      */
     if (!MkcAuth::isLogged()) {
         //Verifico que no genere una redirección infinita
         if ($this->controller_name != 'login' && ($this->action_name != 'entrar' && $this->action_name != 'salir')) {
             MkcMessage::warning('No has iniciado sesión o ha caducado.');
             //Verifico que no sea una ventana emergente
             if ($this->module_name == 'reporte') {
                 View::error();
                 //TODO: crear el método error()
             } else {
                 MkcRedirect::toLogin('sistema/login/entrar/');
             }
             return false;
         }
     } else {
         if (MkcAuth::isLogged() && $this->controller_name != 'login') {
             $acl = new MkcAcl();
             //Cargo los permisos y templates
             if (APP_UPDATE && Session::get('perfil_id') != Perfil::SUPER_USUARIO) {
                 //Solo el super usuario puede hacer todo
                 if ($this->module_name != 'dashboard' && $this->controller_name != 'index') {
                     $msj = 'Estamos en labores de actualización y mantenimiento.';
                     $msj .= '<br />';
                     $msj .= 'El servicio se reanudará dentro de ' . APP_UPDATE_TIME;
                     if (Input::isAjax()) {
                         View::update();
                     } else {
                         MkcMessage::info($msj);
                         MkcRedirect::to("dashboard");
                     }
                     return FALSE;
                 }
             }
             if (!$acl->check(Session::get('perfil_id'))) {
                 MkcMessage::error('Tu no posees privilegios para acceder a <b>' . Router::get('route') . '</b>');
                 Input::isAjax() ? View::ajax() : View::select(NULL);
                 return false;
             }
             if (!defined('SKIN')) {
                 define('SKIN', Session::get('tema'));
             }
         }
     }
 }
 /**
  * Método para iniciar sesión
  */
 public function entrar()
 {
     if (Input::hasPost('login') && Input::hasPost('password') && Input::hasPost('mode')) {
         if (Usuario::setSession('open', Input::post('login'), Input::post('password'))) {
             return MkcRedirect::to('dashboard/');
         }
     } else {
         if (MkcAuth::isLogged()) {
             return MkcRedirect::to('dashboard/');
         }
     }
 }
 public function index()
 {
     if (Session::get('perfil_id') != Perfil::SUPER_USUARIO) {
         if (Session::get('perfil_id') != Perfil::OPERADOR) {
             MkcRedirect::to('dashboard/cliente');
         } else {
             MkcRedirect::to('dashboard/operador');
         }
     } else {
         MkcRedirect::to('dashboard/admin');
     }
 }
 /**
  * Método principal
  */
 public function index()
 {
     $usuario = new Usuario();
     if (!$usuario->getInformacionUsuario(Session::get('id'))) {
         MkcMessage::get('id_no_found');
         return MkcRedirect::to('dashboard');
     }
     $perfil = $usuario->perfil;
     $app_ajax_old = $usuario->app_ajax;
     if (Input::hasPost('usuario')) {
         if (MkcSecurity::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();
                     MkcMessage::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 {
                             MkcRedirect::to('sistema/mi_cuenta');
                         }
                     }
                     $usuario->perfil = $perfil;
                     $usuario->fotografia = $persona->fotografia;
                 }
             } else {
                 ActiveRecord::rollbackTrans();
             }
         }
     }
     $this->temas = MkcUtils::getFolders(dirname(APP_PATH) . '/public/css/backend/themes/');
     $this->usuario = $usuario;
     $this->page_title = 'Actualizar mis datos';
 }