Browse Source

Alteração na configuração dos grupos, agora usuario que estiver no grupo administrador podera incluir e remover usuarios de grupos, mesmo que ele nao pertença ao grupo em questão.

1.7.12
AMARILDO PEREIRA 2 years ago
parent
commit
709fda0b26
  1. 2
      checaSessao.php
  2. 2
      dashboard.php
  3. 2
      include/util/AbstractDashboard.php
  4. 7
      include/util/funcoesApl.php
  5. 5
      projeto/base/sql/versao-1.7.11.4.sql
  6. 14
      seguranca/grupos/grupoSelect.php
  7. 8
      seguranca/grupos/gruposUsuario.php

2
checaSessao.php

@ -47,7 +47,7 @@ if(strtoupper($_SESSION["SSaut"]) == "OK" && !$_SESSION["SSTermoUsoPrivacidade"]
$_SESSION["primAcesso"] ++; $_SESSION["primAcesso"] ++;
} }
$idProg = IsUserAdmin() || IsSuper() ? $idProg : ($idProg == PAGINA_SUPERVISOR ? PAGINA_AGENTE_INI : $idProg); $idProg = IsAdmin() || IsSuper() ? $idProg : ($idProg == PAGINA_SUPERVISOR ? PAGINA_AGENTE_INI : $idProg);
/* /*
* libera variaveis de sessao usadas nos relatorios * libera variaveis de sessao usadas nos relatorios
*/ */

2
dashboard.php

@ -58,7 +58,7 @@ $smarty->assign('agentes', $agentes);
$isAgente = $dashboard->getIsAgente(); $isAgente = $dashboard->getIsAgente();
$smarty->assign('isAgente', $isAgente); $smarty->assign('isAgente', $isAgente);
$smarty->assign('podePublicar', false); $smarty->assign('podePublicar', false);
$smarty->assign('podePublicarAjax', (!$isAgente && IsUserAdmin())); $smarty->assign('podePublicarAjax', (!$isAgente && IsAdmin()));
$smarty->assign('publicacoes', $publicacoes); $smarty->assign('publicacoes', $publicacoes);
$smarty->assign('styleLayout', 'width: 85%; height: 100%;'); $smarty->assign('styleLayout', 'width: 85%; height: 100%;');

2
include/util/AbstractDashboard.php

@ -368,7 +368,7 @@ HTML;
$commit = pg_query($dbcon, "commit"); $commit = pg_query($dbcon, "commit");
} else { } else {
$msg = "N<EFBFBD>o foi poss<EFBFBD>vel publicar no mural."; $msg = "N<EFBFBD>o foi poss<EFBFBD>vel publicar no mural.";
if (isset($_SESSION['DEBUG']) && intval($_SESSION['DEBUG']) === 1 && IsUserAdmin()) { if (isset($_SESSION['DEBUG']) && intval($_SESSION['DEBUG']) === 1 && IsAdmin()) {
$msg .= "Erro: " . pg_last_error($dbcon); $msg .= "Erro: " . pg_last_error($dbcon);
} }
$rollback = pg_query($dbcon, "rollback"); $rollback = pg_query($dbcon, "rollback");

7
include/util/funcoesApl.php

@ -556,7 +556,10 @@ function IsSuper() {
} }
function IsUserAdmin() { function IsUserAdmin() {
return IsAdmin(); $query = sprintf("select count(*) from pbx_grupo_usuario where gp_id = (select gp_id from pbx_grupo where gp_nome = 'ADMINISTRADOR') and user_id = '%s'", GetIdUser());
$result = @pg_query($query);
$row = @pg_fetch_row($result);
return $row[0] ? true : false;
} }
function IsAdmin() { function IsAdmin() {
@ -4425,7 +4428,7 @@ function PodePublicarMural($idProg, $info) {
global $dbcon; global $dbcon;
$isPopup = (getRequest('window', INPUT_GET)); $isPopup = (getRequest('window', INPUT_GET));
$naoPublicarPelasPaginas = [14, 6]; $naoPublicarPelasPaginas = [14, 6];
$podePublicar = (IsLogado() && (IsUserAdmin() || IsSuper()) && VerificaPerfilAcesso($dbcon, 6, $info)); $podePublicar = (IsLogado() && (IsAdmin() || IsSuper()) && VerificaPerfilAcesso($dbcon, 6, $info));
if (in_array($idProg, $naoPublicarPelasPaginas) || ($isPopup !== null)) { if (in_array($idProg, $naoPublicarPelasPaginas) || ($isPopup !== null)) {
$podePublicar = false; $podePublicar = false;
} }

5
projeto/base/sql/versao-1.7.11.4.sql

@ -0,0 +1,5 @@
/*
* Inclui o administrador em todos os grupos
*/
insert into pbx_grupo_usuario(user_id, gp_id)
select (select id from pbx_usuarios where apelido = 'administrador') as user_id, gp_id from pbx_grupo a where user_id = 0 and not exists(select '' from pbx_grupo_usuario where gp_id = a.gp_id and user_id = (select id from pbx_usuarios where apelido = 'administrador'))

14
seguranca/grupos/grupoSelect.php

@ -30,7 +30,16 @@ $recontaPag = ($acao == 'inseri') || (GetFormAcao() == FORM_DELETE) || isset($_P
* os grupos ao qual o mesmo pertence * os grupos ao qual o mesmo pertence
*/ */
$gpCompl = ""; $gpCompl = "";
if (!IsAdmin()) { $permissoesAdmin = '';
if (IsUserAdmin()) {
/*
* Usuario que esta no grupo administraor vai ter a mesma visibilidade do administrador,
* sem a necessidade de estar em outros grupos diretamente o que evita o bloqueio de audio.
*/
$idUser = GetIdUser();
$gpCompl = " and gp_id in( select gp_id from pbx_grupo_usuario where user_id = (select id FROM pbx_usuarios where apelido = 'administrador'))";
$permissoesAdmin = "\nunion\nselect gp_id, gp_nome, gp_status, user_id, 1 as gp_lgpd, case when(user_id = 0)then 0 else 1 end as ord from pbx_grupo a where user_id > '0'\n";
} else if (!IsAdmin()) {
$idUser = GetIdUser(); $idUser = GetIdUser();
$gpCompl = " and gp_id in( select gp_id from pbx_grupo_usuario where user_id = $idUser)"; $gpCompl = " and gp_id in( select gp_id from pbx_grupo_usuario where user_id = $idUser)";
} }
@ -48,7 +57,6 @@ if (VerificaPerfilAcesso($dbcon, GetIdProgFromNomeMenu('mnLgpdAdm'))) {
$liberaLgpd = "\nunion\nselect gp_id, gp_nome, gp_status, user_id, 1 as gp_lgpd, case when(user_id = 0)then 0 else 1 end as ord from pbx_grupo a where gp_nome ilike 'LGPD_%_%_%'\n"; $liberaLgpd = "\nunion\nselect gp_id, gp_nome, gp_status, user_id, 1 as gp_lgpd, case when(user_id = 0)then 0 else 1 end as ord from pbx_grupo a where gp_nome ilike 'LGPD_%_%_%'\n";
} }
$acessoAudio = VerificaPerfilAcesso($dbcon, GetIdProgFromNomeArq('audio.php')); $acessoAudio = VerificaPerfilAcesso($dbcon, GetIdProgFromNomeArq('audio.php'));
$colspan = $acessoAudio ? 6 : 5; $colspan = $acessoAudio ? 6 : 5;
@ -59,7 +67,7 @@ if (isset($_REQUEST['paramPesquisa']) && $_REQUEST['paramPesquisa']) {
} }
$query = "select gp_id, gp_nome, gp_status, user_id, 0 as gp_lgpd, case when(user_id = 0)then 0 else 1 end as ord from pbx_grupo a\n"; $query = "select gp_id, gp_nome, gp_status, user_id, 0 as gp_lgpd, case when(user_id = 0)then 0 else 1 end as ord from pbx_grupo a\n";
$query .= "where a.gp_nome <> 'SincContaSenha' $compl $gpCompl $restringLgpd $liberaLgpd order by 5, gp_nome"; $query .= "where a.gp_nome <> 'SincContaSenha' $compl $gpCompl $restringLgpd $liberaLgpd $permissoesAdmin order by 5, gp_nome";
$params = "&paramPesquisa=$filtro"; $params = "&paramPesquisa=$filtro";
$links = PaginaDados($idProg, $query, $params, $regPagina, $offSet, $pagMostra, true); $links = PaginaDados($idProg, $query, $params, $regPagina, $offSet, $pagMostra, true);

8
seguranca/grupos/gruposUsuario.php

@ -74,9 +74,13 @@ if (isset($fieldsForm['btIncAgente'])) {
$userAdmin = IsAdmin() ? 1 : 0; $userAdmin = IsAdmin() ? 1 : 0;
$cont = 0; $cont = 0;
foreach ($fieldsForm['user_inc'] as $idUser) { foreach ($fieldsForm['user_inc'] as $idUser) {
$query = "delete from pbx_grupo_usuario where user_id = '%s' and gp_id = '%s' and not exists(select * from pbx_grupo where gp_id = '%s' and gp_user = case when(%s=0)then '%s' else -1 end)"; $query = "delete from pbx_grupo_usuario"
. "\nwhere user_id = '%s'"
. "\nand gp_id = '%s'"
. "\nand user_id <> (select id from pbx_usuarios where apelido = 'administrador')" // Não permite remover o administrador.
. "and not exists(select '' from pbx_grupo where gp_id = '%s' and gp_user = case when(%s=0)then '%s' else -1 end)\n"; //Nao permite o usuario remover o pai do grupo(quem criou).
$query = sprintf($query, $idUser, $fieldsForm['gp_id'], $fieldsForm['gp_id'], $userAdmin, $idUser); $query = sprintf($query, $idUser, $fieldsForm['gp_id'], $fieldsForm['gp_id'], $userAdmin, $idUser);
$result = @pg_query($dbcon, $query); $result = @pg_query($dbcon, $query);
if (!$result) if (!$result)
break; break;

Loading…
Cancel
Save