1

on my website I have a login form where the user inputs their information and when they submit a post request is made where their info is checked, and if it is valid I redirect them back to the login form where they then enter the code that was sent to their email. My question is when the post request is made the second time how would I use the same url but not have to go through the validating again.

Auth.js

//Login Route
router.post('/login', async(req, res) => {
    //Validate Data
    const { error } = loginValidation(req.body);

    if (error) {
        let msg = error.message;
        return res.cookie('loginError', msg, [{ httpOnly: true }]).redirect('/login');;

    }
    //Check if user exists
    const user = await User.findOne({ email: req.body.email });
    if (!user) {
        let msg = 'Email or password is invalid!'
        return res.cookie('loginError', msg, [{ httpOnly: true }]).redirect('/login');;
    }


    //Check if password is correct
    const validPass = await bcrypt.compare(req.body.password, user.password);
    if (!validPass) {
        let msg = 'Email or password is invalid!'
        return res.cookie('loginError', msg, [{ httpOnly: true }]).redirect('/login');;
    }

    const verificationCode = Math.floor(100000 + Math.random() * 900000);
    email.loginCode(req.body.email, verificationCode);
    return res.cookie('formComplete', 'true', [{ httpOnly: true }]).redirect('/login');
    //Create and assign a jwt
    const token = jwt.sign({ _id: user._id }, process.env.TOKEN_SECRET);
    res.header('auth-token', token).redirect('/dashboard');
});

Sorry if this is a dumb question, i'm new to express.js, if you need any more info let me know.

1 Answer 1

1

Actually, it's not really related to express.
You are asking about "state" in the server.

If you was to "refactor" your question, it could become "I have this user that's signed in, how to verify him before he visit any routes"

The solution can be several

  1. Add a global state. Let say isVerified = false, after verification for the first time, you set it to true
  2. As you see in my "refactor" question above, session is something you use to check user logged in or shopping cart...

I suggest you dig into both solutions above, for example for the first one, where to declare that global state? What if we need to check multiple users?

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.