-
Create a server.js file
-
Install express
-
In server.js - Setup an express application
-
Paste in the following array of users: let users = [ {username: "User1", password: "PW1"}, {username: "User2", password: "PW2"}, {username: "User3", password: "PW3"}, ]
-
Parse incoming POST json data by the code:
app.use( express.json() )
-
Define a POST route /login
- console.log the received body (=> req.body)
- For now: Just return an object with a message property back to the frontend:
- e.g.: { message: 'User logged in successfully...' }
- Use res.send() to send the given object back to the client as response
-
Test your POST route by either POSTMAN or RESTED client
- Do you see the message object printed there?
- Check the terminal where the backend runs: Do you see the form data printed here?
- Great, then continue with the next step!
Now we want to actually send in a pair of username and password. And depending on if that users exist we want to return a login success, otherwise a login failure.
The route /login should now do the following:
-
read username and password data from req.body
- the fields are accessible like so:
- req.body.username
- req.body.password
- the fields are accessible like so:
-
Now check: Does a user with given username and pw exist in our array of users?
- If so: Send back the message "Login successful"
- If not: Send back the message "Login failed"
- Hint: You can check if an entry exists in an array with different array methods
- Some recommendations: arr.find(item => ...) or arr.some(item => ...)
- If you struggle with that: Look up the documentation of these methods, e.g. on W3C or MDN to see some examples
-
Test with POSTMAN or RESTED client if your login code works!
- Test the output when sending a username & password that does not exist
- Test the output when sending a username & password that does exist
-
Setup a folder "client"
-
Setup a file "login.html" within that folder
- in login.html: provide an HTML form where a user can enter "username" and "password"
- create a function "login"
- call that "login" on submit
- don't forget to prevent the default browser submit (=> e.preventDefault() )
- perform a fetch() call to your POST url (http://localhost:5000/login)
- send your form data in the body (don't forget the "stringify")
- display the returned response in the browser console
-
In server.js: Provide a route GET /login
- load the file login.html here and send it to the user
- call "http://localhost:5000/login in the browser
- if your form loads: fill out the form and submit it
- check the browser console
- you received the message from the server?