Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Pessoal, boa tarde.
Estou com dificuldades de implementar um controle de acesso utilizando Section Access.
Tenho um QVW que será acessado por vários gerentes de bases e gerentes regionais.
O objetivo é permitir que cada gerente visualize dados específicos de sua base ou de sua regional (várias bases). Não há restrição de acesso às pastas do QVW, todas estarão disponíveis. É só os dados que precisam ser ocultos, para um gerente não ver os dados da base/regional de outro no mesmo QVW.
Meu script da seção de acesso é:
Section Access; // Start of section access part
STAR IS *;
Load * Inline [
USERID,ACCESS,COD_REGIONAL,COD_BASE
IGNEZ,admin,*,* // acessa dados de todas as regionais e bases
JOAO,user,1,* // acessa dados de todas as bases da regional 1
MARIA,user,2,* // acessa dados de todas as bases da regional 2
JOSE,user,*,21 // acessa dados apenas da base 21
];
Section Application; // End of section access part
Regionais:
SQL
SELECT COD_REGIONAL,NM_REGIONAL
FROM CRP_REGIONAL;
Base:
SQL
SELECT COD_REGIONAL,COD_BASE,,NM_BASE
FROM CRP_BASE;
No QVW, montei um objeto tabela com 4 colunas das 2 tabelas acima, para visualizar os dados. Recarreguei, salvei, fechei e reabri o documento como usuário IGNEZ, que deve visualizar todos os registros das tabelas. Porém, apenas as informações da base 21 (o único código de base declarado) está visivel.
Alguém pode me ajudar?
Obrigada,
Ignez
Caros, bom dia.
Consegui fazer a rotina funcionar do jeito que eu queria, depois de um "truque" que apliquei ao script. Eu criei uma 5ª coluna na carga de usuários, apenas para incluir uma virgula depois do número da base 21. Com isso, o acesso ficou perfeito.
A usuária IGNEZ visualiza todas as regionais e suas respectivas bases.
Os usuários JOAO, MARIA e ANTONIO visualizam todas as bases das regionais 1,2 e 3, respectivamente.
O usuário JOSE visualiza apenas a base 21.
Agradeço ao Raphael e ao lssosorio pela ajuda nesta questão!
Segue o código final:
STAR IS *;
Section Access; // Start of section access part
Load * Inline [
USERID,ACCESS,CD_REGIONAL,COD_BASE,CAMPO_VAZIO
IGNEZ,ADMIN,,,
JOAO,USER,1,,
MARIA,USER,2,,
JOSE,USER,2,21,
];
Section Application; // End of section access part
Regionais:
LOAD COD_BASE,
NM_BASE,
UF,
CIDADE,
CD_REGIONAL,
NM_REGIONAL
FROM
C:\BASES.xlsx
(ooxml, embedded labels, table is Plan1);
Sem problemas, acredito que esse campo vazio não seja necessário.
Marca a resposta correta para ajudar outras pessoas tbm
=D
Fiz um teste invertendo as colunas Regional e Base, e aí funcionou corretamente. Depois, voltei ao original, sem a coluna vazia, e também funcionou!
Realmente, não sei explicar. Mas apenas as 4 colunas é o correto.
O problema ocorreu pq você colocou o simbolo de ' * ' para representar "todos" os dados. Mas ele não é necessário, pois deixando o campo em branco ele ja entende que é para mostrar tudo.
Como fazer o usuário ADMIN ver todas as pastas?
Como assim???? Section Access é para limitar acesso a informação, como você está fzd o controle de acesso as pastas.
Paulo, te oriento abrir outra discussão para isso
Pela condicional da pasta.
Estou usando o QVW que o Aderlan disponibilizou.
Para o ADMIN visualizar todas as pastas, já que os USER visualizarão as pastas que eles tem acesso.
Estou usando este script:
Section Access;
LOAD * INLINE [
ACCESS,USERID,PASSWORD,ABAS
ADMIN,ADMIN,admpre,
USER,000005,Rona5per,1
USER,000161,Fla1440b,2
USER,000162,marco162,3
];
Section Application;
Abas:
LOAD * INLINE [
ABAS, Descrição
, Financeiro
, Comercial
, Logística
1, Financeiro
2, Comercial
3, Logística
];
E aparentemente funcionou, após colocar na condicional da pasta ABAS=1 or ABAS=''.
O ACESS é a DOC e o USER são as Names?
Posso limitar o acesso ao dados por usuário que tenha uma senha senha específica, sem necessitar de um novo login dentro da aplicação? (DOC?)