Menu Docs

Página inicial do DocsDesenvolver aplicaçõesAtlas Device SDKs

Managed usuários de e-mail/senha - React Native SDK

Nesta página

  • Pré-requisitos
  • Configurar a autenticação do usuário no cliente
  • Configurar fornecedores @realm/react
  • Conecte-se com um componente de contingência
  • Registrar uma nova conta de usuário
  • Confirmar um endereço de e-mail de usuário
  • Repetir métodos de confirmação do usuário
  • Reenviar um e-mail de confirmação
  • Tentar novamente uma função de confirmação do usuário
  • Redefinir a senha de um usuário
  • Redefinir senha com e-mail
  • Ligar para uma função de redefinição de senha
  • Referência do Hook useEmailPasswordAuth

Você pode registrar uma nova conta de usuário, confirmar um endereço de e-mail de usuário ou redefinir a senha de um usuário no código do cliente React Native do seu aplicativo.

O gancho @realm/react useEmailPasswordAuth tem métodos e enums específicos para gerenciar usuários de e-mail/senha. Consulte useEmailPasswordAuth Hook para consulta rápida.

Antes de autenticar um usuário, você deve:

@realm/react tem provedores e ganchos para autenticação do usuário. Para configurar a autenticação do usuário:

  1. Configure @realm/react provedores.

  2. Faça login de um usuário com um componente de contingência UserProvider .

Os componentes envolvidos pelo AppProvider podem acessar os hooks useApp e useAuth . Esses componentes só serão renderizados se conectar com êxito ao AppProvider do App Services.

Os componentes agrupados pelo UserProvider podem acessar usuários autenticados com o gancho useUser . Esses componentes só serão renderizados se o seu aplicativo tiver um usuário autenticado

Para configurar a autenticação do usuário:

  1. Encerre todos os componentes que precisam acessar o App Services em AppProvider.

  2. Dentro do AppProvider, encerre todos os componentes que você deseja ter acesso como usuário autenticado com UserProvider.

  3. Em UserProvider, inclua um acessório de fallback com um componente que registra um usuário. O aplicativo renderiza este componente se não houver nenhum usuário autenticado.

import React from 'react';
import {AppProvider, UserProvider} from '@realm/react';
// Fallback log in component that's defined in another file.
import {LogIn} from './Login';
export const LoginExample = () => {
return (
<ScrollView>
<AppProvider id={APP_ID}>
{/* If there is no authenticated user, mount the
`fallback` component. When user successfully
authenticates, the app unmounts the `fallback`
component (in this case, the `LogIn` component). */}
<UserProvider fallback={LogIn}>
{/* Components inside UserProvider have access
to the user. These components only mount if
there's an authenticated user. */}
<UserInformation />
</UserProvider>
</AppProvider>
</ScrollView>
);
};

Os usuários devem ter uma conta de e-mail/senha registrada antes de poderem se conectar. Depois que um usuário se conecta, todos os componentes envoltos no UserProvider têm acesso a uma instância desse objeto de usuário por meio do gancho useUser .

Para fazer login de um usuário com e-mail e senha:

  1. Registre o usuário se ele ainda não for.

  2. Desestruturar logIn e result do gancho useEmailPasswordAuth.

  3. Passe o e-mail e a senha do usuário para LogIn() como um objeto.

  4. Lidar com o result.

export const LoginWithEmail = () => {
const {logIn, result} = useEmailPasswordAuth();
const [email, setEmail] = useState('');
const [password, setPassword] = useState('');
const performLogin = () => {
logIn({email, password});
};
// Handle `result`...
};

Antes de registrar um novo usuário de e-mail/senha, você precisa obter o endereço de e-mail e a senha dele. O endereço de e-mail não deve ser associado a outro usuário de e-mail/senha e a senha deve ter entre 6 e 128 caracteres.

Após o registro, você deve confirmar o endereço de e-mail de um novo usuário antes que ele possa fazer login no seu aplicativo.

Para registrar uma nova conta de usuário:

  1. Desestruturar register e result do gancho useEmailPasswordAuth.

  2. Passe o e-mail e a senha do usuário para register() como um objeto.

  3. Confirme o endereço de e-mail do usuário.

type RegisterButtonProps = {
email: string;
password: string;
};
const RegisterButton = ({email, password}: RegisterButtonProps) => {
const {register, result, logIn} = useEmailPasswordAuth();
// Log in the user after successful registration
useEffect(() => {
if (result.success && result.operation === AuthOperationName.Register) {
logIn({email, password});
}
}, [result, logIn, email, password]);
// For this example, the App Services backend automatically
// confirms users' emails.
const performRegistration = () => {
register({email, password});
};
return (
<Button
title="Register"
onPress={performRegistration}
/>
);
};

Os novos usuários devem confirmar que possuem o endereço de e-mail antes de fazer login no seu aplicativo, a menos que o provedor de autenticação esteja configurado para confirmar automaticamente os novos usuários. O processo de confirmação começa quando você registra um usuário e termina quando você o confirma a partir do código do cliente.

A confirmação por e-mail requer um token e tokenId válidos. Você obtém esses valores de diferentes locais, dependendo da configuração do provedor de autenticação:

Para confirmar um usuário registrado:

  1. No App Services, certifique-se de que User Confirmation Method esteja definido como Send a confirmation email.

  2. No código do cliente, desestruturar confirm e result do gancho useEmailPasswordAuth .

  3. Passe token e tokenId para confirm() como um objeto.

  4. Lidar com a confirmação com base em result.

interface ConfirmUserProps {
token: string;
tokenId: string;
}
const ConfirmUser = ({token, tokenId}: ConfirmUserProps) => {
const {confirm, result} = useEmailPasswordAuth();
const performConfirmation = () => {
confirm({token, tokenId});
};
// Handle `result`...
}

O SDK fornece métodos para reenviar e-mails de confirmação do usuário ou tentar novamente métodos de confirmação personalizados.

Se o provedor estiver configurado para enviar um e-mail de confirmação, o Atlas App Services enviará automaticamente um e-mail de confirmação quando um usuário se registrar. O e-mail contém um link para o Email Confirmation URL configurado com um token válido por 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:

  1. Desestruturar resendConfirmationEmail e result do gancho useEmailPasswordAuth.

  2. Passe o e-mail do usuário para resendConfirmationEmail() como um objeto.

  3. Lidar com a confirmação com base em result.

const ResendUserConfirmationEmail = () => {
const {resendConfirmationEmail, result} = useEmailPasswordAuth();
const [email, setEmail] = useState('');
const performResendConfirmationEmail = () => {
resendConfirmationEmail({email});
};
// Handle `result`...
}

Você pode executar novamente sua função de confirmação personalizada, se necessário.

Para tentar novamente uma função de confirmação do usuário:

  1. Desestruturar retryCustomConfirmation e result do gancho useEmailPasswordAuth.

  2. Passe o e-mail do usuário para retryCustomConfirmation() como um objeto.

  3. Lidar com a confirmação com base em result.

const RetryCustomUserConfirmation = () => {
const {retryCustomConfirmation, result} = useEmailPasswordAuth();
const [email, setEmail] = useState('');
const performRetryCustomConfirmation = () => {
retryCustomConfirmation({email});
};
// Handle `result`...
}

A redefinição da senha de um usuário é um processo de várias etapas.

  1. Em seu aplicativo cliente, forneça uma interface do usuário para um usuário redefinir sua 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.

  2. Depois de confirmar a identidade do usuário, conclua a solicitação de redefinição de senha.

  3. 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 do App Services.

Você pode enviar e-mails de redefinição de senha para confirmar as identidades dos usuários. Você deve configurar seu aplicativo do App Services para enviar um e-mail de redefinição de senha. Os aplicativos móveis podem lidar com redefinições de senha diretamente na aplicação. Configure links diretos no Android ou links universais no iOS.

Os valores token e tokenId dos e-mails de redefinição de senha são válidos por 30 minutos. Se os usuários não acessarem o Password Reset URL do e-mail nesse período, os valores expirarão e os usuários deverão solicitar outro e-mail de redefinição de senha.

Para redefinir uma senha com e-mail:

  1. No App Services, certifique-se de que Password Reset Method esteja definido como Send a password reset email.

  2. No código do cliente, desestruturar sendResetPasswordEmail , resetPassword e result do gancho useEmailPasswordAuth .

  3. Passe o e-mail do usuário para sendResetPasswordEmail() como um objeto.

  4. Extraia os valores token e tokenId da URL de redefinição de senha do e-mail.

  5. Passe a nova senha de usuário, token, e tokenId para resetPassword() como um objeto.

const SendResetPasswordEmailButton = ({email}: {email: string}) => {
const [errorMessage, setErrorMessage] = useState('');
const {sendResetPasswordEmail, result} = useEmailPasswordAuth();
const performSendResetPasswordEmail = () => {
sendResetPasswordEmail({email: email});
};
// Handle `result`...
};
interface ResetPasswordButtonProps {
password: string;
token: string;
tokenId: string;
}
const ResetPasswordButton = ({
password,
token,
tokenId,
}: ResetPasswordButtonProps) => {
const [errorMessage, setErrorMessage] = useState('');
const {resetPassword, result} = useEmailPasswordAuth();
const performPasswordReset = () => {
resetPassword({token, tokenId, password});
};
// Handle `result`...
};

Você pode chamar uma função do App Services que você define para lidar com redefinições de senha. Você deve configurar seu App Services App para executar uma função de redefinição de senha.

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.

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 deve retornar um dos três status possíveis:

  • fail

  • pending

  • success

Um status fail é tratado como um erro. O método callResetPasswordFunction() do SDK não recebe valores de retorno, portanto, não retorna um status pending ou success ao cliente.

Para chamar uma função de redefinição de senha:

  1. No App Services, crie uma função de redefinição de senha.

  2. No App Services, certifique-se de que Password Reset Method está definido para Run a password reset function e ponto-o para a sua nova função.

  3. No código do cliente, desestruturar callResetPasswordFunction e result do gancho useEmailPasswordAuth .

  4. Passe o e-mail e a senha do usuário para callResetPasswordFunction() como um objeto, seguido por quaisquer outros argumentos que você definiu para sua função personalizada.

const ResetPasswordWithFunction = () => {
const {callResetPasswordFunction, result} = useEmailPasswordAuth();
const [email, setEmail] = useState('');
const [password, setPassword] = useState('');
const performResetPassword = () => {
callResetPasswordFunction({email, password}, "extraArg1", "extraArg2");
};
}

Sua função de redefinição de senha do 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 .

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 ao seu aplicativo usando links detalhados ou links universais específicos da plataforma. Em seguida, seu aplicativo cliente pode usar o gancho useEmailPasswordAuth para concluir o fluxo de redefinição de senha.

interface ResetPasswordButtonProps {
password: string;
token: string;
tokenId: string;
}
const ResetPasswordButton = ({
password,
token,
tokenId,
}: ResetPasswordButtonProps) => {
const [errorMessage, setErrorMessage] = useState('');
const {resetPassword, result} = useEmailPasswordAuth();
const performPasswordReset = () => {
resetPassword({token, tokenId, password});
};
// Handle `result`...
};

Se a função de redefinição de senha do 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 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 .

O hook useEmailPasswordAuth tem métodos para simplificar o gerenciamento de usuários de e-mail/senha. Tem também estado relacionado à autenticação. Consulte a referência useEmailPasswordAuth para obter detalhes.

Você pode também consultar a documentação da API @realm/react do useEmailPasswordAuth.

← Usuário de dados personalizado - React Native SDK