Gerenciar usuários de e-mail/senha - Kotlin SDK
Nesta página
- Registrar um novo usuário
- Confirmar um endereço de e-mail de novo usuário
- Repetir métodos de confirmação do usuário
- Reenviar um e-mail de confirmação do usuário
- Tentar novamente uma função de confirmação do usuário
- Redefinir a senha de um usuário
- Enviar um e-mail de redefinição de senha
- Executar uma função de redefinição de senha
- Conectar ou desconectar um usuário
Ao habilitar oprovedor de e-mail/senha do em seu Atlas App Services , você pode lidar com a autenticação do usuário a partir do código do cliente registrando e conectando novo usuário.
Registrar um novo usuário
Para registrar um novo usuário, passe um e-mail e senha fornecidos pelo usuário para app.emailPasswordAuth.registerUser():
val app: App = App.create(YOUR_APP_ID) // Replace this with your App ID runBlocking { // use runBlocking sparingly -- it can delay UI interactions app.emailPasswordAuth.registerUser(email, password) }
Confirmar um endereço de e-mail de novo usuário
Ao habilitar o provedor de e-mail/senha, no Atlas App Services, você seleciona um método de confirmação. O serviço de confirmação de e-mail/senha do Atlas App Services fornece um token e ID de token que você pode obter ao usuário por e-mail ou por uma Atlas Function. Para confirmar o usuário, forneça esse token e tokenId para app.emailPasswordAuth.confirmUser():
val app: App = App.create(YOUR_APP_ID) // Replace this with your App ID runBlocking { // use runBlocking sparingly -- it can delay UI interactions app.emailPasswordAuth.confirmUser(token, tokenId) }
Depois de confirmar o usuário, você pode fazer o login com as credenciais de e-mail/senha.
Repetir métodos de confirmação do usuário
O SDK fornece métodos para reenviar e-mails de confirmação do usuário ou tentar novamente métodos de confirmação personalizados.
Reenviar um e-mail de confirmação do usuário
Reenviar um e-mail de confirmação. Os tokens de confirmação em cada URL expiram após 30 minutos. Se um usuário não seguir o link e confirmar dentro desse período, ele deverá solicitar um novo e-mail de confirmação.
Para reenviar um e-mail de confirmação do usuário, forneça o endereço de e-mail do usuário para app.emailPasswordAuth.resendConfirmationEmail():
val app: App = App.create(YOUR_APP_ID) // Replace this with your App ID runBlocking { // use runBlocking sparingly -- it can delay UI interaction app.emailPasswordAuth.resendConfirmationEmail(email) }
Tentar novamente uma função de confirmação do usuário
Para tentar novamente uma função de confirmação de usuário personalizada, forneça o endereço de e-mail do usuário para app.emailPasswordAuth.retryCustomConfirmation():
val app: App = App.create(YOUR_APP_ID) // Replace this with your App ID runBlocking { // use runBlocking sparingly -- it can delay UI interaction app.emailPasswordAuth.retryCustomConfirmation(email) }
Redefinir a senha de um usuário
A redefinição da senha de um usuário é um processo de várias etapas.
Em seu aplicativo cliente, você fornece uma interface do usuário para o usuário redefinir a senha. Em seguida, seu App Services App pode enviar um e-mail ou executar uma função personalizada para confirmar a identidade do usuário.
Após confirmar a identidade do usuário, você pode concluir a solicitação de redefinição de senha.
Após a redefinição de senha ser concluída, o usuário poderá se conectar usando a nova senha.
Para obter mais informações sobre como definir seu método de redefinição de senha preferido, consulte a documentação de autenticação de e-mail/senha doAtlas App Services .
Enviar um e-mail de redefinição de senha
Para enviar e-mails de redefinição de senha para confirmar a identidade do usuário, você deve configurar seu aplicativo para enviar um e-mail de redefinição de senha.
Para iniciar o processo de redefinição de senha, ligue para app.emailPasswordAuth.sendResetPasswordEmail() com o e-mail do usuário. Atlas App Services envia um e-mail ao usuário que contém um URL exclusivo. O usuário deve acessar esta URL dentro 30 minutos para confirmar a redefinição.
val app: App = App.create(YOUR_APP_ID) // Replace this with your App ID runBlocking { // use runBlocking sparingly -- it can delay UI interaction app.emailPasswordAuth.sendResetPasswordEmail(email) }
Depois que o usuário acessar o URL do e-mail de redefinição de senha, chame app.emailPasswordAuth.resetPassword() com o e-mail do usuário, a nova senha e os token
e tokenId
fornecidos na URL exclusiva.
Se o usuário não acessar a URL do e-mail de redefinição de senha dentro de 30 minutos, o token
e o tokenId
expirarão. Você deve iniciar o processo de redefinição de senha novamente.
val app: App = App.create(YOUR_APP_ID) // Replace this with your App ID runBlocking { // use runBlocking sparingly -- it can delay UI interactions app.emailPasswordAuth.resetPassword(token, tokenId, newPassword) }
Executar uma função de redefinição de senha
Ao configurar seu aplicativo para executar uma função de redefinição de senha, você define a função que deve ser executada quando chamar app.emailPasswordAuth.callResetPasswordFunction() do SDK. Esta função pode receber um nome de usuário, uma senha e qualquer número de argumentos adicionais. Você pode usar esses argumentos para especificar detalhes como respostas a perguntas de segurança ou outros desafios que o usuário deve passar para concluir com êxito uma redefinição de senha.
Você pode preferir usar uma função personalizada de redefinição de senha quando quiser definir seus próprios fluxos de redefinição de senha. Por exemplo, você pode enviar um e-mail de redefinição de senha personalizado de um domínio específico. Ou você pode usar um serviço diferente do e-mail para confirmar a identidade do usuário.
No lado do App Services, você define a função personalizada de redefinição de senha que é executada quando você chama esse método. Essa função pode retornar um dos três status possíveis:
fail
pending
success
Um status fail
é tratado como um erro ServiceException
pelo SDK. O SDK callResetPasswordFunction()
não retorna um status pending
ou success
ao cliente.
Caso pendente do lado do servidor
Sua função de redefinição de senhaAtlas App Services pode retornar pending
se você quiser que o usuário execute alguma etapa adicional para confirmar sua identidade. No entanto, esse valor de retorno não é passado para o callResetPasswordFunction()
do SDK, portanto, seu aplicativo cliente deve implementar sua própria lógica para lidar com um status pending
.
val app: App = App.create(YOUR_APP_ID) // Replace this with your App ID runBlocking { // use runBlocking sparingly -- it can delay UI interaction app.emailPasswordAuth.callResetPasswordFunction(email, newPassword) }
Sua função no servidor pode enviar um e-mail usando um provedor de e-mail personalizado. Ou você pode usar SMS para confirmar a identidade do usuário por mensagem de texto.
Você tem acesso a um token
e tokenId
no contexto da função de redefinição de senha do App Services. Se você passar essas informações da função de redefinição de senha do App Services, poderá passar esses valores de volta para seu aplicativo usando links detalhados no Android ou links universais no iOS. Em seguida, seu aplicação cliente pode ligar resetPassword()
para para concluir o fluxo de redefinição de senha.
val app: App = App.create(YOUR_APP_ID) // Replace this with your App ID runBlocking { // use runBlocking sparingly -- it can delay UI interactions app.emailPasswordAuth.resetPassword(token, tokenId, newPassword) }
Caso de sucesso do servidor
Se a função de redefinição de senha doAtlas App Services fizer validação adicional dentro da função ou se você tiver validado a identidade do usuário antes de tentar redefinir a senha, poderá configurar a função do Atlas App Services para retornar success
. No entanto, esse valor de retorno não é passado para o callResetPasswordFunction()
do SDK, portanto, seu aplicativo cliente deve implementar sua própria lógica para lidar com um status success
.
Chamar a função neste exemplo executa todo o processo de redefinição de senha.
val app: App = App.create(YOUR_APP_ID) // Replace this with your App ID runBlocking { // use runBlocking sparingly -- it can delay UI interaction app.emailPasswordAuth.callResetPasswordFunction(email, newPassword, args) }
Conectar ou desconectar um usuário
Depois de registrar um usuário, é uma etapa separada fazer o login do usuário.
val app: App = App.create(YOUR_APP_ID) // Replace this with your App ID runBlocking { val emailPasswordCredentials = Credentials.emailPassword(email, password) val user = app.login(emailPasswordCredentials) }
Você pode desconectar um usuário autenticado.
val app: App = App.create(YOUR_APP_ID) // Replace this with your App ID runBlocking { val user = app.login(credentials) // ... work with logged-in user ... // Ensure all local updates are uploaded // before logging out user.logOut() }