Acesso a Módulo do Sistema.
Moderador: Moderadores
- Marcos
- Usuário Nível 3

- Mensagens: 355
- Registrado em: 20 Set 2003 09:16
- Localização: Cáceres/Mato Grosso
Acesso a Módulo do Sistema.
Sei que este é um assunto já discutido aqui no fórum, mas até agora não consegui achar uma solução para o meu problema, eu preciso de uma forma para controlar o Acesso de Usuários em determinados Módulos do meu programa, ou seja, conceder permissões de acordo com o perfil de cada funcionário, já tentei algumas opções sugeridas por alguns colegas, mas não consegui desenvolver nada sem falhas e muita complexidade, peço gentilmente a ajuda de vocês.
Abraços,
Marcos.
Abraços,
Marcos.
- Marcos
- Usuário Nível 3

- Mensagens: 355
- Registrado em: 20 Set 2003 09:16
- Localização: Cáceres/Mato Grosso
- ERASMO ANDRIOLI
- Usuário Nível 2

- Mensagens: 51
- Registrado em: 15 Jul 2004 16:15
- Localização: Sorriso-MT
- Contato:
Colega...
Já esperimentou usar a Visual Lib.... ela tem os MENUS AUTOMÁTICOS em que voce pode usar o Comando SetBarItem para habilitar ou não o acesso do Usuário a certos Menus e Sub-Menus de um prog.
Eu uso ela sem problemas.... e para obter o acesso do Usuário, faço a leitura de uma VARIAVEL de arquivo DBF, informando se tem ou não acesso a tal opção.
Com a junção dos comandos do Clipper IF, AT e ALLTRIM, consigo sem problemas fazer isso juntamente com SetBarItem da VL2.
Caso tenha dúvidas em conseguir isso, entre em contato.
Saudações
ERASMO ANDRIOLI
Sorriso-MT
Brasil
Já esperimentou usar a Visual Lib.... ela tem os MENUS AUTOMÁTICOS em que voce pode usar o Comando SetBarItem para habilitar ou não o acesso do Usuário a certos Menus e Sub-Menus de um prog.
Eu uso ela sem problemas.... e para obter o acesso do Usuário, faço a leitura de uma VARIAVEL de arquivo DBF, informando se tem ou não acesso a tal opção.
Com a junção dos comandos do Clipper IF, AT e ALLTRIM, consigo sem problemas fazer isso juntamente com SetBarItem da VL2.
Caso tenha dúvidas em conseguir isso, entre em contato.
Saudações
ERASMO ANDRIOLI
Sorriso-MT
Brasil
- Antonio
- Usuário Nível 3

- Mensagens: 347
- Registrado em: 14 Ago 2003 17:33
- Localização: Sao Paulo - SP
- Contato:
Bom dia Colegas!
A sugestão do amigo Andrioli é boa, a Visual Lib facilita em muito essas tarefas de habilitação de e desbilitação de itens de Menu com pouquissima necessidade de codigo, tem um visual amigavel e um sistema de botões que falicitam bastante a nivel de opções.....
[]s
A sugestão do amigo Andrioli é boa, a Visual Lib facilita em muito essas tarefas de habilitação de e desbilitação de itens de Menu com pouquissima necessidade de codigo, tem um visual amigavel e um sistema de botões que falicitam bastante a nivel de opções.....
[]s
Antonio Carlos
Harbour 3.2 (20180213)
Hwgui 2.20 3b | PostGresql 9.5 | ADO/ODBC
Harbour 3.2 (20180213)
Hwgui 2.20 3b | PostGresql 9.5 | ADO/ODBC
- ERASMO ANDRIOLI
- Usuário Nível 2

- Mensagens: 51
- Registrado em: 15 Jul 2004 16:15
- Localização: Sorriso-MT
- Contato:
Segue dica para o colega Marcos:
*------------------------------------------------------
* Lendo Permissoes do Usuario que Acessou o Sistema...
*------------------------------------------------------
SELE 18
USE SIG_USU SHARED ALIAS USUA
SET INDEX TO SIG_USU
SET ORDER TO 1
DBSEEK(usuario_m) // Identifica o Nome do Usuario...
ACE01 =U_CLIENTES
ACE02 =U_VEICULOS
ACE03 =U_VENDEDOR
ACE04 =U_DOMINIO
ACE05 =U_PENDENC
ACE06 =U_GASTOS
ACE07 =U_VE_EXCLU
ACE08 =U_ESTOQUE
ACE09 =U_SAIDAS
ACE10 =U_ESTORNO
*...
* Parte do PRG...
// Definindo sub-menus de mCli (Menu de Clientes)...
AddDownItem(mCli, "InclusÆo" , "InclusÆo de Clientes e/ou Fornecedores" , {|| sigcli() })
AddDownItem(mCli, "Consulta" , "Consultar Clientes e/ou Fornecedores" , {|| sigclic() })
AddDownItem(mCli, "Altera‡Æo" , "Altera‡Æo de Clientes e/ou Fornecedores" , {|| sigclia() })
AddDownItem(mCli, "ExclusÆo" , "ExclusÆo de Clientes e/ou Fornecedores" , {|| sigclie() })
*--------------------------------
* Definindo Acessos do Usuario...
*--------------------------------
* MENU CLIENTES
* -------------
IF AT(ALLTRIM("I"),ACE01)=0
SetBarItem( mCli, 01, .F. ) // desabilita item 1 do menu
ENDIF
IF AT(ALLTRIM("C"),ACE01)=0
SetBarItem( mCli, 02, .F. ) // desabilita item 2 do menu
ENDIF
IF AT(ALLTRIM("A"),ACE01)=0
SetBarItem( mCli, 03, .F. ) // desabilita item 3 do menu
ENDIF
IF AT(ALLTRIM("E"),ACE01)=0
SetBarItem( mCli, 04, .F. ) // desabilita item 4 do menu
ENDIF
* Na var ACE01 (que contem tamanho 5 ou mais) no exemplo acima, o primeiro IF testa se encontra o "I", sem sim o Usuario tem acesso aquele menu, o primeiro do Grupo mCli e assim por diante. No caso meu, o "I" sigfica que o usuario pode incluir clientes, o "A" alterar clientes, más tudo são sub-menus. Na verdade qualquer simbolo que voce gravar no DBF e ler pelo comando AT, será usado para assumir o sim ou não de acesso. Só coloquei em meu sistema o C, I, A, E para faciliar a compreensão.
Espero ter ajudado os amigos...
Congratulações.
ERASMO ANDRIOLI
Sorriso-MT
*------------------------------------------------------
* Lendo Permissoes do Usuario que Acessou o Sistema...
*------------------------------------------------------
SELE 18
USE SIG_USU SHARED ALIAS USUA
SET INDEX TO SIG_USU
SET ORDER TO 1
DBSEEK(usuario_m) // Identifica o Nome do Usuario...
ACE01 =U_CLIENTES
ACE02 =U_VEICULOS
ACE03 =U_VENDEDOR
ACE04 =U_DOMINIO
ACE05 =U_PENDENC
ACE06 =U_GASTOS
ACE07 =U_VE_EXCLU
ACE08 =U_ESTOQUE
ACE09 =U_SAIDAS
ACE10 =U_ESTORNO
*...
* Parte do PRG...
// Definindo sub-menus de mCli (Menu de Clientes)...
AddDownItem(mCli, "InclusÆo" , "InclusÆo de Clientes e/ou Fornecedores" , {|| sigcli() })
AddDownItem(mCli, "Consulta" , "Consultar Clientes e/ou Fornecedores" , {|| sigclic() })
AddDownItem(mCli, "Altera‡Æo" , "Altera‡Æo de Clientes e/ou Fornecedores" , {|| sigclia() })
AddDownItem(mCli, "ExclusÆo" , "ExclusÆo de Clientes e/ou Fornecedores" , {|| sigclie() })
*--------------------------------
* Definindo Acessos do Usuario...
*--------------------------------
* MENU CLIENTES
* -------------
IF AT(ALLTRIM("I"),ACE01)=0
SetBarItem( mCli, 01, .F. ) // desabilita item 1 do menu
ENDIF
IF AT(ALLTRIM("C"),ACE01)=0
SetBarItem( mCli, 02, .F. ) // desabilita item 2 do menu
ENDIF
IF AT(ALLTRIM("A"),ACE01)=0
SetBarItem( mCli, 03, .F. ) // desabilita item 3 do menu
ENDIF
IF AT(ALLTRIM("E"),ACE01)=0
SetBarItem( mCli, 04, .F. ) // desabilita item 4 do menu
ENDIF
* Na var ACE01 (que contem tamanho 5 ou mais) no exemplo acima, o primeiro IF testa se encontra o "I", sem sim o Usuario tem acesso aquele menu, o primeiro do Grupo mCli e assim por diante. No caso meu, o "I" sigfica que o usuario pode incluir clientes, o "A" alterar clientes, más tudo são sub-menus. Na verdade qualquer simbolo que voce gravar no DBF e ler pelo comando AT, será usado para assumir o sim ou não de acesso. Só coloquei em meu sistema o C, I, A, E para faciliar a compreensão.
Espero ter ajudado os amigos...
Congratulações.
ERASMO ANDRIOLI
Sorriso-MT
- Marcos
- Usuário Nível 3

- Mensagens: 355
- Registrado em: 20 Set 2003 09:16
- Localização: Cáceres/Mato Grosso
Botões.
Olá Erasmo, achei muito interessante a rotina de Controle de Acesso por Usuários, só que no meu caso irá ficar complicado a não ser que tenha como fazer os Botões da Visual Lib ficar também .F., por que eu não utilizo (Incluir, Excluir, Alterar, Consultar e Imprimir) no meu sistema, em uma única tela chamada Manutenção de Clientes eu faço tudo isto, após informar o código do cliente o sistema lista os dados do cliente e aparece lá embaixo as opções de manutenção para o usuário:
abtn:= newbutton()
addbutton(abtn,17, 3,12, "&Editar") // Alterar Cliente
addbutton(abtn,17,15,13, "&Deletar") // Excluir Cliente
addbutton(abtn,17,53,13, "&Imprime") // Imprimir Cliente
addbutton(abtn,17,67,10 , "&Sair") // Sair fora
opcao:= procbutton(abtn, 2)
if opcao == 1
endif
Então, de acordo com a necessidade do usuário ele entra na rotina através dos Botões, portanto o acessoa as rotinas também se dá através de Botões, sendo assim gostaria de saber se você sabe como faze-los ficar .F.? De acordo com a permissão do usuário!
Abraços, e muito obrigado pelas ajudas.
Marcos
Cáceres/MT
abtn:= newbutton()
addbutton(abtn,17, 3,12, "&Editar") // Alterar Cliente
addbutton(abtn,17,15,13, "&Deletar") // Excluir Cliente
addbutton(abtn,17,53,13, "&Imprime") // Imprimir Cliente
addbutton(abtn,17,67,10 , "&Sair") // Sair fora
opcao:= procbutton(abtn, 2)
if opcao == 1
endif
Então, de acordo com a necessidade do usuário ele entra na rotina através dos Botões, portanto o acessoa as rotinas também se dá através de Botões, sendo assim gostaria de saber se você sabe como faze-los ficar .F.? De acordo com a permissão do usuário!
Abraços, e muito obrigado pelas ajudas.
Marcos
Cáceres/MT
- Antonio
- Usuário Nível 3

- Mensagens: 347
- Registrado em: 14 Ago 2003 17:33
- Localização: Sao Paulo - SP
- Contato:
A função SetButton(ArraydeBotoes, NumerodoBotão, .T. ou .F.) habilita e desabilita os Botoes.
[]s
Código: Selecionar todos
If Nivel == 1
SetButton(oBtn, 1, .T.)
Else
SetButton(oBtn, 1, .F.)
EndIf
Antonio Carlos
Harbour 3.2 (20180213)
Hwgui 2.20 3b | PostGresql 9.5 | ADO/ODBC
Harbour 3.2 (20180213)
Hwgui 2.20 3b | PostGresql 9.5 | ADO/ODBC
