Proteger a IU

Como parte da segurança do aplicativo, é possível proteger páginas e elementos da IU (widgets ou partes de widgets). A segurança da IU determina se um usuário pode ver algo (ou ouvir com um leitor de tela).

Como proteger a IU do aplicativo?

Com o App Maker, é possível usar uma ou ambas as abordagens abaixo para proteger a IU do seu aplicativo:

  • Proteger páginas: use a segurança da página para controlar quais páginas os usuários podem ver. No Editor de propriedades , em Segurança, aplique permissões de acesso de Papéis ou Script a cada página.
  • Proteger elementos da IU: use a propriedade visible para controlar quais elementos em uma página os usuários podem ver. A propriedade visível está disponível para widgets e partes de widgets compostos. No Editor de propriedades , em Exibir, defina uma expressão de vinculação para o elemento de IU que é resolvido como true (visível) ou false (invisível).

Proteger páginas

Configure a segurança da página para controlar quais usuários podem acessar as páginas do aplicativo.

Por que proteger páginas?

  • Restringir o acesso a informações estáticas confidenciais: em alguns casos, as páginas podem exibir informações estáticas que apenas usuários específicos podem visualizar. Por exemplo, uma página pode exibir uma receita secreta para comida de cachorro.
  • Restringir o uso de páginas para quem precisa delas: se conjuntos específicos de usuários tiverem jobs diferentes, restringir as páginas aos conjuntos de usuários que as utilizam faz sentido. Pode não haver razão para conceder aos não administradores acesso às páginas usadas pelos administradores.
  • Proteger páginas tem benefícios de desempenho: controlar se os usuários podem acessar páginas traz benefícios de desempenho. Menos dados serão transportados de um lado para outro se o App Maker não precisar buscar páginas desnecessárias e dados relacionados para um usuário que não pode ter acesso às páginas e aos dados de qualquer maneira.

Defina permissões de acesso para uma página

A segurança da página usa permissões de acesso. As permissões de acesso disponíveis para páginas são Somente Administradores, Todos, Papéis e Script.

  1. Abra o App Maker.
  2. Na barra lateral esquerda, clique na página em que você quer definir permissões.
  3. No Editor de propriedades , em Segurança, selecione a permissão de acesso para a página na lista.

Como o App Maker controla o acesso a uma página?

  • Recuperação: o App Maker usa permissões de página para decidir se precisa recuperar uma página específica de um usuário. Se um usuário não tiver acesso a uma página, o App Maker não recuperará a página. Como um aplicativo do App Maker é um aplicativo da Web, o App Maker não reconhece que a página existe. Ele responde com um erro de Página não encontrada (HTTP 404). O App Maker não lista a página nos menus. Também é possível projetar a navegação no seu aplicativo para omitir links para a página para usuários que não podem ter acesso a ela.
  • Visualização: se uma página não tiver sido recuperada, o usuário não poderá vê-la ou lê-la com um leitor de páginas.
  • DOM: uma página que o App Maker não recupera para um usuário não está no DOM.

Referências às páginas

Referências a páginas têm aspectos importantes:

  • Referências às páginas de um aplicativo: em um menu, quando você faz referência às páginas em um aplicativo (por exemplo, com a expressão de vinculação @pages ou com uma referência em um script para app.pages), o App Maker apenas lista as páginas que o usuário pode acessar.
  • Links para uma página: é possível controlar a visibilidade dos elementos da IU que se vinculam a páginas (por exemplo, links).
  • URL de uma página: um usuário pode conseguir o URL de uma página que o usuário não pode acessar com outro usuário. Ou, um usuário pode marcar um URL e, em seguida, perder o acesso a essa parte do aplicativo.
  • Referências à página no DOM: como as páginas do aplicativo podem se referir a outras páginas (por exemplo, usando links), um usuário experiente pode encontrar referências no DOM em uma página que o usuário não pode acessar.

Controle a visibilidade dos elementos da IU

Use a propriedade visible para controlar se os elementos da IU (widgets ou partes de widgets) em uma página estão visíveis para usuários específicos. Razões para controlar a visibilidade:

  • Relevância: se algum conteúdo ou controle de navegação não for relevante em uma situação específica ou para um usuário específico, não os use em uma página. Por exemplo, um link para editar um registro só faz sentido se o registro existir. Se o registro não existir, é possível ocultar o link. A visibilidade também pode ser orientada por dados.
  • Segurança: se um usuário não puder usar um elemento da IU específico, será possível ocultar o elemento deste usuário.

Escreva uma expressão de vinculação que seja avaliada como booleano

Por segurança, escreva uma expressão de vinculação para a propriedade visible de um elemento da IU que invoque uma medida de segurança e que seja avaliada como resultado o booleano true ou false. Siga estas abordagens:

  • Na expressão de vinculação, referencie os papéis para os quais os membros dos papéis podem ter acesso. Esse exemplo dá acesso aos membros do grupo Administradores:

    (@user.roles).indexOf('Managers') > -1

  • Chame um método em um script de cliente que chame um método em um script de servidor. Use o método no script de servidor para fazer a determinação de visibilidade com base em qualquer critério, por exemplo, com base em associação de papel ou dados. O método do servidor pode retornar true ou false ao método do cliente, que pode retornar o valor.

Use conversões de tipo automáticas

O App Maker precisa de um resultado booleano para a propriedade visible. Se uma expressão de vinculação retornar true ou false, o App Maker usará o valor fornecido.

Uma expressão de vinculação para a propriedade visible também pode se vincular a um campo do tipo Número ou String, ou pode chamar uma função que retorna um número ou string. Nesses casos, o App Maker realiza uma conversão de tipo, convertendo o número ou string em um valor booleano. Não é possível se vincular a um campo do tipo Data. Se uma função retorna uma data, ela é tratada como uma string.

As conversões executadas são as mesmas que você usaria no caso de transformadores de vinculação numToBool() e strToBool(). É possível usar os transformadores de vinculação, mesmo que isso não seja necessário.

As conversões de tipo automáticas para números e as realizadas por numToBool() correspondem a conversões de tipo JavaScript. As conversões de tipo para casos especiais (indefinido, nulo e NaN) também correspondem a conversões do tipo JavaScript (todas convertidas para false).

Mas as conversões de tipo realizadas para strings e por strToBool() não correspondem às conversões do tipo JavaScript.

Veja o que você precisa saber:

Tipo de campo Verdadeiro (visível) Falso (invisível)
Booleano

(corresponde ao JavaScript)
Valor: a caixa está marcada
true
Valor: a caixa está desmarcada
false
Número

(corresponde ao JavaScript)
1, 1.0
Todos os outros valores não listados em Falso, por exemplo, 2, 208,1, -7, Infinito, -Infinito
0, -0, 0.0, -0.0
String

(não corresponde ao JavaScript)
"true", "True", "TRUE"... (qualquer caso) "false", "False", "FALSE"... (qualquer caso)
Todos os outros valores não listados em True, por exemplo, "funcionário" ou "administrador".

Controle a visibilidade nas hierarquias de widgets

Os widgets são geralmente hierárquicos. Um formulário tem um título, caixas de texto para inserir ou escolher dados e assim por diante. É possível controlar a visibilidade de todo o widget, de partes do widget ou de ambos.

Em uma hierarquia, um valor false de uma propriedade visible torna esse elemento da IU e cada elemento abaixo dela na hierarquia invisíveis.