GitHub – desirekaleba/node-mysql-jwt-auth: An example REST API showcasing how to authenticate users with NodeJS, Express, and JWT
Nội Dung Chính
NodeJS Auth REST API example with Express, Mysql, and JWT
Features
- User can sign up
- User can sign in
API endpoints
POST /api/auth/signup
: Creates a new userPOST /api/auth/signin
: Logs in a user
Body Payload Specification
Signup expects
{
firstname
:string
,
lastname
:string
,
string
,
password
:string
}
Signin expects
{
string
,
password
:string
}
Tools
- NodeJS/Express: Server
- MySQL: Storage
- JWT: Token based authentication
- bcryptjs: Password security
- winston/morgan: Logs
- Joi: Validations
Available scripts
start
: Starts the server with nodestart:dev
: Starts the server in watch modedb:up
: Creates the databasedb:down
: Drops the databasetables:up
: Creates database tablesdb:init
: Creates both the database and tables
Getting started
You can either fork this repository or clone it by starting your terminal, then change the directory to where you would like to save it and run
git clone https://github.com/desirekaleba/node-mysql-jwt-auth.git
Change to the newly downloaded directory with
cd
node-mysql-jwt-auth
Rename the file named .env.example
to .env
and update the variable values with valid ones
Install the required dependencies with
npm install
Initialize the database with
npm run db:init
Start the app with
npm start
You can also start it in watch mode with
npm run start:dev
Folder structure
.
├── README.md ├── package-lock.json ├── package.json └── src ├── app.js ├── config │ ├── db.config.init.js │ └── db.config.js ├── controllers │ └── auth.controller.js ├── database │ ├── queries.js │ └── scripts │ ├── dbDown.js │ ├── dbUp.js │ └── tablesUp.js ├── index.js ├── middlewares │ ├── asyncHandler.js │ ├── checkEmail.js │ └── validatorHandler.js ├── models │ └── user.model.js ├── routes │ └── auth.route.js ├── utils │ ├── logger.js │ ├── password.js │ ├── secrets.js │ └── token.js └── validators └── auth.js