MENU - ACESSO EM NIVEL DE USUARIO.

POCCI 18/01/2005 15:29:56
#61601
Caros, estou tentando implementar algo que possibilite que cada nivel de acesso de usuário abra um menu diferenciado.

Tenho uma tabela usuarios com um campo Perfil.

Ao acessar o sistema, o mesmo verifica o perfil desejado e abre somente os menus que este usuário pode ter acesso.

Em ASP a solução é simples, basta fazer um Redirect para o HTML(menu) desejado...

Ja no VB existe alguma solução usado junto com o componente de Menu ?

Abraço a todos.
LCSD 18/01/2005 15:41:10
#61603
A única coisa que VC poderia estar fazendo, é uma TABELA em que neste perfil, VC mostre só os níveis que está cadastrado lá.

Só que os menús, Vc terá que deixá-los VISIBLE ou não. Esta é uma saída.
GABRIEL.LOGAN 18/01/2005 15:44:18
#61604
Você pode fazer o seguinte:

Quando o usuário se logar ai o programa automaticamente grava um registro em uma pasta, se esse registro ja existir ele lê o Nº de acessos que esta neste registro e soma mais a vez que ele esta entrando e depois grava por cima.

Para entrar na parte específica, quando o usuário se logar o programa vai ler o registro e compararpode ser ate com uma função assim:

if registro >= "Nº que vc quer" then
libera usuário
else
manda pra outra parte do programa
end if


A leitura do registro e a escrita do registro podem ser feitos pela API do windows que lê arquivos INI

AI esta ela:

'-------NO MODULO:

Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nsize As Long, ByVal lpFileName As String) As Long
Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long

'------------------------


'------NO FORM

Public Function ReadINI(Secao As String, Entrada As String, Arquivo As String)
'Arquivo=nome do arquivo ini
'Secao=O que esta entre []
'Entrada=nome do que se encontra antes do sinal de igual
Dim retlen As String
Dim ret As String
ret = String$(255, 0)
retlen = GetPrivateProfileString(Secao, Entrada, "", ret, Len(ret), Arquivo)
ret = Left$(ret, retlen)
ReadINI = ret
End Function

'------------
Public Sub WriteINI(Secao As String, Entrada As String, Texto As String, Arquivo As String)
'Arquivo=nome do arquivo ini
'Secao=O que esta entre []
'Entrada=nome do que se encontra antes do sinal de igual
'texto= valor que vem depois do igual
WritePrivateProfileString Secao, Entrada, Texto, Arquivo
End Sub

'----------USO :

WriteINI "DATA", "start", start + 1, "c:\seu arquivo.ini"
Dim ler As String
ler = ReadINI("DATA", "last", "c:\windows\l3_dat.ini")
txtleitura.text = ler
POCCI 18/01/2005 16:18:21
#61613
Creio que a solução mais viavel, seria ao entrar no menu principal, ele checar o perfil do carinha e ir "escondendo" aqueles que usuario não deve ter acesso (VISIBLE=FALSE)

O que acham ?

Forte Abraço.
USUARIO.EXCLUIDOS 18/01/2005 16:36:09
#61617
Resposta escolhida
A Solução mais viável é Quando um determinado usuário fazer LONGON e AO ABRIR o form principal automaticamente o Sistema Checa as suas Devidas permissões e VISIBLE = FALSE ou ENABLED = FALSE em todos o que ele não pode ter acesso,

Seguindo desta linha, você pode adaptar como Quiser
LCSD 18/01/2005 17:10:58
#61629
POCCI,

Infelizmente, esta é a única solução que eu tbem vejo.
Tenho sistemas que também abrem o menú conforme o direito que o usuário têm, e faço exatamente assim.

Eu verifico se ele pode ter acesso ao menú. Se puder, não faço nada (pois o DEFALT é sempre VISIVEL). Se ele não puder, dou um VISIBLE=FALSE e pronto.

Acho que é a melhor maneira (e talvez a única).
POCCI 18/01/2005 17:23:01
#61637
Caro LCSD, também creio que esta é a ideal.

Ja vi um sistema que roda em Cobol Web (microfocus), onde vc pode ir "ticando" as opções que usuário pode ter acesso (uma especie de treeview com um checkbox na frente).

talvez isso funcione pq a montagem do menu é feita "na raça" via XML [S55]

Agradeço a todos pela ajuda ! [S71]

Abraços !
Tópico encerrado , respostas não são mais permitidas