Como utilizar links restritivos no acesso ao Microsoft Power Apps

Por Fernando Viana e Sá
Como utilizar links restritivos no acesso ao Microsoft Power Apps

Neste artigo, mostraremos que você pode tornar os links diretos no Canvas App do Power Apps restritivos aos dados exibidos para um usuário quando ele inicia o aplicativo a partir de um URL parametrizado.

Início

Primeiramente, vamos dar uma olhada em um cenário de aprovação em que um gerente deve visualizar apenas os dados de seus relatores e toda vez que um usuário cria uma solicitação, um e-mail com um link para o aplicativo é enviado ao gerente. Assim, o gerente pode visualizar os dados relacionados à solicitação de aprovação clicando no link no e-mail que o leva diretamente à página de detalhes do item que requer a revisão por meio de links diretos.

No entanto, quando o gerente clica no link, a URL de redirecionamento no navegador exibe o parâmetro que foi passado e se este for alterado, os demais itens correspondentes ao parâmetro poderão ser visualizados. Por exemplo, no caso de aprovação, a fonte de dados usada é uma lista do SharePoint e os itens são identificados por meio do ID e os gerentes são identificados pela coluna de pessoa na lista. Vamos criar o aplicativo de forma que, com base no usuário que acessa o aplicativo, seja realizada uma validação para verificar se o usuário tem permissão para acessar o item através do campo tipo pessoa e se é permitido apenas mostrar os detalhes do item ou então mostrar uma mensagem de erro.

Power Apps

Então, vamos começar com um exemplo básico. Assim, aqui, criei um aplicativo usando o modelo “Iniciar com dados” e conectei ao SharePoint como fonte de dados.

Deep Linking Regular

  • App -> OnStart –> Verifica se a URL navegada contém um valor para o parâmetro ItemId. Se isso acontecer, defina uma variável com ItemId e leve os usuários para a tela de edição.
if(
    !IsBlank(Param("ItemId")),
    Set(ParamId,Param("ItemId"));
    Navigate(EditScreen1);
           
)
  • Propriedade do item -> Editar formulário -> Se a variável ParamId não estiver em branco, mostrará o registro relacionado ao ItemId. Se estiver em branco, exibirá o registro com base na seleção da galeria.
If(
    !IsBlank(ParamId),
    LookUp(
        KLIOS,
        ID = Valor(ParamId)
    ),
    BrowseGallery1.Selected
)
  • Tela -> OnHidden -> Set(ParamId,Blank())

Aqui, estamos definindo a variável ParamId como Blank porque se o usuário selecionar qualquer item da galeria, não queremos padronizar o registro passado no parâmetro.

Instruções de configuração de links diretos restritivos:

  • A propriedade OnStart do aplicativo desempenha aqui um papel vital, pois verifica se a pessoa logada é o aprovador ou não. A expressão usada na propriedade On Start:
If(
    !IsBlank(Param("ItemId")),
    With(
        {
            AssociatedRecord: LookUp(
                KLIOS,
                ID = Value(Param("ItemId"))
            )
        },
        If(
            AssociatedRecord.Approver.Email = User().Email,
            Navigate(EditScreen1);
            Set(
                AllowedToEdit,
                true
            ),
            Navigate(NotAllowedPage);
            Set(
                AllowedToEdit,
                false
            )
        )
    )
)

Explicação : Primeiro verifica se há um parâmetro presente para o link direto. Se não houver um parâmetro com o nome “ItemId”, o usuário será direcionado para a primeira tela do aplicativo. Caso exista um parâmetro que exista com o nome “ItemId”, então verificará se o valor passado no parâmetro possui um aprovador como usuário logado. Se a pessoa logada for o aprovador, ele abre o registro em modo de edição. Senão leva o usuário para uma tela separada mostrando uma mensagem de erro.

AllowedToEdit é uma variável que é utilizada na configuração de outras telas para identificar se o usuário logado está no primeiro nível de segurança ou não.

  • Para que o Item apareça no Edit Form, a expressão utilizada na propriedade Item do edit form:
If(
    AllowedToEdit,
    LookUp(
        KLIOS,
        ID = Value(Param("ItemId"))
    ),
    BrowseGallery1.Selected
)

Explicação : Isso verifica se a variável AllowedToEdit está definida como true, depois mostra o registro identificado pelo parâmetro de link direto, senão mostra o selecionado da galeria.

Neste caso, estamos usando um formulário de edição, então a expressão é usada na propriedade Item. Se houver qualquer outro controle, você precisará selecionar a propriedade apropriada. Para controles individuais, você pode armazenar os valores em uma variável ou coleção para salvar chamadas de API.

Defina a variável AllowedToEdit para em branco no EditScreen oculto, para que a variável seja redefinida para qualquer outra navegação na tela e mostre o item selecionado da galeria conforme o esperado.

Tela -> OnHidden -> Set( AllowedToEdit ,false)

Conclusão

Nesta postagem, vimos como personalizar um aplicativo de tela do Power Apps para habilitar links diretos restritivos para aprimorar a segurança dos dados. Uma configuração pode ser usada para onde o requisito é apenas mostrar dados ou obter uma entrada em itens específicos e etc.

Espero que você tenha achado isso interessante e tenha ajudado você. Obrigado por ler! Para mais conteúdos excelentes, confira nosso blog.

 

Ver mais artigos

Entre em Contato

Vamos juntos transformar sua dor
em solução!

#moveFast