/** * 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/'); } } }
/** * 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 (MkcAuth::logout()) { //Registro la salida Acceso::setAcceso(Acceso::SALIDA, $usuario); return true; } MkcMessage::error(MkcAuth::getError()); } else { if ($opt == 'open') { if (MkcAuth::isLogged()) { return true; } else { if (MkcForm::isValidToken()) { if (MkcAuth::login(array('login' => $user), array('password' => sha1($pass)), $mode)) { $usuario = self::getUsuarioLogueado(); if ($usuario->id != 2 && $usuario->estado_usuario != EstadoUsuario::ACTIVO) { MkcAuth::logout(); MkcMessage::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('cargo', $usuario->cargo); Session::set('fotografia', $usuario->fotografia); Session::set("ip", MkcUtils::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); MkcMessage::info("¡ Bienvenido <strong>{$usuario->login}</strong> !."); return true; } else { MkcMessage::error(MkcAuth::getError()); } } else { MkcMessage::info('La llave de acceso ha caducado. <br />Por favor ' . Html::link('sistema/login/entrar/', 'recarga la página <b>aquí</b>')); } } } else { MkcMessage::error('No se ha podido establecer la sesión actual.'); } } return false; }
/** * @param string $_error */ public static function setError($error) { self::$_error = $error; }