/**
  * @author FreelaPHP schuindt
  * @version 1.0
  * @todo metodo que realiza o login do usuario no sistema
  *
  * 
  * */
 public function login()
 {
     try {
         $this->User->validate = $this->User->validate_login;
         $_POST = Utils::sanitazeArray($_POST);
         $this->User->data = $_POST[$this->User->name];
         $_SESSION = NULL;
         if ($this->User->validates()) {
             $this->User->data['senha'] = Authentication::password($this->User->data['senha']);
             /**
              * toda a minha validação de status da conta, usuario ou empresa está na procedure.
              * referencia MODEL/USUARIOS.PHP
              * metodo LOGAR
              */
             $usuario[$this->User->name] = $this->User->logar($this->User->data['email'], $this->User->data['senha']);
             /**
              * recuperar a empresa do funcionario
              */
             Session::initAuth();
             Session::createSession($usuario);
             /**
              * Usuario operador logar com a empresa já na session
              */
             if (in_array($usuario[$this->User->name]['roles_id'], array(2, 6, 7))) {
                 $modelFuncionario = new Funcionario();
                 $modelEmpresa = new Empresa();
                 $funcionario = $modelFuncionario->find('first', array('pessoas_id' => $usuario[$this->User->name]['pessoas_id']));
                 /**
                  * 
                  */
                 if (count($funcionario) > 0) {
                     $_SESSION[$modelFuncionario->name] = $funcionario[0][$modelFuncionario->name];
                 }
                 $empresa = $modelEmpresa->findEmpresa($funcionario[0][$modelFuncionario->name]['empresas_id']);
                 if (count($empresa) > 0) {
                     /**
                      * recuperando a conta empresa e guardando na sessao
                      */
                     $contatos = $modelEmpresa->contatosEmpresa($funcionario[0][$modelFuncionario->name]['empresas_id']);
                     $contaEmpresa = $modelEmpresa->contaEmpresa(md5($funcionario[0][$modelFuncionario->name]['empresas_id']));
                     $_SESSION[$modelEmpresa->name] = $empresa[0];
                     $_SESSION['ContaEmpresa'] = $contaEmpresa[0];
                     $_SESSION['Contato'] = $contatos;
                 }
             } else {
                 if (in_array($usuario[$this->User->name]['roles_id'], array(3, 4))) {
                     /**
                      * VERIFICO SE EXISTE APENAS UMA EMPRESA VINCULADA
                      */
                     $modelEmpresa = new Empresa();
                     $empresas = $modelEmpresa->empresasRelacionadas(md5($usuario[$this->User->name]['pessoas_id']), $usuario[$this->User->name]['roles_id']);
                     if (count($empresas) == 1) {
                         $_SESSION[$modelEmpresa->name] = $empresas[0];
                         /**
                          * recuperando a conta empresa e guardando na sessao
                          */
                         $contaEmpresa = $modelEmpresa->contaEmpresa(md5($_SESSION[$modelEmpresa->name]['empresas_id']));
                         $_SESSION['ContaEmpresa'] = $contaEmpresa[0];
                     }
                 }
             }
             $url = Router::url(array('Usuarios', 'painel'));
             echo json_encode(array('funcao' => "sucessoForm( 'login efetuado com sucesso!', '#UsuarioLoginForm' ); redirect('{$url}');"));
         } else {
             echo json_encode(array('erros' => $this->User->validateErros, 'form' => 'UsuarioLoginForm'));
         }
     } catch (Exception $ex) {
         $msg = $ex->getMessage();
         echo json_encode(array('funcao' => "infoErro('{$msg}', '#UsuarioLoginForm');"));
     }
 }