Firebase App - Parte 1

8. Programando Login com Firebase

8.3. Classe Usuário

Nosso sistema utiliza o serviço de autenticação do Firebase para login de usuários. No entanto, muitas vezes precisamos salvar informações adicionais do usuário para atender às necessidades do aplicativo. Para isso, vamos armazenar esses dados na Realtime Database do Firebase em um documento chamado "usuários", onde cada usuário cadastrado no sistema terá suas informações salvas. Para identificar cada usuário de maneira única, utilizaremos seu código UUID.

Para salvar os dados, criamos uma classe de dados em Kotlin que representará um objeto Usuário no Firebase. Vamos então implementar a classe Usuario, contendo propriedades como nome, telefone e e-mail:

package ...

data class Usuario(val nome: String="", val telefone: String="", val email: String="") {
}


Essa implementação é simples, mas existem dois pontos importantes a considerar:

  • Senha não salva no banco de dados: Como o Firebase é responsável pela autenticação, ele já gerencia as senhas dos usuários de forma segura. Por isso, não precisamos (nem devemos) salvar a senha no banco de dados, pois o próprio serviço de autenticação lida com a proteção e gerenciamento desse dado.
  • Construtor padrão: É necessário que nossa classe Usuario tenha um construtor com valores padrão, como mostrado. Cada propriedade é inicializada com um valor em branco para que o Firebase possa "serializar" (ou seja, converter o objeto em um formato que possa ser armazenado). Se não houver um construtor padrão, o Firebase não conseguirá realizar o salvamento do objeto, resultando em erros na operação.
Nova sintaxe - data class

No Kotlin, uma data class é uma classe especializada para armazenar dados de forma eficiente. Quando você declara uma classe como data, o compilador automaticamente gera uma série de funcionalidades úteis, como métodos para comparação, exibição e cópia, o que economiza muito código e facilita o trabalho com objetos voltados ao armazenamento de informações.

Utilizar uma data class torna a leitura e gravação de dados mais prática, uma vez que a classe já possui métodos toString(), copy(), e outros que ajudam na manipulação de dados. Além disso, data class facilita a serialização e desserialização dos dados no Firebase, pois a estrutura já é projetada para armazenar informações e não precisa de métodos adicionais para isso. A data class facilita a conversão para e a partir do formato JSON, usado internamente pelo Firebase, sem necessidade de configuração adicional, o que ajuda na simplicidade e manutenção do código.

Não é obrigatório usar data class para trabalhar com o Firebase Realtime Database no Kotlin. No entanto, ela é uma escolha conveniente e recomendada, pois simplifica o código e facilita a manipulação de objetos de dados que representam documentos ou registros.