Docs Menu
Docs Home
/ /
Administrar usuarios

Administrar usuarios con correo electrónico y contraseña - SDK de Kotlin

Cuando habilitas el Proveedor de correoelectrónico/contraseña en su aplicación Atlas App Services, puede manejar la autenticación del usuario desde el código del cliente registrando e iniciando sesión como un nuevo usuario.

Para registrar un nuevo usuario, pase un correo electrónico y una contraseña proporcionados por el usuario a 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)
}

Al habilitar el proveedor de correo electrónico/contraseña en App Services, se selecciona un método de confirmación. El servicio de confirmación de correo electrónico/contraseña de App Services proporciona un token y un ID de token que se pueden enviar al usuario por correo electrónico o mediante una función Atlas personalizada. Para confirmar al usuario, proporcione dicho token y tokenId a 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)
}

Después de confirmar el usuario, puede proceder a iniciar sesión con credenciales de correo electrónico/contraseña.

El SDK proporciona métodos para volver a enviar correos electrónicos de confirmación de usuario o reintentar métodos de confirmación personalizados.

Reenviar un correo electrónico de confirmación. Los tokens de confirmación de cada URL caducan después de 30 minutos. Si un usuario no sigue el enlace ni confirma la confirmación dentro de ese plazo, deberá solicitar un nuevo correo electrónico de confirmación.

Para reenviar un correo electrónico de confirmación de usuario, proporcione la dirección de correo electrónico del usuario a 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)
}

Para volver a intentar una función de confirmación de usuario personalizada, proporcione la dirección de correo electrónico del usuario a 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)
}

Restablecer la contraseña de un usuario es un proceso de varios pasos.

  1. En tu aplicación cliente, proporcionas una interfaz de usuario para que el usuario restablezca su contraseña. Tu aplicación de App Services puede enviar un correo electrónico o ejecutar una función personalizada para confirmar la identidad del usuario.

  2. Después de confirmar la identidad del usuario, puede completar la solicitud de restablecimiento de contraseña.

  3. Una vez completado el restablecimiento de la contraseña, el usuario puede iniciar sesión con la nueva contraseña.

Para obtener más información sobre cómo configurar su método preferido de restablecimiento de contraseña, consulte la documentación de Autenticación de contraseña/correo electrónico de los servicios de aplicaciones.

Para enviar correos electrónicos de restablecimiento de contraseña para confirmar la identidad del usuario, debe configurar su aplicación para enviar un correo electrónico de restablecimiento de contraseña.

Para iniciar el proceso de restablecimiento de contraseña, llame a app.emailPasswordAuth.sendResetPasswordEmail() con el correo electrónico del usuario. App Services envía un correo electrónico al usuario con una URL única. El usuario debe visitar esta URL en un 30 plazo de minutos para confirmar el restablecimiento.

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)
}

Después de que el usuario haya visitado la URL del correo electrónico de restablecimiento de contraseña, llame a app.emailPasswordAuth.resetPassword() con el correo electrónico del usuario, la nueva contraseña y la token y tokenId proporcionado en la URL única.

Si el usuario no visita la URL del correo electrónico de restablecimiento de contraseña en 30 minutos, los token y tokenId caducarán. Debe reiniciar el proceso de restablecimiento de contraseña.

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)
}

Al configurar tu aplicación para que ejecute una función de restablecimiento de contraseña, defines la función que debe ejecutarse al llamar a app.emailPasswordAuth.callResetPasswordFunction() desde el SDK. Esta función puede aceptar un nombre de usuario, una contraseña y cualquier número de argumentos adicionales. Puedes usar estos argumentos para especificar detalles como las respuestas a preguntas de seguridad u otras pruebas que el usuario debe superar para restablecer la contraseña correctamente.

Quizás prefiera usar una función de restablecimiento de contraseña personalizada si desea definir sus propios flujos de restablecimiento de contraseña. Por ejemplo, podría enviar un correo electrónico de restablecimiento de contraseña personalizado desde un dominio específico. O podría usar un servicio distinto del correo electrónico para confirmar la identidad del usuario.

En App Services, define la función de restablecimiento de contraseña personalizada que se ejecuta al llamar a este método. Esta función puede devolver uno de tres estados posibles:

  • fail

  • pending

  • success

El SDK considera un estado fail como un error ServiceException. El SDK callResetPasswordFunction() no devuelve un estado pending ni success al cliente.

La función de restablecimiento de contraseña de App Services puede devolver pending si desea que el usuario realice algún paso adicional para confirmar su identidad. Sin embargo, este valor de retorno no se pasa al del callResetPasswordFunction() SDK, por lo que la aplicación cliente debe implementar su propia lógica para gestionar un pending estado.

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)
}

Su función del servidor podría enviar un correo electrónico mediante un proveedor de correo electrónico personalizado. O bien, podría usar SMS para confirmar la identidad del usuario mediante un mensaje de texto.

Tienes acceso a token y tokenId en el contexto de la función de restablecimiento de contraseña de App Services. Si pasas esta información desde la función de restablecimiento de contraseña de App Services, puedes devolver estos valores a tu aplicación mediante enlaces profundos en Android.o enlaces universales en iOS. Luego, la aplicación cliente puede llamar resetPassword() a para completar el proceso de restablecimiento de contraseña.

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)
}

Si la función de restablecimiento de contraseña de App Services realiza una validación adicional dentro de la función, o si ya validó la identidad del usuario antes de intentar restablecer la contraseña, puede configurar la función de App Services para que success devuelva. Sin embargo, este valor de retorno no se pasa al del callResetPasswordFunction() SDK, por lo que la aplicación cliente debe implementar su propia lógica para gestionar un success estado.

Llamar a la función en este ejemplo realiza todo el proceso de restablecimiento de contraseña.

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)
}

Después de registrar un usuario, hay un paso aparte para iniciar sesión.

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)
}

Puede cerrar la sesión de un usuario 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()
}

Volver

Crear y autenticar usuarios