0) { $msgLogin = "disabled"; $acaoUser = 'Alterar'; $query = "SELECT id, nome, apelido, matricula, flag, coalesce(\"admin\", false)::int as adm , senha, coalesce(supervisor, false)::int as supervisor, coalesce(agente,false)::int as agente, email, coalesce(status,true)::int as status, penalidade, senha_dias_expira, org_padrao FROM pbx_usuarios \n"; $query .= "WHERE id = $idUser"; $result = pg_query($dbcon, $query); if ($result) { $dados = pg_fetch_array($result); } $userNome = $dados["nome"]; $userLogin = $dados["apelido"]; $userMatricula = $dados["matricula"]; $userPassword = DEFAULT_MASC_PASSWORD; $userEmail = $dados["email"]; $userExpiraSenha = $dados["senha_dias_expira"]; $userStatus = $dados["status"] ? "checked" : ""; $penalidade = $dados["penalidade"]; $empPadrao = $dados['org_padrao']; $dacAgente = GetIdDacPadrao($dbcon, $idUser); $dacPadrao = GetDacs($dbcon, $dacAgente, "", 0, 1); } else if ((isset($_POST["btGravar"]))) { $msg = ""; if (empty($_POST["userNome"])) { $msg = "alert('Informe o nome do Usuário!');"; } else if (($_POST["btGravar"] != "Alterar") && empty($_POST["userLogin"])) { $msg = "alert('Informe um apelido!');"; } else if (empty($_POST["userPassword"])) { $msg = "alert('Informe a senha');"; } else if (($_POST["btGravar"] != "Alterar") && ExisteRegistro($dbcon, "pbx_usuarios", "apelido", (strtolower($_POST["userLogin"])))) { $msg = "alert('Login já cadastrado!');"; } else if (($_POST["btGravar"] != "Alterar") && ExisteRegistro($dbcon, "pbx_usuarios", "matricula", ($_POST["userMatriculaH"]))) { $msg = "alert('Matrícula já cadastrada!');"; } else if ($_POST["userEmail"] && !is_email($_POST["userEmail"])) { $msg = "alert('Email Inválido!');"; } else if (ExisteRegistro($dbcon, "pbx_usuarios", "email", (strtolower($_POST["userEmail"])), ($idUser ? "a.id <> {$idUser}" : ''))) { $msg = "alert('O e-mail informado já foi registrado!');"; } else if ($_POST["userExpiraSenha"] < 0) { $msg = "alert('O tempo de expiração deve ser maior ou igual 0 'zero');"; } $userNome = mb_strtoupper(RemoveAcentos($_POST["userNome"])); $userLogin = mb_strtolower(RemoveAcentos(RemoveEspaco($_POST["btGravar"] != "Alterar" ? $_POST["userLogin"] : $_POST["userLoginH"]), -1)); $userMatricula = $_POST["userMatriculaH"]; $userPassword = ($_POST["userPassword"]); $userEmail = RemoveAcentos(strtolower($_POST["userEmail"])); $userStatus = isset($_POST["userStatus"]) ? "checked" : ""; $acaoUser = $_POST["btGravar"]; $penalidade = $_POST["penalidade"] ? soNumero($_POST["penalidade"]) : "0"; $dacPadraoSel = $_POST["listaDacs"] ? $_POST["listaDacs"] : "0"; $empPadrao = $_POST["empPadrao"] ? $_POST["empPadrao"] : 'null'; $dacPadrao = GetDacs($dbcon, $dacPadraoSel, "", 0, 1); $userExpiraSenha = $_POST["userExpiraSenha"] ? $_POST["userExpiraSenha"] : 0; if (empty($msg) && ($_POST["btGravar"] == 'Incluir')) { $result = pg_query($dbcon, "begin"); if ($result) { $userMatricula = GetMatriculaAgente($dbcon); $query = "INSERT INTO pbx_usuarios(nome, apelido, matricula, flag, \"admin\", senha, supervisor, agente, email, status, penalidade, dac_padrao, check_vl, senha_dias_expira, org_padrao) VALUES(%s, lower(%s), %s, %s, %s, md5(%s), %s, %s, %s, %s, %s, %s, md5(lower(%s)), %s, %s) RETURNING id;"; $query = sprintf( $query, QuotedStr($userNome), QuotedStr($userLogin), QuotedStr($userMatricula), 1, $userAdm == "checked" ? 'true' : 'false', QuotedStr($userPassword), $userSuper == "checked" ? 'true' : 'false', $userAgente == "checked" ? 'true' : 'false', QuotedStr($userEmail), $userStatus == "checked" ? 'true' : 'false', $penalidade, QuotedStr($dacPadraoSel), QuotedStr($userLogin), $userExpiraSenha, $empPadrao ); $result = pg_query($dbcon, $query); if ($result) { $user = pg_fetch_assoc($result); $ret = IncluiAgenteFile($dbcon); $result = strtoupper($ret) == "OK"; } $query = sprintf("INSERT INTO pbx_organizacao_usuarios (id_usuario, id_organizacao, updated_at) VALUES (%s,%s,'%s')", $user['id'], $org_id, date('Y-m-d H:i:s')); $result1 = $result && pg_query($dbcon, $query); echo pg_last_error() . "
"; /* * Inclui usuario como grupo. */ $query = sprintf("INSERT INTO pbx_grupo(gp_nome, gp_status, user_id, gp_user, org_id) SELECT apelido, 1, id, id, $org_id FROM pbx_usuarios WHERE apelido = %s", QuotedStr($userLogin)); $result2 = $result && pg_query($dbcon, $query); echo pg_last_error() . "
"; /* * Insere o usuario no mesmo grupo criado com seu login. */ $query = sprintf("INSERT INTO pbx_grupo_usuario(user_id, gp_id, org_id) SELECT user_id, gp_id, $org_id FROM pbx_grupo WHERE gp_nome = %s", QuotedStr($userLogin)); $result3 = $result && pg_query($dbcon, $query); echo pg_last_error() . "
"; /* * Se o dac for selecionado no cadastro do usuario, o mesmo sera atribuido para o proprio usuario. */ if ($dacPadraoSel) { $query = sprintf("INSERT INTO pbx_fila_grupos(id, gp_id, org_id) SELECT $dacPadraoSel, gp_id, $org_id FROM pbx_grupo WHERE gp_nome = %s", QuotedStr($userLogin)); $result4 = $result && pg_query($dbcon, $query); } echo pg_last_error() . "
"; /* * Finaliza a transacao. */ if ($result) { $result = pg_query($dbcon, "commit"); } } if ($result) { $limpaVar = 1; $acaoUser = 'Incluir'; $idUser = 0; $userMatricula = GetMatriculaAgente($dbcon); $msg = "alert('Usuário: $userLogin matricula: $userMatricula, incluido com sucesso');"; $userPassword = "1234"; $penalidade = 0; $jsStartup[] = "window.opener.ResetForm();"; } else { $erroBd = @pg_last_error($dbcon); pg_query($dbcon, "rollback"); $acaoUser = 'Incluir'; $msg = sprintf("alert('%s');", "A operação não pode ser realizada!"); } } else if (empty($msg) && ($_POST["btGravar"] == 'Alterar')) { $acaoUser = 'Alterar'; $msgMatricula = "disabled"; $msgLogin = "disabled"; $userLogin = strtolower($_POST["userLoginH"]); $userMatricula = $_POST["userMatriculaH"]; $userExpiraSenha = $_POST["userExpiraSenha"]; $updSenha = DEFAULT_MASC_PASSWORD !== $userPassword; $result = pg_query($dbcon, "begin"); $query = "UPDATE pbx_usuarios SET nome = %s, %s email = %s, status = %s, penalidade = %s, dac_padrao = %s, senha_dias_expira = %s, org_padrao = %s WHERE id = %s "; if ($updSenha) { $updSenha = sprintf(" senha = md5(%s), ", QuotedStr($userPassword)); $queryAlt = sprintf("UPDATE pbx_controle_acesso SET acs_erro = 2 WHERE acs_login = '%s' AND acs_erro = 1;", $userLogin); pg_query($dbcon, $queryAlt); } else { $updSenha = ''; } $query = sprintf($query, QuotedStr($userNome), $updSenha, QuotedStr($userEmail), $userStatus == "checked" ? 'true' : 'false', $penalidade, $dacPadraoSel, $userExpiraSenha, $empPadrao, $idUser); $result = pg_query($dbcon, $query); /* * Se o dac for selecionado no cadastro do usuario, o mesmo sera atribuido para o proprio usuario. */ if ($dacPadraoSel && !GetNotExistsDacUser($dacPadraoSel, $idUser)) { $query = sprintf("INSERT INTO pbx_fila_grupos(id, gp_id) select $dacPadraoSel, gp_id from pbx_grupo where gp_nome = %s", QuotedStr($userLogin)); $result = $result && pg_query($dbcon, $query); } if ($result) { $ret = IncluiAgenteFile($dbcon); $result = strtoupper($ret) == "OK"; } if ($result) { $result = pg_query($dbcon, "commit"); } if ($result) { $acaoUser = 'Alterar'; $jsStartup[] = "window.opener.ResetForm();"; $msg = "alert('Operação realizada com sucesso!');"; $jsStartup[] = 'window.close()'; } else { $msgAgt = trim($msgAgt); $erroBd = @pg_last_error($dbcon); $msg = sprintf("alert('%s');", (empty($msgAgt) ? "A operação não pode ser realizada!" : $msgAgt)); pg_query($dbcon, "rollback"); $acaoUser = 'Alterar'; } } $jsStartup[] = $msg; } $smarty->assign("userExpiraSenha", $userExpiraSenha ? $userExpiraSenha : 0); $smarty->assign("userNome", $limpaVar ? "" : $userNome); $smarty->assign("userLogin", $limpaVar ? "" : $userLogin); $smarty->assign("msgLogin", $limpaVar ? "" : $msgLogin); $smarty->assign("userMatricula", $userMatricula); $smarty->assign("msgMatricula", $msgMatricula); $smarty->assign("userPassword", $userPassword); $smarty->assign("userEmail", $limpaVar ? "" : $userEmail); $smarty->assign("habAdm", IsAdmin() ? "" : "disabled"); $smarty->assign("userStatus", $limpaVar ? "checked" : $userStatus); $smarty->assign("acaoUser", $acaoUser); $smarty->assign("idUser", $idUser); $smarty->assign("dacPadrao", $dacPadrao); $smarty->assign("empPadrao", getOrgPadrao($dbcon, $idUser)); $smarty->assign("penalidade", $penalidade ? $penalidade : "0"); $jsJQuery[] = "\$('#userLogin').change(function(){limpaEspaco(this);}) "; $jsJQuery[] = "\$('#penalidade').keyup(function(){somenteNumeros(this);}) "; GetTemplate($smarty, 'seguranca/usuario.tpl'); function GetMatriculaAgente($db) { $org_id = GetOrganizacao(); $query = "SELECT MAX(matricula) FROM pbx_usuarios a INNER JOIN pbx_organizacao_usuarios b ON b.id_usuario = a.id WHERE b.id_organizacao = $org_id"; $result = pg_query($db, $query); if ($result) $dados = @pg_fetch_array($result); return ($dados[0] + 1); } function ValidaPassword($password) { $match = preg_match_all('/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[$*&@#_!.%?])[0-9a-zA-Z$_*&@#]{8,}$/', $password); if (empty($password) || !$match) { return false; } return true; } function VerificaEmailExists($dbcon, $email) { $query = "SELECT email FROM pbx_usuarios WHERE email = '$email';"; $result = pg_query($dbcon, $query); $res = pg_fetch_assoc($result); return $res; } function getEmailUser($dbcon, $email, $id = null) { $query = "SELECT count(*) FROM pbx_usuarios WHERE email = '$email' "; if ($id) { $query .= " AND id <> $id "; } $result = pg_query($dbcon, $query); $res = pg_fetch_assoc($result); if ($res['count']) { return false; } return true; } function getOrgPadrao($dbcon, $idUser) { $query = "SELECT a.id, a.nome, a.master, org_padrao FROM pbx_organizacao a INNER JOIN pbx_organizacao_usuarios b ON b.id_organizacao = a.id INNER JOIN pbx_usuarios c ON c.id = b.id_usuario WHERE b.id_usuario = {$idUser} AND a.status = 1 ORDER BY a.id"; $result = pg_query($dbcon, $query); $data = pg_fetch_all($result); if (!$data) { return null; } $select = ""; return $select; }