1. Nós iremos em “components” criar uma pasta chamada “homeAuth”, e aqui iremos colocar todos os components da nossa home, agora autenticada.

  2. Iremos então em “pages”, aqui, nós iremos criar um arquivo chamado “home.tsx”, e não iremos criar um “.scss” para essa home, tudo vai vir dos components.

    const HomeAuth = function () {
      return (
        <>
    			<Head>
            <title>Onebitflix - Home</title>
            <link rel="shortcut icon" href="/favicon.svg" type="image/x-icon" />
          </Head>
          <main></main>
        </>
      );
    };
    
    export default HomeAuth;
    
  3. Nós iremos então fazer a criação de um parágrafo, apenas para configurar a parte de autenticação.

    const HomeAuth = function () {
      return (
        <>
    			<Head>
            <title>Onebitflix - Home</title>
            <link rel="shortcut icon" href="/favicon.svg" type="image/x-icon" />
          </Head>
          <main>
            <p>Você está logado!</p>
          </main>
        </>
      );
    };
    
    export default HomeAuth;
    
  4. Agora, nós iremos fazer uma verificação de autenticação. Nós iremos verificar se a pessoa tem um token na página de login e na de registro, se ela tiver, vamos mandar ela para home, nós vamos colocar esse useEffect logo abaixo dos useState, acima de todas as outras coisas.

    useEffect(() => {
    	if (sessionStorage.getItem("onebitflix-token")) {
    	  router.push("/home");
      }
    }, []);
    
  5. Agora faremos a mesma coisa em registro, colocando acima de todas as coisas.

    useEffect(() => {
    	if (sessionStorage.getItem("onebitflix-token")) {
    	  router.push("/home");
      }
    }, []);
    
  6. Agora, se a pessoa chegar nessa página estando autenticada, nós vamos redirecionar ela de forma automática para a página home.


Header

Criação do header logado (Elementos e estilo)

  1. Nós iremos na pasta “common”, nela nós iremos criar uma pasta chamada “headerAuth”, pois o header autenticado vai fazer parte de várias páginas ao mesmo tempo.

    import styles from "./styles.module.scss";
    
    const HeaderAuth = function () {
      return <></>;
    };
    
    export default HeaderAuth;
    
  2. Vamos então montar a nossa estrutura. Nós iremos primeiro fazer a parte da logo. Nós iremos fazer com que a pessoa clicando na logo, seja mandada para a página home.

    <>
    	<Container className={styles.nav}>
    		<Link href="/home">
    		  <img src="/logoOnebitflix.svg" alt="logoOnebitflix" className={styles.imgLogoNav}/>
    	  </Link>
    	</Container>
    </>
    
  3. Agora nós iremos separar por div o nosso input, a imagem para o search e também as letras do perfil da pessoa.

    <>
    	<Container className={styles.nav}>
    	  <Link href="/home">
    	    <img src="/logoOnebitflix.svg" alt="logoOnebitflix" className={styles.imgLogoNav}/>
        </Link>
    	  <div className="d-flex align-items-center">
        <Form>
    		    <Input
    		      name="search"
    	        type="search"
    	        placeholder="Pesquisar"
    	        className={styles.input}
    	      />
    	     </Form>
    		   <img
    		     src="/iconSearch.svg"
    	       alt="lupaHeader"
    	       className={styles.searchImg}
    	     />
    	     <p className={styles.userProfile}>AB</p>
         </div>
    	</Container>
    </>
    
  4. Nós vamos agora ter o retorno visual desse header, vamos em “home.tsx”

    <>
    	<main>
    	  <HeaderAuth />
      </main>
    </>
    
  5. Nós vamos agora verificar que está tudo certo visualmente, faltando apenas colocarmos as suas configurações visuais.

    @import "../../../../styles/colors.module.scss";
    .imgLogoNav{
      width: 160px;
    	cursor: pointer;
    }
    .nav{
      display: flex;
      flex-wrap: wrap;
      justify-content: space-between;
      align-items: center;
      padding: 24px 14px;
    }
    .userProfile{
      font-weight: bold;
      font-size: 24px;
      background-color: white;
    	text-transform: uppercase;
      color: black;
    	min-width: 45px;
      min-height: 45px;
      border-radius: 50%;
      display: flex;
      justify-content: center;
      align-items: center;
      cursor: pointer;
    	margin: 0px 14px;
    }
    
  6. Podemos ver que o resultado já está bem melhor, faltando alguns poucos ajustes.

    .input {
      background-color: transparent;
      color: white;
      border-color: $lightGray;
      &:focus {
        background-color: transparent;
        color: white;
        border-color: $mediumGray;
        box-shadow: none;
      }
    
      &::placeholder {
        color: white;
      }
    }
    .searchImg {
      width: 26px;
      margin: 0px 10px;
      cursor: pointer;
    }
    

Criação do modal

  1. Agora, nós iremos fazer a criação de um modal. Esse modal ele terá a função de mandar o usuário para a página de dados e também dar a opção de sair, para ele sair da conta dele quando quiser.

  2. Nós iremos utilizar o “react-modal”. ⇒ https://reactcommunity.org/react-modal/. Vamos então fazer a instalação dele.

    npm install react-modal
    
    npm i --save-dev @types/react-modal