Skip to content

An authentication Restful API featuring OTP verification, JSON Web Token authentication ( JWT ), and database CRUD. Built with Express.js, MongoDB, Mongoose, and TypeScript

License

Notifications You must be signed in to change notification settings

yujhenchen/express-mongo-otp-auth-ts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


Express MongoDB OTP Auth API

Table of Contents
  1. About The Project
  2. Getting Started
  3. Issues and solutions
  4. License

About The Project

A Restful API backend application built with Express.js and TypeScript, offering robust and scalable solutions for user authentication and data management.

Feautres

  1. mean Stack Architecture: Follows the mean stack for a well-structured and maintainable project
  2. Schema and Data Validation: Utilizes Joi for defining schemas and validating data, including environment variables (process.env)
  3. MongoDB Integration: Employs Mongoose to model and interact with MongoDB Atlas
  4. User Authentication: Supports user sign-up, sign-in, and logout functionalities
  5. Email Service with OTP: Built with Nodemailer and Brevo, allowing the generation and sending of OTP codes via email
  6. CRUD Operations: Provides create, read, update, and delete (CRUD) operations for user data in the MongoDB Atlas database
  7. Role-Based Access Control: Implements role-based access control using Bearer Authentication for sensitive API endpoints, such as changing user roles and deleting users
  8. Request Validation Middleware: Includes middleware for validating incoming requests to ensure data integrity and security
  9. JWT Authentication: Generates JSON Web Tokens (JWT) using the jsonwebtoken library for secure user authentication and authorization

(back to top)

Built With

(back to top)

Getting Started

some steps

Installation

Install packages

yarn

Launch at localhost in development mode

yarn dev

(back to top)

Issues and solutions

Get error Error: Method no longer accepts array arguments: valid

The full error message:

node_modules\@hapi\hoek\lib\error.js:23
            Error.captureStackTrace(this, exports.assert);
                  ^
Error: Method no longer accepts array arguments: valid

When passing the array Object.values(UserRole) into Joi.string().valid()

export const UserRole = {
    ADMIN: 'admin',
    visitor: 'user',
    GUEST: 'guest'
} as const;

...

role: Joi.string().valid(Object.values(UserRole)),

...
Solution

Use Spread syntax (...) to expand the array.

...

role: Joi.string().valid(...Object.values(UserRole)),

...

(back to top)

License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

About

An authentication Restful API featuring OTP verification, JSON Web Token authentication ( JWT ), and database CRUD. Built with Express.js, MongoDB, Mongoose, and TypeScript

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages