The-Bugger-Ducks / owl-partners-mobile

Mobile do projeto "Owl Partners" (5º DSM - 2023, FATEC Profº Jessen Vidal - SJC)
1 stars 0 forks source link

[#0502] Autenticação de usuário #20

Closed gioliveirass closed 1 year ago

gioliveirass commented 1 year ago

Descrição da atividade

Criar interface para autenticação de usuários de acordo com o protótipo.

Informações necessárias para execução da atividade.

DoR

DoD

ThHenrique commented 1 year ago

Tela

Image

Resumo da atividade

O botão "Fazer Login" só fica ativo caso o formulário seja preenchido corretamente, campo email com dados do tipo email (incluso @ no texto) e senha devidamente preenchida.

Caso o usuário insira um email e senha que não reconhecido no backend os campos ficam marcados como inválidos.

Métodos principais

View


const onSubmit: SubmitHandler<IUserLogin> = async data => {
    try {
      setIsLoading(true);
      await authRequest.authenticate(data);
      goToApp();
    } catch (error) {
      if (error === "Unauthorized") {
        setError("password", { message: "Senha incorreta. Tente novamente" });
      }
    } finally {
      setIsLoading(false);
    }
  };

  async function handleUserAuthentication() {
    const token = await StorageController.getToken();

    if (token) goToApp();
  }

  function goToApp() {
    navigation.dispatch(StackActions.replace("HomeStack"));
  }

Service


public async authenticate(payload: IUserLogin) {
    try {
      const response = await api.post<IUserAuthenticated>(USER_ENDPOINTS.USER_LOGIN, payload);

      const user = response.data;

      await StorageController.setToken(user.token)
      await StorageController.setUserInfo(user)

      return response;
    } catch (error) {
      if (isAxiosError(error)) {
        if (error.response) {
          if (error.response.status === 401) {
            throw new Error("Unauthorized")
          }
        }
      }
      throw new Error("Algo inesperado aconteceu, tente novamente!")
    }
  }
gioliveirass commented 1 year ago

@ThHenrique SHOW