- Learn how to connect to database from your backend.
- Learn how to save and query data from your databse.
- Learn Authentication with Passport + JWT.
Here are the list of learning resources for this task.
Topic | Resource |
---|---|
How NOT to store passwords | Link to this resource |
Authentication with PassportJS | Link to this resource |
JSON Web Tokens | Link to this resource |
PassportJS with JWT | Link to this resource |
Sequelize | Link to this resource |
Node JS and Postgre Recipe App | Link to youtube playlist |
PERN Crash Course | Link to this resource |
Please use the same Git Repo for all the tasks. Continue working on the repo that you've worked on for Task 1.
- You'll be working with PostgreSQL as the database. If you don't have that installed locally already. You should.
- You'll be working on a standard and a very simple
Local Startegy
with PassportJS. This give you a simple login and signup mechanism as any other service out on the internet. - Here's the schema of the user table in the database.
id: Randomly Generated ID by the DB.
email: Email of the user.
password: Encrypted Password of the user.
- Create a POST API which takes in email and password, saves those credentials in the User Table in the database. Returns
{session: <token>}
as response.
Request Type: POST
Route: /user/signup
Request Body: {email: [email protected], password: "SamplePassword"}
Response Code: 200
Response Body: {session: <token>}
- Before you save a new user. Check for existing email and if that's found, return Status Code 400
Request Type: POST
Route: /user/signup
Request Body: {email: [email protected], password: "SamplePassword"}
Response Code: 400
Response Body: {error: "User already exists."}
- Create a POST API which takes in email and password, validates those credentials with the User Table in the database. Returns
{session: <token>}
as response.
Request Type: POST
Route: /user/login
Request Body: {email: [email protected], password: "SamplePassword"}
Response Code: 200
Response Body: {session: <token>}
- If you have an invalid password
Request Type: POST
Route: /user/login
Request Body: {email: [email protected], password: "WrongPassword"}
Response Code: 400
Response Body: {error: "Invalid Password"}
- If the user does not exists.
Request Type: POST
Route: /user/login
Request Body: {email: [email protected], password: "SamplePassword"}
Response Code: 400
Response Body: {error: "User does not exist."}
Push all your changes to your GitHub Repo. Please submit your GitHub Repo to the whatsApp Group as soon as you're done.