add new endpoint for add user by admin
This commit is contained in:
@@ -429,4 +429,132 @@ module.exports.activeUser = [
|
||||
res.status(200).json(data)
|
||||
|
||||
}
|
||||
]
|
||||
|
||||
module.exports.addUserByAdmin = [
|
||||
[
|
||||
body('first_name')
|
||||
.notEmpty()
|
||||
.withMessage(_faSr.required.first_name)
|
||||
.bail()
|
||||
.isLength({ min: 2 })
|
||||
.withMessage(_faSr.min_char.min2)
|
||||
.bail()
|
||||
.custom((value, { req }) => {
|
||||
if (removeWhiteSpaces(value).length < 2) return Promise.reject(_faSr.min_char.min2)
|
||||
if (!isPersian(value)) return Promise.reject(new Error('لطفا با حروف فارسی تایپ کنید'))
|
||||
else return true
|
||||
}),
|
||||
|
||||
body('last_name')
|
||||
.notEmpty()
|
||||
.withMessage(_faSr.required.first_name)
|
||||
.bail()
|
||||
.isLength({ min: 2 })
|
||||
.withMessage(_faSr.min_char.min2)
|
||||
.bail()
|
||||
.custom((value, { req }) => {
|
||||
if (removeWhiteSpaces(value).length < 2) return Promise.reject(_faSr.min_char.min2)
|
||||
if (!isPersian(value)) return Promise.reject(new Error('لطفا با حروف فارسی تایپ کنید'))
|
||||
else return true
|
||||
}),
|
||||
|
||||
body('national_code')
|
||||
.notEmpty()
|
||||
.withMessage(_faSr.required.national_code)
|
||||
.bail()
|
||||
.custom((value, { req }) => {
|
||||
if (checkNationalCode(value)) return true
|
||||
else return Promise.reject(_faSr.format.national_code)
|
||||
})
|
||||
.bail()
|
||||
.custom((value, { req }) => {
|
||||
const nationalCode = value.trim()
|
||||
return User.findOne({ national_code: nationalCode }).then(user => {
|
||||
if (user && user.national_code === nationalCode)
|
||||
return Promise.reject(new Error('کاربر با این کد ملی از قبل وجود دارد'))
|
||||
else return true
|
||||
})
|
||||
}),
|
||||
|
||||
body('province_name').notEmpty().withMessage(_faSr.required.province),
|
||||
|
||||
body('city_name').notEmpty().withMessage(_faSr.required.city),
|
||||
|
||||
body('shopName')
|
||||
.notEmpty()
|
||||
.withMessage(_faSr.required.address),
|
||||
|
||||
|
||||
body('mobile_number')
|
||||
.notEmpty()
|
||||
.withMessage(_faSr.required.phone_number)
|
||||
.bail()
|
||||
.custom((value, { req }) => {
|
||||
const mobileNStatus = checkMobileNumber(value)
|
||||
if (!mobileNStatus) return Promise.reject(_faSr.format.phone_number)
|
||||
else return Promise.resolve()
|
||||
})
|
||||
.bail()
|
||||
.custom((value, { req }) => {
|
||||
const mobileNumber = value.trim()
|
||||
return User.findOne({ mobile_number: mobileNumber }).then(user => {
|
||||
if (user && user.mobile_number === mobileNumber)
|
||||
return Promise.reject(new Error('کاربر با این شماره موبایل از قبل وجود دارد'))
|
||||
else return true
|
||||
})
|
||||
}),
|
||||
|
||||
body('password')
|
||||
.isLength({ min: 4 })
|
||||
.withMessage(_faSr.min_char.min4)
|
||||
.custom((value, { req }) => {
|
||||
if (value === req.body.password_confirmation) return true
|
||||
else return Promise.reject(_faSr.response.passwords_not_match)
|
||||
})
|
||||
],
|
||||
checkValidations(validationResult),
|
||||
async (req, res) => {
|
||||
try {
|
||||
const provinceId = uid.v4()
|
||||
const cityId = uid.v4()
|
||||
|
||||
const {
|
||||
first_name,
|
||||
last_name,
|
||||
national_code,
|
||||
province_name,
|
||||
city_name,
|
||||
mobile_number,
|
||||
password,
|
||||
shopName
|
||||
} = req.body
|
||||
|
||||
const data = {
|
||||
last_name,
|
||||
province_name:{id:provinceId,provinceName:province_name},
|
||||
city_name:{id:cityId,cityName:city_name},
|
||||
shopName,
|
||||
active:true
|
||||
}
|
||||
data.first_name = nameOptimizer(first_name)
|
||||
data.national_code = national_code.trim()
|
||||
data.mobile_number = normalizeMobileNumber(mobile_number)
|
||||
|
||||
|
||||
// hash user password and done
|
||||
const salt = await bcrypt.genSalt(10)
|
||||
const hash = await bcrypt.hash(password, salt)
|
||||
data.password = hash
|
||||
|
||||
const user = new User(data)
|
||||
await user.save()
|
||||
|
||||
|
||||
return res.status(200).json({ message: _faSr.response.success_save })
|
||||
} catch (err) {
|
||||
const registerFailurMsg = 'مشکلی در ثبت نام پیش آمده، لطفا مجددا تلاش کنید'
|
||||
res500(res, registerFailurMsg)
|
||||
}
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user