Example #1
0
 /**
  * Método que efetua o login de usuários de acordo com as querys informadas.
  * Método usado somente para login via token
  * @param strin $query A query a ser executada para o login
  * @return booeal Retorna TRUE caso tenha efetuado login ou FALSE em caso de falha
  */
 private function loginTokens($query)
 {
     $ret = FALSE;
     if (is_string($query)) {
         $busca = $this->testeExiste($query);
     } else {
         $busca = FALSE;
     }
     $busca = $this->testeExiste($query);
     if ($busca) {
         $user = $busca->fetchObject();
         $usuario = new Usuario();
         $usuario->setLoginToken(TRUE);
         $usuario->set_login($user->email);
         $usuario->set_senha($user->senha);
         $usuarioLogado = $usuario->loginUsuario(0, 0, 0, Loader::data("config", "site", "ano_letivo"));
         $sqlUsuario = new SqlUsuario();
         if ($usuarioLogado) {
             //Definindo o tipo do vinculo
             $result = $sqlUsuario->get_tipo_usuario_vin($usuarioLogado->get_idUsuario(), $user->fk_tipo_usuario);
             $pkUsuarioTipoVin = $result[0]['pk_usuario_tipo_vin'];
             foreach ($usuarioLogado->get_tipoUsuario() as $tipo) {
                 //Cria um loop com a array dos eventuais tipos de usuário que o mesmo está cadastrado
                 if ($user->fk_tipo_usuario == $tipo->get_idTipoUsuario()) {
                     //Setamos o tipo de usuário ativo
                     $usuarioLogado->set_tipoUsuarioAtivo($tipo);
                     //Seta a pk_tipo_usuario_vin
                     $usuarioLogado->set_idUsuarioTipoVin($pkUsuarioTipoVin);
                     $_SESSION['idTipoUsuario'] = $user->fk_tipo_usuario;
                     //Definindo os dados da sessão
                     $_SESSION['usuario'] = serialize($usuarioLogado);
                     unset($_SESSION['erroUsuarioSenha']);
                     $ret = $usuarioLogado;
                     break;
                 }
             }
         } else {
             $sqlUsuario->log_erro_login($user->email, "via token:" . $user->senha);
         }
     }
     return $ret;
 }
Example #2
0
 public function logar()
 {
     // Se foram enviados dados via post
     if ($_SERVER['REQUEST_METHOD'] == "POST") {
         try {
             $data = $this->getParametroVisao();
             $_SESSION['formLogin'] = $this->input->post('formLogin');
             // valida o formulário
             // View::validarFormAntInjection('formLogin');
             // Se o número de erros for maior ou igual a 3
             if ($_SESSION['erroUsuarioSenha']['qtd'] >= 3) {
                 // Se a variável 'captcha' enviada for diferente da variável armazenada na sessão
                 if (!$this->input->post('captcha') || strtolower($this->input->post('captcha')) != strtolower($_SESSION['erroUsuarioSenha']['codigo'])) {
                     // grava na base o hora da última tentativa fracassada assim como incremeta o número de tentativas frustradas
                     $sqlUsuario = new SqlUsuario();
                     $sqlUsuario->log_erro_login($this->input->post('email'), $this->input->post('senha'));
                     // incremeta o número de erros
                     $_SESSION['erroUsuarioSenha']['qtd'] += 1;
                     // envia a mensagem de erro e redireciona a página de login, abortando o processamento
                     $this->session->set_flashdata('msgLogin', 'Código inválido!');
                     redirect('usuario/login_w');
                     exit;
                 }
             }
             // Se a operação não for abortada no passo anterior, prossegue com a criação de uma instância da classe 'usuario'
             $usuario = new Usuario();
             $_SESSION['usuario'] = serialize($usuario);
             // Seta as variáveis email e senha e faz o tratamento prévio de caracteres
             $usuario->set_login($this->input->post('email'), 'Email e ou senha inválidos!');
             $usuario->set_senha($this->input->post('senha'), 'Email e ou senha inválidos!');
             //recebe pk redirecionada do qrCode
             $uriQrcode = $this->input->post('qrCode');
             // Efetua o login
             $usuario = $usuario->loginUsuario(0, 0, 0, $data['ano_letivo'], $_SERVER['REMOTE_ADDR']);
             // Se o retorno for false
             if (!$usuario) {
                 // incrementa a quantidade de erro
                 $_SESSION['erroUsuarioSenha']['qtd'] += 1;
                 // grava na base o hora da última tentativa fracassada assim como incremeta o número de tentativas frustradas
                 $sqlUsuario = new SqlUsuario();
                 $sqlUsuario->log_erro_login($this->input->post('email'), $this->input->post('senha'));
                 // envia a mensagem de erro
                 $this->session->set_flashdata('msg', '<div class="alert erro">Email e/ou senha incorretos! Lembramos que o sistema diferencia maiúsculas e minúsculas. Se prefefir redefinir sua senha, <a class="link" href="' . base_url() . 'usuario/login_w/lembrete">clique aqui</a></div>');
                 // Redireciona para a página de login e aborta a operação
                 header('location:' . base_url() . 'usuario/login_w/index/' . $uriQrcode);
                 exit;
             }
             // Se não houver abortamento no passo anterior, prossegue com a serialização do objeto $usuario
             $_SESSION['usuario'] = serialize($usuario);
             $_SESSION['qrCode'] = $uriQrcode;
             // reseta um eventual erro anterior
             unset($_SESSION['erroUsuarioSenha']);
             // redireciona para a página home da área restrita
             header('location:' . base_url() . 'extranet/home/index/' . $uriQrcode);
             exit;
         } catch (Exception $e) {
             // grava na base o hora da última tentativa fracassada assim como incremeta o número de tentativas frustradas
             $sqlUsuario = new SqlUsuario();
             $sqlUsuario->log_erro_login($this->input->post('email'), $this->input->post('senha'));
             echo $this->session->set_flashdata('msg', $e->getMessage());
             redirect('usuario/login_w');
             exit;
         }
     }
 }