Created
March 12, 2022 10:38
-
-
Save full-stack-concepts/73524402e223790b8c0b2afe50d11f9f to your computer and use it in GitHub Desktop.
React Form Wizards User Routes
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import express from 'express'; | |
import { nanoid } from 'nanoid'; | |
const idLength = 8; | |
const router = express.Router(); | |
/*** | |
* List all pusers | |
*/ | |
router.get("/", (req, res) => { | |
const { users } = req.app.db.data; | |
res.send(users); | |
}); | |
/*** | |
* Get user by id | |
*/ | |
router.get("/:id", (req, res) => { | |
res.send( | |
req.app.db.data.users.find( user => user.id === parseInt(req.params.id)) | |
); | |
}); | |
// Test route for registration | |
router.get("/register/:email/:password", async (req, res) => { | |
if(req.app.db.data.users.find( user => user.email === req.params.email)) { | |
res.send(`A user with ${req.params.email} is already registered`); | |
} | |
const users = [...req.app.db.data.users, { id: nanoid(idLength), token: nanoid(30), ...req.params } ]; | |
req.app.db.data.users = users; | |
await req.app.db.write(users); | |
res.json({status:true}) | |
}); | |
// Register User | |
router.post("/register", async (req, res) => { | |
if(req.app.db.data.users.find( user => user.email === req.body.email)) { | |
return res.status(500).json({ | |
status: false, | |
message: `A user with ${req.body.email} is already registered` | |
}); | |
} | |
const users = [...req.app.db.data.users, { id: nanoid(idLength), token: nanoid(30), ...req.body } ]; | |
req.app.db.data.users = users; | |
await req.app.db.write(users); | |
res.json({ | |
status: true, | |
email: req.body.email | |
}); | |
}); | |
// Login User | |
router.post("/login", (req, res) => { | |
const { email, password } = req.body; | |
const loggedInUser = req.app.db.data.users.find( user => user.email === email && user.password === password); | |
if(!loggedInUser) { | |
return res.status(500).json({ | |
status: false, | |
message: `Invalid Username or Password` | |
}); | |
} | |
// remove password key or any other from the user object | |
const user = Object.keys(loggedInUser).reduce((object, key) => { | |
if (key !== "password") { | |
object[key] = loggedInUser[key] } | |
return object | |
}, {} | |
); | |
res.json({ | |
status: true, | |
user | |
}); | |
}); | |
export default router; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment