<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Josh Tate</title>
    <description>The latest articles on DEV Community by Josh Tate (@jtcodes_).</description>
    <link>https://dev.to/jtcodes_</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F930201%2F07bd5d9b-cd3c-4d01-965c-2122916c870a.png</url>
      <title>DEV Community: Josh Tate</title>
      <link>https://dev.to/jtcodes_</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jtcodes_"/>
    <language>en</language>
    <item>
      <title>Unable to sign up once log in details have been entered</title>
      <dc:creator>Josh Tate</dc:creator>
      <pubDate>Wed, 21 Sep 2022 17:13:35 +0000</pubDate>
      <link>https://dev.to/jtcodes_/unable-to-sign-up-once-log-in-details-have-been-entered-5c7l</link>
      <guid>https://dev.to/jtcodes_/unable-to-sign-up-once-log-in-details-have-been-entered-5c7l</guid>
      <description>&lt;p&gt;Hello guys , im new to react.js an im attemting to build a chat application. Unfortunately i've ran into a problem whereby when i press the sign up button there seems to me no route and i cant enter the next page. Below is a picture of the error im seeing:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz8n5vn6cmmvkjkocm61q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz8n5vn6cmmvkjkocm61q.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The codes below should help aswell !&lt;br&gt;
index.js file in components folder (client side)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const express = require ('express');
const cors = require ('cors');

//adding routes for sign in + registrationn//
const authRoutes = require("./routes/auth.js");

const app = express ();
const PORT = process.env.PORT || 5009;

require ('dotenv').config();

app.use(cors());
app.use(express.json());
app.use(express.urlencoded());

app.get('/' , (req,res) =&amp;gt; {
     res.send('ne, world');

});

app.use('/auth', authRoutes);

app.listen(PORT, () =&amp;gt; console.log(`Server running on port ${PORT}`));

```



Auth.jsx file in components folder (client side )


```

import React, {useState} from 'react';
import Cookies from 'universal-cookie';
import axios from 'axios';

import signinImage from '../assets/Group 2.png';

const cookies = new Cookies();


//forming the inital state of input fields 
const initialState = {
   fullName:'',
   username:'',
   password:'',
   confirmPassword:'',
   phoneNumber:'',
   avatarURL:'',


}
const Auth = () =&amp;gt; {

    const [form, setForm] = useState(initialState);

    const [isSignup , setIsSignup] = useState(true);

    const handleChange = (e) =&amp;gt; {

        setForm({...form,[e.target.name]: e.target.value});

    }

    const handleSubmit = async  (e)=&amp;gt;{
       e.preventDefault();

       const {username , password , phoneNumber , avatarURL } = form;

       const URL = 'http://localhost:5009/auth/SignUp'

       //making requests to different url backened each time 
       const {data :  { token ,userId , hashedPassword , fullName }} = await axios.post(`${URL}/${isSignup ? 'Sign Up ' : 'Sign In'}`,{
         username , password , fullName: form.fullName , phoneNumber , avatarURL,
       })
       //storing data in cookies 
       cookies.set('token ' , token )
       cookies.set('username ' , username )
       cookies.set('fullName' , fullName)
       cookies.set('userId ' , userId )

       if (isSignup){
         cookies.set('phoneNumber' , phoneNumber )
         cookies.set('avatarURL' , avatarURL)
         cookies.set('hashedPassword' , hashedPassword )
       }
       //reloads application
       window.location.reload();
    }
    //changing state of my sign up screen depending on the state before
    const switchMode = () =&amp;gt; {
      setIsSignup((prevIsSignup) =&amp;gt; !prevIsSignup);
  }



  return (
    &amp;lt;div className=" auth__form-container"&amp;gt;
        &amp;lt;div className="auth__form-container_fields"&amp;gt;
            &amp;lt;div className="auth__form-container_fields-content"&amp;gt;
                &amp;lt;p&amp;gt;{isSignup ? 'Sign up' : 'Sign In'}&amp;lt;/p&amp;gt;
                &amp;lt;form onSubmit= {handleSubmit}&amp;gt;
                 {isSignup &amp;amp;&amp;amp;(
                     &amp;lt;div className= "auth__form-container_fields-content_input"&amp;gt;
                        &amp;lt;label htmlFor="fullName"&amp;gt;Full Name&amp;lt;/label&amp;gt;
                        &amp;lt;input
                         name="fullName"
                         type="text"
                         placeHolder= "Full Name"
                         onChange={handleChange}
                         required
                        /&amp;gt;
                     &amp;lt;/div&amp;gt;
                 ) }
                  &amp;lt;div className= "auth__form-container_fields-content_input"&amp;gt;
                        &amp;lt;label htmlFor="username"&amp;gt;Username&amp;lt;/label&amp;gt;
                        &amp;lt;input
                         name="username"
                         type="text"
                         placeHolder= "Username"
                         onChange={handleChange}
                         required
                        /&amp;gt;
                     &amp;lt;/div&amp;gt;
                     {isSignup &amp;amp;&amp;amp;(
                     &amp;lt;div className= "auth__form-container_fields-content_input"&amp;gt;
                        &amp;lt;label htmlFor="phoneNumber"&amp;gt;Phone Number&amp;lt;/label&amp;gt;
                        &amp;lt;input
                         name="phoneNumber"
                         type="text"
                         placeHolder= "Phone Number"
                         onChange={handleChange}
                         required
                        /&amp;gt;
                     &amp;lt;/div&amp;gt;
                 ) }
                 {isSignup &amp;amp;&amp;amp;(
                     &amp;lt;div className= "auth__form-container_fields-content_input"&amp;gt;
                        &amp;lt;label htmlFor="avatarURL"&amp;gt;Avatar URL&amp;lt;/label&amp;gt;
                        &amp;lt;input
                         name="avatarURL"
                         type="text"
                         placeHolder= "Avatar URL"
                         onChange={handleChange}
                         required
                        /&amp;gt;
                     &amp;lt;/div&amp;gt;
                 ) }
                 &amp;lt;div className= "auth__form-container_fields-content_input"&amp;gt;
                        &amp;lt;label htmlFor="password"&amp;gt;Password&amp;lt;/label&amp;gt;
                        &amp;lt;input
                         name="password"
                         type="password"
                         placeHolder= "Password"
                         onChange={handleChange}
                         required
                        /&amp;gt;
                     &amp;lt;/div&amp;gt;
                     {isSignup &amp;amp;&amp;amp;(
                     &amp;lt;div className= "auth__form-container_fields-content_input"&amp;gt;
                        &amp;lt;label htmlFor="confirmPassword"&amp;gt;Confirm Password&amp;lt;/label&amp;gt;
                        &amp;lt;input
                         name="confirmPassword"
                         type="password"
                         placeHolder= "Confirm Password"
                         onChange={handleChange}
                         required
                        /&amp;gt;
                     &amp;lt;/div&amp;gt;
                 ) }

                   &amp;lt;div className="auth__form-container_fields-content_button"&amp;gt;
                    &amp;lt;button&amp;gt;{isSignup ? "Sign up " : "Sign In"}&amp;lt;/button&amp;gt;
                    &amp;lt;/div&amp;gt;  
                &amp;lt;/form&amp;gt;
              &amp;lt;div className="auth__form-container_fields-account"&amp;gt;
                &amp;lt;p&amp;gt;
                    {isSignup 
                    ? "Already have an account?"
                    :"Dont have an account ?"
                 }
                 &amp;lt;span onClick={switchMode}&amp;gt;
                    {isSignup ? ' Sign In' : ' Sign up'}

                 &amp;lt;/span&amp;gt;
                &amp;lt;/p&amp;gt;

              &amp;lt;/div&amp;gt;
            &amp;lt;/div&amp;gt;

        &amp;lt;/div&amp;gt;

      &amp;lt;div className="auth__form-container_image"&amp;gt;
        &amp;lt;img src = {signinImage} alt ="Sign In" /&amp;gt;

      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
  )
}

export default Auth


```


Auth.js file in controller folder (server side )


```

const { connect } = require('getstream');
const bcrypt = require('bcrypt');
const StreamChat = require('stream-chat').StreamChat;
const crypto = require('crypto');

require('dotenv').config();

const api_key = process.env.STREAM_API_KEY;
const api_secret = process.env.STREAM_API_SECRET;
const app_id = process.env.STREAM_APP_ID;

const signup = async (req, res) =&amp;gt; {
    try {
        const { fullName, username, password, phoneNumber } = req.body;

        const userId = crypto.randomBytes(16).toString('hex');

        const serverClient = connect(api_key, api_secret, app_id);

        const hashedPassword = await bcrypt.hash(password, 10);

        const token = serverClient.createUserToken(userId);

        res.status(200).json({ token, fullName, username, userId, hashedPassword, phoneNumber });
    } catch (error) {
        console.log(error);

        res.status(500).json({ message: error });
    }
};

const login = async (req, res) =&amp;gt; {
    try {
        const { username, password } = req.body;

        const serverClient = connect(api_key, api_secret, app_id);
        const client = StreamChat.getInstance(api_key, api_secret);

        const { users } = await client.queryUsers({ name: username });

        if(!users.length) return res.status(400).json({ message: 'User not found' });

        const success = await bcrypt.compare(password, users[0].hashedPassword);

        const token = serverClient.createUserToken(users[0].id);

        if(success) {
            res.status(200).json({ token, fullName: users[0].fullName, username, userId: users[0].id});
        } else {
            res.status(500).json({ message: 'Incorrect password' });
        }
    } catch (error) {ads
        console.log(error);

        res.status(500).json({ message: error });
    }
};

module.exports = { signup, login }


```


Auth.js file in routes folder (server side)


```
const express = require ('express');

const { signup, login } = require('../controllers/auth.js/');

const router = express.Router();

//initialising my 2 different routes //
//post route sending data from frontend to backend 
router.post('/signup', signup);
router.post('/login', login);


module.exports = router;


```



Any help would be , much appreciated thank you !!!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>node</category>
      <category>javascript</category>
      <category>react</category>
      <category>axios</category>
    </item>
  </channel>
</rss>
