Autor Tópico: Controle de acesso dinamico  (Lida 1394 vezes)

flbasto

  • Iniciante
  • **
  • Mensagens: 53
    • Email
Controle de acesso dinamico
« Online: Fevereiro 05, 2015, 03:42:23 pm »
Boa tarde, hoje no meu sistema eu faço o gerenciamento de quem pode acessar o que da seguinte maneira:

if ([nivel] == "ADMINISTRADOR")
{
   sc_reset_menu_delete();
}
else if ([nivel] == "USUARIO PRIVI.")
{
   sc_menu_delete(item_9);
   sc_menu_delete(item_1);
}   
else if ([nivel] == "USUARIO NORMAL")
{
   sc_menu_delete(item_17);
   sc_menu_delete(item_2);
}
 else
   sc_reset_menu_delete();

Ok, serviu muito bem pra mim. Porém agora eu preciso fazer com que o administrador, aquele que vai criar a conta de todos os usuários sete manualmente quais abas do programa o usuário podera ver e utilizar.. Não tenho ideia de como fazer isso, alguém pode me ajudar?

Rodrigo Goulart Padovezzi

  • Expert
  • *****
  • Mensagens: 1045
    • Email
Re:Controle de acesso dinamico
« Responder #1 Online: Fevereiro 05, 2015, 03:58:19 pm »
Use o próprio modulo de segurança do SC.
No meu Módulos / Segurança
http://support.scriptcase.net/index.php?/Knowledgebase/Article/View/547/5/modulo-de-seguranca

FredKeyster

  • Expert
  • *****
  • Mensagens: 1702
  • DEWENNINMEN
    • Email
Re:Controle de acesso dinamico
« Responder #2 Online: Fevereiro 05, 2015, 04:31:26 pm »
Nesse seu código tem uma desvantagem. Não funciona no ambiente mobile. Eu antes tratava a segurança de menus por usuários desta mesma forma. Quando percebi, não funcionava quando o usuário acessava pelo celular. Fica a dica.
F. A.
Analista de Sistemas

flbasto

  • Iniciante
  • **
  • Mensagens: 53
    • Email
Re:Controle de acesso dinamico
« Responder #3 Online: Fevereiro 06, 2015, 06:44:31 am »
Valeu galera, vou tentar o modulo de segurança aqui e já retorno.

flbasto

  • Iniciante
  • **
  • Mensagens: 53
    • Email
Re:Controle de acesso dinamico
« Responder #4 Online: Fevereiro 06, 2015, 09:44:44 am »
Então, o esquema de segurança não me ajudou muito.. estava tentando fazer isso:

sc_lookup(ds, "SELECT cadastro_visivel, alterar_visivel, importar_visivel, consultar_visivel, cadastrar_usu_visivel FROM nivel WHERE (nivel = '[nivel_usu]')");

$cadastro = {ds[0][0]};
$alterar = {ds[0][1]};
$importar = {ds[0][2]};
$consultar = {ds[0][3]};
$cadastrar_usu = {ds[0][4]};

if($cadastro = '1'){
   sc_menu_delete(item_2);
}
// e assim por diante;

mas eu coloco isso no menu, no onLoad e não abre a aplicação, porque sera?

Haroldo

  • Expert
  • *****
  • Mensagens: 6286
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re:Controle de acesso dinamico
« Responder #5 Online: Fevereiro 06, 2015, 09:50:51 am »
Apesar do esquema de segurança do sc ter melhorado, não é uma uma solução ideal.

Estude os comandos dinâmicos do menu.

flbasto

  • Iniciante
  • **
  • Mensagens: 53
    • Email
Re:Controle de acesso dinamico
« Responder #6 Online: Fevereiro 06, 2015, 09:58:07 am »
Bom dia Haroldo. Não entendi direito, desculpa a ignorância. Esse código que eu postei acima não tem nada a ver com o modulo de segurança, estou fazendo na mão mesmo, só que não consigo fazer rodar no evento onLoad do menu.. Acho que me expressei errado, perdão. Você tem alguma noção do porque? Não acho em nenhum lugar. Obrigado pela atenção desde já.

Rodrigo Goulart Padovezzi

  • Expert
  • *****
  • Mensagens: 1045
    • Email
Re:Controle de acesso dinamico
« Responder #7 Online: Fevereiro 06, 2015, 10:14:31 am »
Apesar do esquema de segurança do sc ter melhorado, não é uma uma solução ideal.

Estude os comandos dinâmicos do menu.
Eu uso uma configuração baseada no módulo de segurança do sc porém fiz minhas customizações e o menu prefiro montar dinâmico, assim nunca tive problemas.

Haroldo

  • Expert
  • *****
  • Mensagens: 6286
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re:Controle de acesso dinamico
« Responder #8 Online: Fevereiro 06, 2015, 11:14:45 am »
É na mão mesmo que aconselho a fazer, usando os comando de menu dinâmico.

Menu
sc_appmenu_add_item ("Menu_Nome", "Id_Item", "Id_Pai", "Label", "Aplicação", "Parâmetro", "Icone", "Hint", "Target")
Esta macro adiciona um item ao menu dinamicamente.

sc_appmenu_create ("Menu_Nome")
Esta macro cria um menu de forma dinâmica.

sc_appmenu_exist_item ("Menu_Nome", "Id_Item")
Esta Macro verifica se existe um item do menu.

sc_appmenu_remove_item ("Menu_Nome", "Id_Item")
Esta macro remove dinamicamente um item do menu.

sc_appmenu_reset ("Menu_Nome")
Esta macro limpa o array para montagem dinâmica de um menu.

sc_appmenu_update_item ("Menu_Nome", "Id_Item", "Id_Pai", "Label", "Aplicação", "Parâmetro", "Icone", "Hint", "Target")
Esta macro atualiza um item do menu.


Bom dia Haroldo. Não entendi direito, desculpa a ignorância. Esse código que eu postei acima não tem nada a ver com o modulo de segurança, estou fazendo na mão mesmo, só que não consigo fazer rodar no evento onLoad do menu.. Acho que me expressei errado, perdão. Você tem alguma noção do porque? Não acho em nenhum lugar. Obrigado pela atenção desde já.

FredKeyster

  • Expert
  • *****
  • Mensagens: 1702
  • DEWENNINMEN
    • Email
Re:Controle de acesso dinamico
« Responder #9 Online: Fevereiro 06, 2015, 12:51:27 pm »
Eu uso a segurança do SC nativa, ate agora não tive problemas ate então.
F. A.
Analista de Sistemas

flbasto

  • Iniciante
  • **
  • Mensagens: 53
    • Email
Re:Controle de acesso dinamico
« Responder #10 Online: Fevereiro 09, 2015, 09:56:01 am »
   sc_lookup(ds2, "SELECT cadastro_visivel, alterar_visivel, importar_visivel, consultar_visivel, cadastrar_usu_visivel FROM nivel WHERE (nivel = ".$nivel.")");

    $cadastro = {ds2[0][0]};
    $alterar = {ds2[0][1]};
    $importar = {ds2[0][2]};
    $consultar = {ds2[0][3]};
    $cadastrar_usu = {ds2[0][4]};

    $cadastro = [cadastro];
    $alterar = [alterar];
    $importar = [importar];
    $consultar = [consultar];
    $cadastrar_usu = [cad_usu];

Está correto isso? Eu to pegando o valor que ta no campo selecionado e jogando em uma variavel global, uma pra cada campo, ta correto?

Haroldo

  • Expert
  • *****
  • Mensagens: 6286
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re:Controle de acesso dinamico
« Responder #11 Online: Fevereiro 09, 2015, 10:07:29 am »
Não está correto.

   sc_lookup(ds2, "SELECT cadastro_visivel, alterar_visivel, importar_visivel, consultar_visivel, cadastrar_usu_visivel FROM nivel WHERE (nivel = ".$nivel.")");

    $cadastro = {ds2[0][0]};
    $alterar = {ds2[0][1]};
    $importar = {ds2[0][2]};
    $consultar = {ds2[0][3]};
    $cadastrar_usu = {ds2[0][4]};

    $cadastro = [cadastro];
    $alterar = [alterar];
    $importar = [importar];
    $consultar = [consultar];
    $cadastrar_usu = [cad_usu];

Está correto isso? Eu to pegando o valor que ta no campo selecionado e jogando em uma variavel global, uma pra cada campo, ta correto?

flbasto

  • Iniciante
  • **
  • Mensagens: 53
    • Email
Re:Controle de acesso dinamico
« Responder #12 Online: Fevereiro 09, 2015, 12:44:38 pm »
Sou muito novo em scriptcase, estou desde manhã tentando resolver isso, mas não acho como fazer. Alguem poderia me dar uma luz? Perdão se estou sendo muito repetitivo no tópico.

Haroldo

  • Expert
  • *****
  • Mensagens: 6286
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re:Controle de acesso dinamico
« Responder #13 Online: Fevereiro 09, 2015, 12:56:45 pm »
[cadastro] = {ds2[0][0]};
[alterar] = {ds2[0][1]};
[importar] = {ds2[0][2]};
[consultar] = {ds2[0][3]};
[cad_usu] = {ds2[0][4]};

Em aplicações/variáveis globais: habilite como sessão

flbasto

  • Iniciante
  • **
  • Mensagens: 53
    • Email
Re:Controle de acesso dinamico
« Responder #14 Online: Fevereiro 09, 2015, 01:08:56 pm »
Haroldo, muito obrigado mesmo pela paciência e ajuda, estou tentando aqui mas acho que faço algo errado.. No Login, eu faço o seguinte:

sc_lookup(ds, $sql);

if (isset({ds[0][0]})){
    $nivel = {ds[0][2]};   
    sc_lookup(ds2, "SELECT cadastro_visivel, alterar_visivel, importar_visivel, consultar_visivel, cadastrar_usu_visivel FROM nivel WHERE (nivel = ".$nivel.")");
    [cadastro] = {ds2[0][0]};
    [alterar] = {ds2[0][1]};
    [importar] = {ds2[0][2]};
    [consultar] = {ds2[0][3]};
    [cad_usu] = {ds2[0][4]};      
   sc_redir(Menu_cct);
   }
    else {
   sc_error_message("Dados inválidos");   
   }

E no menu, eu faço o seguinte:

if ([cadastro] == '1')
{
   sc_menu_delete(item_2);
}
else if ([alterar] == '1')
{
   sc_menu_delete(item_9);
}

De modo que, ele procure no banco qual é o nivel, e se o valor for 1, ele desabilitará o item do menu em questão.. Porém não vai nem com ferro, ele continua abrindo o menu inteiro, sem tirar os itens que eu defini.. venho pesquisando faz uma cota já, não sei mais como fazer, voce poderia se possível me dar alguma ideia?
« Última modificação: Fevereiro 09, 2015, 01:11:03 pm por flbasto »