Couchbase Mobile

Como validar tipos de documentos no Sync Gateway

No blog anterior da série Sync Gateway, exploramos Como autenticar e autorizar usuários em um aplicativo por meio de alguns dos recursos do Sync Gateway. Com base nessa série, exploraremos agora como validar tipos de documentos em Gateway de sincronização para determinar sua acessibilidade do lado do cliente móvel com um usuário específico. Isso levará à discussão do canal sobre como o Couchbase Mobile faz a segurança do lado da leitura no próximo blog da nossa série. Para a segurança do lado da gravação, exploraremos os principais métodos na função Sync que permitiriam que determinados documentos provenientes de usuários conhecidos fossem gravados no banco de dados backend.

Função de sincronização

Imagine que temos um documento ou muitos documentos em nosso banco de dados, por exemplo, em que temos uma chave de tipo que referenciaremos em nosso código de validação. O coração do Sync Gateway é a lógica de implementação da função de sincronização e, abaixo, vemos como um tipo de documento pode ser verificado para os controles de acessibilidade dos usuários em um aplicativo.  

Com o campo "type" nos documentos, podemos diferenciar por valores específicos o que o documento representa. Se um tipo de documento representar "escolas", "veículos" ou "amigos", então, na função de sincronização, podemos adicionar uma instrução de alternância para capturar como permitiremos o processamento de diferentes tipos de documentos de maneiras diferentes na função de sincronização. Primeiro, verificamos o tipo de documento para ver se é do tipo "amigos" e, em seguida, verificamos se a propriedade do proprietário do documento corresponde ao ID do usuário autenticado atual por meio da instrução 'requireUser()'. Se a propriedade owner corresponder ao usuário autenticado atual, daremos acesso a um documento a todos os amigos por meio do canal 'items-doc.owner'. Isso significa basicamente que ninguém mais verá a lista de amigos que foi convidada pelo usuário, pois ela é privada apenas para o próprio usuário.

A cláusula "else" é onde, se este não for um documento de um amigo ou de veículos, então esse será um documento de item da escola e, novamente, validamos que a propriedade do proprietário corresponde ao ID do usuário autenticado atual. Como antes, adicionamos os itens ao canal 'items-' para a propriedade do proprietário do item e damos a esse usuário acesso a esse canal.

Embora tenhamos atualizado a função Sync com a lógica de alternância acima, podemos adicionar um teste adicional para rejeitar qualquer tipo de documento desconhecido; portanto, se não for um documento do tipo "amigos", "veículos" ou "escolas", rejeitaremos o documento chamando a função 'lançar()' método.

Em vez do método 'requireUser()', vamos substituí-lo pelo método O método 'requireAccess("items-"+doc.owner)' agora, basicamente, se você quiser gravar um novo item em uma lista, precisará ter acesso ao canal de itens do usuário específico para o qual deseja adicionar o item.

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por William Hoang

William foi um defensor do desenvolvedor na equipe de engenharia móvel/experiência do desenvolvedor na Couchbase. Seu amor por café e código o levou ao mundo dos dispositivos móveis, ao mesmo tempo em que apreciava as experiências presenciais off-line. Antes disso, William trabalhou na equipe de relações com desenvolvedores do Twitter, BlackBerry e Microsoft, além de ter sido engenheiro de GPS incorporado a software na Research In Motion. William se formou na McGill University em Engenharia Elétrica de Software

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.