Página 1 de 1

Acesso a Módulo do Sistema.

Enviado: 11 Nov 2004 10:00
por Marcos
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.

Sem respostas

Enviado: 12 Nov 2004 07:56
por Marcos
Ninguém... :(

Enviado: 12 Nov 2004 08:18
por jpalma
Eu meu sistema cada usuário tem um NIVEL de senha.
Criei um arquivo onde existem todas as rotinas do sistema e o respectivo NIVEL de acesso.

Espero ter ajudado


sds

Enviado: 12 Nov 2004 09:05
por janio
Olá Marcos,

Me manda um e-mail que te digo +- como tenho feito e que tem sido SATISFATÓRIO.

Um abraço,


Jânio

Enviado: 12 Nov 2004 09:08
por ERASMO ANDRIOLI
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

Enviado: 12 Nov 2004 09:58
por Antonio
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

Enviado: 12 Nov 2004 10:34
por ERASMO ANDRIOLI
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 :cool:

Botões.

Enviado: 22 Nov 2004 19:01
por Marcos
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

Enviado: 22 Nov 2004 19:41
por Antonio
A função SetButton(ArraydeBotoes, NumerodoBotão, .T. ou .F.) habilita e desabilita os Botoes.

Código: Selecionar todos

If Nivel == 1
   SetButton(oBtn, 1, .T.)  
   Else
   SetButton(oBtn, 1, .F.)
EndIf
[]s