Cara, é um pouco dificil de explicar, mas o sistema que fizemos aqui é todo assim, completamente cheio de permissões.
Fizemos o seguinte: as permissões ficam no banco de dados. Criamos então no flex uma classe de permissões, que busca todas as permissões do usuario e coloca num array. Nao da pra saber qual é a permissao de uma tela sem consultar o banco, mas... nao encontramos forma melhor, já que estamos migrando um sistema desktop para web e tem que ser assim. Bem, feito isso, em cada tela que abrimos, no initialize da tela chamamos uma funçao e colocamos componente.enabled = clsPermissao.getPermissao(154); por exemplo. Supondo que a permissão 154, que é permissão de salvar do cadastro de clientes seja falsa, ficaria no initialize da tela btnSalvar.enalbled = clsPermisao.getPermissao(154); Essa classe clsPermissao tem um metodo estatico que é o getPermissao. Ela busca todas as permissoes no .NET e cria o array. Foi a melhor forma que encontramos, já que cada usuario tem acessos específicos a cada operação. Olha a função initialize da tela principal do nosso programa (vlf_permissao = getPermissao que citei). o primeiro parâmetro é o objeto que vai receber a permissao, o segundo é o número da permissão, e o terceiro é o tipo (Salvar, Alterar, Consultar, Excluir) private function inicializa_permissoes():void { cls_Permissao.vlf_permissao(btn_pesquisar,278,"S"); cls_Permissao.vlf_permissao(cvs_telefones,359,"C"); cls_Permissao.vlf_permissao(cvs_dados_gerais,19,"C"); cls_Permissao.vlf_permissao(cvs_enderecos,361,"C"); cls_Permissao.vlf_permissao(cvs_terceiros,350,"C"); //cls_Permissao.vlf_permissao(cvs_cpf_repetidos,0,"C"); cls_Permissao.vlf_permissao(btn_cadTelefones,359,"S"); cls_Permissao.vlf_permissao(btn_cadEnderecos,361,"S"); cls_Permissao.vlf_permissao(btn_cadTerceiros,350,"S"); cls_Permissao.vlf_permissao(aba_ocorrencias,62,"C"); cls_Permissao.vlf_permissao(aba_dividas,6,"C"); cls_Permissao.vlf_permissao(aba_consultar_recibos,10,"C"); cls_Permissao.vlf_permissao(aba_boletos,14,"C"); cls_Permissao.vlf_permissao(aba_DI,149,"C"); cls_Permissao.vlf_permissao(aba_mensagem_juridico,6,"C"); cls_Permissao.vlf_permissao(aba_refi,185,"C"); cls_Permissao.vlf_permissao(aba_consultar_acordos,3,"C"); cls_Permissao.vlf_permissao(aba_avon,395,"C"); } eis o método na classe: public static function vlf_permissao (olp_objeto:Object,ilp_permissao:int,slp_tipo:String):void { if (olv_permissoes_usuario != null) { var ilv_perm_calculado:Boolean = false; switch (slp_tipo) { case "C": slp_tipo = "Consultar"; ilv_perm_calculado = olv_permissoes_usuario[(ilp_permissao * 4) - 3]; break; case "S": slp_tipo = "Salvar"; ilv_perm_calculado = olv_permissoes_usuario[(ilp_permissao * 4) - 2]; break; case "E": slp_tipo = "Excluir"; ilv_perm_calculado = olv_permissoes_usuario[(ilp_permissao * 4) - 1]; break; case "I": slp_tipo = "Imprimir"; ilv_perm_calculado = olv_permissoes_usuario[(ilp_permissao * 4)]; break; } if (olp_objeto is DataGrid) { olp_objeto.doubleClickEnabled = ilv_perm_calculado; } else { olp_objeto.enabled = ilv_perm_calculado; if (!olp_objeto.enabled) { olp_objeto.toolTip = "Permissão Necessária: " + ilp_permissao.toString() + " " + slp_tipo; } } } } Espero que isso ajude. Aos que tem mais experiencia com OOP, padrões, etc, me corrijam para ajudar nosso amigo. Valeu galera! William Paiva On 24 mar, 21:57, TITO <vhs...@gmail.com> wrote: > cara seta um campo no teu banco de dados pra guardar o nivel do > usuario > e quando tua aplicação flex carregar pede pra ele ler esse campo do > banco e deixar abilitado > apenas as opções em que o usuario pode interagir. > > ;** > > On 24 mar, 21:52, Bruno Carneiro <guimaraescarne...@gmail.com> wrote: > > > > > Eu pretendo fazer um sistem que tem vários usuários e cada usuário tem > > seu nível de acesso. > > > Ou seja, cada usuário pove ver um sub-conjunto de funcionalidades > > específico. > > > Como fazer isso em flex? Alguém já fez? > > > Eu pensei em fazer algo do tipo uma view stack contendo todo o > > sistema. E usar states para filtrar o que cada usuário vai ver. > > > Cada nível de usuário é um state, assim filtrando o que ele pode ver. > > > O difícil é quando uma coisa pode ser vista por dois usuários, neste > > caso, no meu state vou ter duas cópias do msm componente? Ou tem como > > eu definir que um componente vai ser visto por mais de um state?- Ocultar > > texto entre aspas - > > - Mostrar texto entre aspas - --~--~---------~--~----~------------~-------~--~----~ Você recebeu esta mensagem porque está inscrito na lista "flexdev" Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com Para sair da lista, envie um email em branco para flexdev-unsubscr...@googlegroups.com Mais opções estão disponíveis em http://groups.google.com/group/flexdev -~----------~----~----~----~------~----~------~--~---