Initial commit

This commit is contained in:
payacom
2026-07-07 12:29:12 +03:30
parent 59c7c8e11c
commit 5719818b9d
8 changed files with 54 additions and 13 deletions

View File

@@ -1,6 +1,7 @@
const UserModel = require('../../../models/UserModel')
const { check, validationResult } = require('express-validator')
const { default: axios } = require('axios')
const { OTP_VALID_MS } = require('../../../utils/otpExpiry')
const loginValidationRules = () => {
return [
check('mobile')
@@ -34,18 +35,22 @@ const loginUser = async (req, res, next) => {
}
const otp = generateOTP()
const otpSentAt = new Date()
// eslint-disable-next-line no-unused-vars
const user = await UserModel.findOneAndUpdate(
{ mobile },
{ $set: { mobile, otp } },
{ $set: { mobile, otp: String(otp), otpSentAt } },
{ upsert: true, new: true, lean: true }
)
// زمانبندی تنظیم مقدار otp به null پس از 10 دقیقه
setTimeout(() => {
UserModel.findOneAndUpdate({ mobile }, { $set: { otp: null } }, { new: true })
UserModel.findOneAndUpdate(
{ mobile },
{ $set: { otp: null, otpSentAt: null } },
{ new: true }
)
.then(() => {})
.catch(error => console.error('Error setting OTP to null:', error))
}, 5 * 60 * 1000)
}, OTP_VALID_MS)
const data = JSON.stringify({
mobile,
templateId: '930719',

View File

@@ -1,5 +1,6 @@
const UserModel = require('../../../models/UserModel')
const TokenService = require('../../../services/TokenService')
const { isOtpExpired } = require('../../../utils/otpExpiry')
// const jwt = require('jsonwebtoken')
const verifyUser = async (req, res, next) => {
@@ -20,7 +21,15 @@ const verifyUser = async (req, res, next) => {
})
}
const token = TokenService.sign({ id: user._id })
if (user.otp === otp) {
if (!user.otp || isOtpExpired(user)) {
return res.status(422).json({
error: true,
message: 'کد تایید منقضی شده است. لطفاً دوباره درخواست ارسال کد دهید'
})
}
if (String(user.otp) === String(otp)) {
// if (user.user_name === null) {
// return res.json({
// message: 'کد تایید صحیح بود',

View File

@@ -1,6 +1,7 @@
const { default: axios } = require('axios')
const UserModel = require('../../../models/UserModel')
const { check, validationResult } = require('express-validator')
const { OTP_VALID_MS } = require('../../../utils/otpExpiry')
// const { Token, VerificationCode } = require('sms-ir')
const registerValidationRules = () => {
@@ -36,17 +37,22 @@ const registerUser = async (req, res, next) => {
}
const otp = generateOTP()
const otpSentAt = new Date()
// eslint-disable-next-line no-unused-vars
const user = await UserModel.findOneAndUpdate(
{ mobile },
{ $set: { mobile, otp } },
{ $set: { mobile, otp: String(otp), otpSentAt } },
{ upsert: true, new: true, lean: true }
)
setTimeout(() => {
UserModel.findOneAndUpdate({ mobile }, { $set: { otp: null } }, { new: true })
UserModel.findOneAndUpdate(
{ mobile },
{ $set: { otp: null, otpSentAt: null } },
{ new: true }
)
.then(() => {})
.catch(error => console.error('Error setting OTP to null:', error))
}, 5 * 60 * 1000)
}, OTP_VALID_MS)
const data = JSON.stringify({
mobile,
templateId: '930719',

View File

@@ -1,5 +1,6 @@
const UserModel = require('../../../models/UserModel')
const TokenService = require('../../../services/TokenService')
const { isOtpExpired } = require('../../../utils/otpExpiry')
// const jwt = require('jsonwebtoken')
const verifyUser = async (req, res, next) => {
@@ -25,7 +26,14 @@ const verifyUser = async (req, res, next) => {
(!user.password) { step = 'password' } else if
(!user.first_name) { step = 'first_name' } else if
(!user.user_type) { step = 'user_type' } else { step = 'profile_image' }
if (user.otp === otp) {
if (!user.otp || isOtpExpired(user)) {
return res.status(422).json({
error: true,
message: 'کد تایید منقضی شده است. لطفاً دوباره درخواست ارسال کد دهید'
})
}
if (String(user.otp) === String(otp)) {
return res.json({
message: 'کد تایید صحیح بود',
token,

View File

@@ -33,7 +33,7 @@ const setProfileImage = async (req, res, next) => {
}
// ذخیره فایل عکس پروفایل
const uploadDir = path.join(__dirname, '../../../../storage/profiles')
const uploadDir = path.join(__dirname, '../../../storage/profiles')
if (!fs.existsSync(uploadDir)) {
fs.mkdirSync(uploadDir, { recursive: true })
}
@@ -78,7 +78,7 @@ const updateProfileImage = async (req, res, next) => {
})
}
const uploadDir = path.join(__dirname, '../../../../storage/profiles')
const uploadDir = path.join(__dirname, '../../../storage/profiles')
if (!fs.existsSync(uploadDir)) {
fs.mkdirSync(uploadDir, { recursive: true })