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. 6
      seguranca/grupos/gruposUsuario.php

2
checaSessao.php

@ -47,7 +47,7 @@ if(strtoupper($_SESSION["SSaut"]) == "OK" && !$_SESSION["SSTermoUsoPrivacidade"]
$_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
*/

2
dashboard.php

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

2
include/util/AbstractDashboard.php

@ -368,7 +368,7 @@ HTML;
$commit = pg_query($dbcon, "commit");
} else {
$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);
}
$rollback = pg_query($dbcon, "rollback");

7
include/util/funcoesApl.php

@ -556,7 +556,10 @@ function IsSuper() {
}
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() {
@ -4425,7 +4428,7 @@ function PodePublicarMural($idProg, $info) {
global $dbcon;
$isPopup = (getRequest('window', INPUT_GET));
$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)) {
$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
*/
$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();
$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";
}
$acessoAudio = VerificaPerfilAcesso($dbcon, GetIdProgFromNomeArq('audio.php'));
$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 .= "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";
$links = PaginaDados($idProg, $query, $params, $regPagina, $offSet, $pagMostra, true);

6
seguranca/grupos/gruposUsuario.php

@ -74,7 +74,11 @@ if (isset($fieldsForm['btIncAgente'])) {
$userAdmin = IsAdmin() ? 1 : 0;
$cont = 0;
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);
$result = @pg_query($dbcon, $query);

Loading…
Cancel
Save