|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
require_once("util/constantes.php");
|
|
|
|
|
$tpLayout = 1;
|
|
|
|
|
$limpaVar = 0;
|
|
|
|
|
$msgLogin = "";
|
|
|
|
|
$idUser = isset($_GET["idUser"]) ? $_GET["idUser"] : $_POST["idUser"];
|
|
|
|
|
$msgMatricula = "disabled";
|
|
|
|
|
$msgAgt = "";
|
|
|
|
|
$userAgente = "";
|
|
|
|
|
$userSuper = "";
|
|
|
|
|
$userAdm = "";
|
|
|
|
|
$userStatus = isset($_POST["userStatus"]) ? "checked" : "";
|
|
|
|
|
$org_id = GetOrganizacao();
|
|
|
|
|
|
|
|
|
|
if (isset($_GET["idUser"]) && $_GET["idUser"] == 0) {
|
|
|
|
|
$acaoUser = 'Incluir';
|
|
|
|
|
$userMatricula = GetMatriculaAgente($dbcon);
|
|
|
|
|
$userPassword = '1234';
|
|
|
|
|
$dacPadrao = GetDacs($dbcon, 0, "", 0, 1);
|
|
|
|
|
$userStatus = "checked";
|
|
|
|
|
} else if (isset($_GET["idUser"]) && $_GET["idUser"] > 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<EFBFBD>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<EFBFBD> cadastrado!');";
|
|
|
|
|
} else if (($_POST["btGravar"] != "Alterar") && ExisteRegistro($dbcon, "pbx_usuarios", "matricula", ($_POST["userMatriculaH"]))) {
|
|
|
|
|
$msg = "alert('Matr<EFBFBD>cula j<EFBFBD> cadastrada!');";
|
|
|
|
|
} else if ($_POST["userEmail"] && !is_email($_POST["userEmail"])) {
|
|
|
|
|
$msg = "alert('Email Inv<EFBFBD>lido!');";
|
|
|
|
|
} else if (ExisteRegistro($dbcon, "pbx_usuarios", "email", (strtolower($_POST["userEmail"])), ($idUser ? "a.id <> {$idUser}" : ''))) {
|
|
|
|
|
$msg = "alert('O e-mail informado j<EFBFBD> foi registrado!');";
|
|
|
|
|
} else if ($_POST["userExpiraSenha"] < 0) {
|
|
|
|
|
$msg = "alert('O tempo de expira<EFBFBD><EFBFBD>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($userEmail),
|
|
|
|
|
$userExpiraSenha,
|
|
|
|
|
GetOrganizacao()
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
$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() . "<br>";
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* 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() . "<br>";
|
|
|
|
|
/*
|
|
|
|
|
* 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() . "<br>";
|
|
|
|
|
/*
|
|
|
|
|
* 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() . "<br>";
|
|
|
|
|
/*
|
|
|
|
|
* Finaliza a transacao.
|
|
|
|
|
*/
|
|
|
|
|
if ($result) {
|
|
|
|
|
$result = pg_query($dbcon, "commit");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($result) {
|
|
|
|
|
$limpaVar = 1;
|
|
|
|
|
$acaoUser = 'Incluir';
|
|
|
|
|
$idUser = 0;
|
|
|
|
|
$userMatricula = GetMatriculaAgente($dbcon);
|
|
|
|
|
$msg = "alert('Usu<EFBFBD>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<EFBFBD><EFBFBD>o n<EFBFBD>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<EFBFBD><EFBFBD>o realizada com sucesso!');";
|
|
|
|
|
$jsStartup[] = 'window.close()';
|
|
|
|
|
} else {
|
|
|
|
|
$msgAgt = trim($msgAgt);
|
|
|
|
|
$erroBd = @pg_last_error($dbcon);
|
|
|
|
|
$msg = sprintf("alert('%s');", (empty($msgAgt) ? "A opera<EFBFBD><EFBFBD>o n<EFBFBD>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 = "<select name='empPadrao' id='empPadrao'>";
|
|
|
|
|
foreach ($data as $v) {
|
|
|
|
|
$sel = $v['id'] == $v['org_padrao'] ? 'selected' : '';
|
|
|
|
|
$select .= "<option value='{$v['id']}' $sel>{$v['nome']}</option>";
|
|
|
|
|
}
|
|
|
|
|
$select .= "</select>";
|
|
|
|
|
|
|
|
|
|
return $select;
|
|
|
|
|
}
|