signup-login-js
v1.0.1
Published
This module provides functionalities for user registration, login, and OTP verification, integrated with MongoDB and using JWT for secure authentication. Below are the steps to set up, test, and use the module effectively.
Readme
User Authentication Module
This module provides functionalities for user registration, login, and OTP verification, integrated with MongoDB and using JWT for secure authentication. Below are the steps to set up, test, and use the module effectively.
Installation
npm i signup-login-jsInstall Dependencies:
npm install bcrypt jwt nodemailer mongoose dotenvSet Up Environment Variables: Create a
.envfile in the root directory and configure the following variables:[email protected] EMAIL_PASSWORD=your-email-password JWT_SECRET=your-jwt-secret MONGO_URI=your-mongodb-uri
Testing the Module
1. Set Up MongoDB
Ensure that MongoDB is running locally or accessible via the MONGO_URI specified in the .env file.
2. Create a Test Script
Create a test.js file in the root directory with the following content:
require('dotenv').config();
const mongoose = require('mongoose');
const { registerUser, loginUser, verifyOtp } = require('./index');
// Connect to MongoDB
mongoose.connect(process.env.MONGO_URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
})
.then(() => console.log('MongoDB connected'))
.catch((err) => console.error('MongoDB connection error:', err));
const test = async () => {
try {
// Test user registration
console.log('Testing user registration...');
const registerResponse = await registerUser('testuser', '[email protected]', 'password123');
console.log('Register Response:', registerResponse);
// Simulate OTP received via email
const otp = '123456'; // Replace with actual OTP
// Test OTP verification
console.log('Testing OTP verification...');
const verifyResponse = await verifyOtp(registerResponse.userId, otp);
console.log('Verify Response:', verifyResponse);
// Test user login
console.log('Testing user login...');
const loginResponse = await loginUser('testuser', 'password123');
console.log('Login Response:', loginResponse);
// Test OTP verification during login
console.log('Testing OTP verification during login...');
const verifyLoginOtpResponse = await verifyOtp(loginResponse.userId, otp);
console.log('Verify Login OTP Response:', verifyLoginOtpResponse);
} catch (error) {
console.error('Test Error:', error);
} finally {
mongoose.connection.close();
}
};
test();3. Run the Test Script
Execute the test script to validate the functionality:
node test.js4. Verify Outputs
Review the console outputs for the responses from registration, login, and OTP verification. Ensure each function behaves as expected.
5. Check MongoDB
Use a MongoDB client (e.g., MongoDB Compass) to confirm that the user data is correctly stored in the database.
6. Verify the User Schema
const mongoose = require('mongoose');
const userSchema = new mongoose.Schema({ username: { type: String, required: true, unique: true }, email: { type: String, required: true, unique: true }, password: { type: String, required: true }, otp: { type: String }, otpExpires: { type: Date }, });
module.exports = mongoose.model('User', userSchema);
Usage
After testing, you can integrate this module into your application. Import the necessary functions and call them as required:
const { registerUser, loginUser, verifyOtp } = require('signup-login-js');
// Example usage
registerUser('username', '[email protected]', 'password')
.then(response => console.log(response))
.catch(error => console.error(error));
loginUser('username', 'password')
.then(response => console.log(response))
.catch(error => console.error(error));
verifyOtp('userId', 'otp')
.then(response => console.log(response))
.catch(error => console.error(error));Conclusion
Ensure you have set up the environment variables correctly and that MongoDB is running. Follow the steps outlined above to test and use the module in your project. If you encounter any issues, refer to the console logs for debugging.
