• Aucun résultat trouvé

Les acteurs de la normalisation et de la réglementation comptables en Roumanie

Dans le document Normalisation comptable (Page 27-30)

Para o envio de notificações, à semelhança das funcionalidades apresentadas anteriormente, foi necessário alterar o ficheiro DashboardView.react.js, como demonstra a Figura 25, de maneira a que fosse possível ter acesso à opção Push a partir da Dashboard. Com esta opção disponível, torna-se possível ter acesso a três subopções: o envio de notificações, a visualização das notificações enviadas e a gestão de audiências.

Figura 25 – Funcionalidade push no ficheiro DashboardView

Por omissão, o adapter utilizado para o envio de notificações é o ParsePushAdapter do módulo parse-server-push-adapter que, como foi referido anteriormente, abstrai a forma como as notificações são enviadas e pode ser facilmente conectado a qualquer serviço que exponha uma API para o envio de notificações. Este adapter utiliza o Apple Push Notifications Service para o envio de notificações para iOS e o Google Cloud Messaging para o envio de notificações para Android, no entanto, como o GCM foi descontinuado pela Google em Abril de 2018, as aplicações que utilizavam GCM tiverem de migrar para o Firebase Cloud Messaging, que herda a infraestrutura do GCM e lhe acrescenta novas funcionalidades [63].

A comunidade responsável pelo projeto open-source do Parse teve em conta a descontinuação do GCM e os pedidos de vários utilizadores para o desenvolvimento de um

adapter para o FCM e decidiu acrescentar suporte para o FCM no Parse Server e no SDK do

Parse para Android, passando este último a conter ambas as configurações dos serviços GCM e FCM [64]. Esta mudança implica que a configuração do lado do Parse Server passe a incluir uma chave FCM que corresponda ao sender id e API key para Android já existentes, o que irá garantir compatibilidade total com o FCM.

49

Para além disso, foi criado o ficheiro CustomPushSettings.react.js, baseado no ficheiro PushSettings.react.js e que abrange toda a estrutura necessária para que seja possível visualizar as credenciais relacionadas com o envio de notificações, definidas nos ficheiros de configuração. Como tal, na página definida por este ficheiro, são apresentados os parâmetros sender id, API key e um Toggle que indica se o envio de notificações do lado do cliente é permitido.

O envio de notificações do lado do cliente era uma funcionalidade que estava presente no Parse, no entanto deixou de fazer parte do projeto quando este se tornou open source, sobretudo por ser considerada uma funcionalidade pouco segura [65][66]. Para introduzir esta funcionalidade novamente na solução foi necessário, em primeiro lugar, defini-la no ficheiro de configuração do Parse Server. Consequentemente, o objeto push definido no ficheiro de configuração passou a conter o boolean enableClientPush, ilustrado na Figura 26, que indica se o envio de notificações do lado do cliente se encontra ativado.

Figura 26 – Parâmetro enableClientPush no ficheiro de configuração

Esta funcionalidade é considerada insegura dado que, para enviar notificações do lado do cliente, não é utilizada a master key da aplicação, mas sim a cliente key, uma chave pública. Tendo isso em conta, esta funcionalidade não iria funcionar sem que fossem alteradas determinadas verificações e validações aplicadas. Dado que não vai ser utilizada a

master key e que são sempre feitas verificações de autorização para o envio de notificações

– é sempre verificado que está a ser utilizada uma master key para a realização dessa tarefa – foi criado o prototype canPush no contexto do objeto Auth, que devolve true caso esteja a ser utilizada uma master key ou caso o envio de notificações do lado do cliente se encontre ativado.

Tendo em conta que o envio de notificações é efetuado para cada registo da tabela

Installations, é necessário ter acesso à informação desta tabela para poder proceder ao envio

das notificações. O acesso à tabela Installations encontrava-se restrito, visto que podia apenas ser acedido com a utilização de uma master key, no entanto, com a criação do método

canPush, tornou-se possível garantir o acesso a esta tabela, exclusivamente para consultas,

caso a opção do envio de notificações do lado do cliente se encontre ativada. Como pode ser observado pela Figura 27, o acesso à tabela Installations apenas é negado caso não esteja a ser utilizada uma master key para o método delete ou caso não esteja a ser utilizada uma

master key para o método find com a opção do envio de notificações do lado do cliente

50 Figura 27 – Acesso à tabela Installations no ficheiro rest.js

Para além do acesso à informação da tabela Installations, é também necessário ter em consideração o acesso ao serviço /push, que também se encontra condicionado pela utilização de uma master key. Tendo em conta que para as aplicações cliente é utilizada a client key e não a master key, para ter acesso a este serviço do lado do cliente foi alterada a função

promiseEnforceMasterKey, que verifica a autenticação com master key, para que fosse

possível autenticar com client key no caso de se tratar de um pedido de envio de notificações vindo do lado do cliente (Figura 28).

Figura 28 – Diagrama de sequência para o envio de notificações a partir da Dashboard

Administrador

Push New

<<UI>>

Escolher o tipo de mensagem

PushRouter middlewares

Selecionar o botão Send Push Pedido para o envio da notificação Preencher o texto da mensagem

Envio da notificação

PushController

enforceMasterKeyAccess()

Se for utilizada uma master key ou client key a notificação é enviada

Verificação de autorização

Se não for utilizada uma master key ou client key há um erro de autorização

51

Dans le document Normalisation comptable (Page 27-30)

Documents relatifs