public/src/Login/Login.php
private function checkUserInfo()
    {
        if (!$this->getResult()) {
            $dicionarios = Entity::dicionario(null, !0);

            $whereUser = [];
            foreach ($dicionarios as $entity => $dados) {
                if (empty($whereUser[$entity]) && !empty($dados['info']['user']) && $dados['info']['user'] === 1) {
                    $whereUser[$entity] = "WHERE usuarios_id = :id";
                    $where = "";
                    if (!empty($dados['info']['unique'])) {
                        foreach ($dados['info']['unique'] as $id)
                            $where .= (empty($where) ? " && (" : " || ") . $dados['dicionario'][$id]['column'] . " = '{$this->user}'";
                    }
                    $whereUser[$entity] .= $where . (!empty($where) ? ")" : "");
                }
            }

            $user = null;
            $read = new Read();
            $where = "WHERE password = :pass" . (!empty($this->setor) ? " && setor = '{$this->setor}'" : "");
            $read->exeRead(PRE . "usuarios", $where, "pass={$this->senha}");
            if ($read->getResult()) {
                foreach ($read->getResult() as $users) {
                    unset($users['password']);
                    if (strtolower($users['nome']) === strtolower($this->user)) {
                        if ($users['status'] === "1") {
                            if (!empty($users['setor']) && $users['setor'] !== "admin") {
                                $read->exeRead($users['setor'], "WHERE usuarios_id = :uid", "uid={$users['id']}");
                                if ($read->getResult()) {
                                    $users['setorData'] = $read->getResult()[0];
                                    unset($users['setorData']['usuarios_id']);
                                    foreach (Metadados::getDicionario($users['setor']) as $col => $meta) {
                                        if ($meta['format'] === "password" || $meta['key'] === "information")
                                            unset($users['setorData'][$meta['column']]);
                                    }
                                    $user = $users;
                                }
                            } else {
                                $users['setor'] = "admin";
                                $users['setorData'] = "";
                                $user = $users;
                            }
                        } else {
                            $this->setResult('Usuário Desativado!');
                        }
                        break;
                    } elseif (!empty($users['setor']) && !empty($whereUser[$users['setor']])) {
                        $read->exeRead($users['setor'], $whereUser[$users['setor']], "id={$users['id']}");
                        if ($read->getResult()) {
                            if ($users['status'] === "1") {
                                $users['setorData'] = $read->getResult()[0];
                                unset($users['setorData']['usuarios_id']);
                                foreach (Metadados::getDicionario($users['setor']) as $col => $meta) {
                                    if ($meta['format'] === "password" || $meta['key'] === "information")
                                        unset($users['setorData'][$meta['column']]);
                                }
                                $user = $users;
                            } else {
                                $this->setResult('Usuário Desativado!');
                            }
                            break;
                        }
                    }
                }

                //busca informações do grupo de usuário pertencente
                if (!empty($user)) {
                    $user['groupData'] = "";
                    if (!empty($user['setorData'])) {
                        foreach ($dicionarios[$user['setor']]['dicionario'] as $meta) {
                            if ($meta['format'] === "list" && $dicionarios[$meta['relation']]['info']['user'] === 2 && !empty($user['setorData'][$meta['column']])) {
                                $read->exeRead($meta['relation'], "WHERE id = :rid", "rid={$user['setorData'][$meta['column']]}");
                                $user['groupData'] = ($read->getResult() ? $read->getResult()[0] : "");
                            }
                        }
                    }
                }
            }

            if ($user && (empty($this->setor) || $this->setor === $user['setor'])) {
                $this->setLogin($user);
            } elseif (empty($this->getResult())) {
                $this->setResult('Login Inválido!');

                $attempt = new TableCrud("login_attempt");
                $attempt->loadArray(array("ip" => filter_var(Helper::getIP(), FILTER_VALIDATE_IP), "data" => date("Y-m-d H:i:s"), "username" => $this->user));
                $attempt->save();
            }
        }
    }
private function checkUserInfo()
    {
        if (!$this->getResult()) {
            $dicionarios = Entity::dicionario(null, !0);

            $whereUser = [];
            foreach ($dicionarios as $entity => $dados) {
                if (empty($whereUser[$entity]) && !empty($dados['info']['user']) && $dados['info']['user'] === 1) {
                    $whereUser[$entity] = "WHERE usuarios_id = :id";
                    $where = "";
                    if (!empty($dados['info']['unique'])) {
                        foreach ($dados['info']['unique'] as $id)
                            $where .= (empty($where) ? " && (" : " || ") . $dados['dicionario'][$id]['column'] . " = '{$this->user}'";
                    }
                    $whereUser[$entity] .= $where . (!empty($where) ? ")" : "");
                }
            }

            $user = null;
            $read = new Read();
            $where = "WHERE password = :pass" . (!empty($this->setor) ? " && setor = '{$this->setor}'" : "");
            $read->exeRead(PRE . "usuarios", $where, "pass={$this->senha}");
            if ($read->getResult()) {
                foreach ($read->getResult() as $users) {
                    unset($users['password']);
                    if (strtolower($users['nome']) === strtolower($this->user)) {
                        if ($users['status'] === "1") {
                            if (!empty($users['setor']) && $users['setor'] !== "admin") {
                                $read->exeRead($users['setor'], "WHERE usuarios_id = :uid", "uid={$users['id']}");
                                if ($read->getResult()) {
                                    $users['setorData'] = $read->getResult()[0];
                                    unset($users['setorData']['usuarios_id']);
                                    foreach (Metadados::getDicionario($users['setor']) as $col => $meta) {
                                        if ($meta['format'] === "password" || $meta['key'] === "information")
                                            unset($users['setorData'][$meta['column']]);
                                    }
                                    $user = $users;
                                }
                            } else {
                                $users['setor'] = "admin";
                                $users['setorData'] = "";
                                $user = $users;
                            }
                        } else {
                            $this->setResult('Usuário Desativado!');
                        }
                        break;
                    } elseif (!empty($users['setor']) && !empty($whereUser[$users['setor']])) {
                        $read->exeRead($users['setor'], $whereUser[$users['setor']], "id={$users['id']}");
                        if ($read->getResult()) {
                            if ($users['status'] === "1") {
                                $users['setorData'] = $read->getResult()[0];
                                unset($users['setorData']['usuarios_id']);
                                foreach (Metadados::getDicionario($users['setor']) as $col => $meta) {
                                    if ($meta['format'] === "password" || $meta['key'] === "information")
                                        unset($users['setorData'][$meta['column']]);
                                }
                                $user = $users;
                            } else {
                                $this->setResult('Usuário Desativado!');
                            }
                            break;
                        }
                    }
                }

                //busca informações do grupo de usuário pertencente
                if (!empty($user)) {
                    $user['groupData'] = "";
                    if (!empty($user['setorData'])) {
                        foreach ($dicionarios[$user['setor']]['dicionario'] as $meta) {
                            if ($meta['format'] === "list" && $dicionarios[$meta['relation']]['info']['user'] === 2 && !empty($user['setorData'][$meta['column']])) {
                                $read->exeRead($meta['relation'], "WHERE id = :rid", "rid={$user['setorData'][$meta['column']]}");
                                $user['groupData'] = ($read->getResult() ? $read->getResult()[0] : "");
                            }
                        }
                    }
                }
            }

            if ($user && (empty($this->setor) || $this->setor === $user['setor'])) {
                $this->setLogin($user);
            } elseif (empty($this->getResult())) {
                $this->setResult('Login Inválido!');

                $attempt = new TableCrud("login_attempt");
                $attempt->loadArray(array("ip" => filter_var(Helper::getIP(), FILTER_VALIDATE_IP), "data" => date("Y-m-d H:i:s"), "username" => $this->user));
                $attempt->save();
            }
        }
    }
Vetifica usuário e senha no banco de dados!