Fix model & request for gps controller
This commit is contained in:
@@ -1238,179 +1238,6 @@ module.exports.update_user_by_admin = [
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
/// //////////////////////////////////////////////////////////////////// authentication
|
||||
|
||||
/// //////// Login
|
||||
|
||||
module.exports.webLogin = [
|
||||
[
|
||||
body('username')
|
||||
.isLength({ min: 4 })
|
||||
.withMessage(_faSr.min_char.min4)
|
||||
.bail()
|
||||
.if((value, { req }) => {
|
||||
return req.body.password && req.body.password.length >= 4
|
||||
})
|
||||
.custom((value, { req }) => {
|
||||
return User.findOne({
|
||||
$or: [{ email: value.toLowerCase().trim() }, { national_code: value }, { username: value }]
|
||||
}).then(user => {
|
||||
if (!user) return Promise.reject(_faSr.not_found.password)
|
||||
else return true
|
||||
})
|
||||
}),
|
||||
|
||||
body('password')
|
||||
.notEmpty()
|
||||
.withMessage(_faSr.required.password)
|
||||
.bail()
|
||||
.isLength({ min: 4 })
|
||||
.withMessage(_faSr.min_char.min4),
|
||||
|
||||
body('remember_me')
|
||||
.exists()
|
||||
.withMessage(_faSr.required.remember_me)
|
||||
.bail()
|
||||
.isBoolean()
|
||||
.withMessage(_faSr.format.boolean)
|
||||
],
|
||||
checkValidations(validationResult),
|
||||
async (req, res) => {
|
||||
try {
|
||||
const { username, password } = req.body
|
||||
const user = await User.findOne({
|
||||
$or: [{ email: username.toLowerCase().trim() }, { national_code: username }, { username }]
|
||||
})
|
||||
if (!user) throw new Error('err')
|
||||
const passwordMatch = await bcrypt.compare(password, user.password)
|
||||
if (!passwordMatch) throw new Error('err')
|
||||
const token = await jwt.sign({ _id: user._id }, secretKey, {
|
||||
expiresIn: req.body.remember_me ? '30d' : '7d'
|
||||
})
|
||||
user.token = token
|
||||
await user.save()
|
||||
return res.json({ token })
|
||||
} catch (err) {
|
||||
return res.status(422).json({
|
||||
validation: { username: { msg: _faSr.not_found.password } }
|
||||
})
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
module.exports.appLogin = [
|
||||
[
|
||||
body('username')
|
||||
.isLength({ min: 4 })
|
||||
.withMessage(_faSr.min_char.min4)
|
||||
.bail()
|
||||
.if((value, { req }) => {
|
||||
return req.body.password && req.body.password.length >= 4
|
||||
})
|
||||
.custom((value, { req }) => {
|
||||
return User.findOne({
|
||||
$or: [{ email: value.toLowerCase().trim() }, { national_code: value }]
|
||||
}).then(user => {
|
||||
if (!user) return Promise.reject(_faSr.not_found.password)
|
||||
else return true
|
||||
})
|
||||
}),
|
||||
|
||||
body('password')
|
||||
.notEmpty()
|
||||
.withMessage(_faSr.required.password)
|
||||
.bail()
|
||||
.isLength({ min: 4 })
|
||||
.withMessage(_faSr.min_char.min4)
|
||||
],
|
||||
checkValidations(validationResult),
|
||||
async (req, res) => {
|
||||
try {
|
||||
const { username, password } = req.body
|
||||
const user = await User.findOne({
|
||||
$or: [{ email: username.toLowerCase().trim() }, { national_code: username }]
|
||||
})
|
||||
if (!user) throw new Error('err')
|
||||
|
||||
const passwordMatch = await bcrypt.compare(password, user.password)
|
||||
if (!passwordMatch) throw new Error('err')
|
||||
|
||||
const token = await jwt.sign({ _id: user._id }, secretKey, {
|
||||
expiresIn: '60d'
|
||||
})
|
||||
user.appToken = token
|
||||
await user.save()
|
||||
return res.json({ token })
|
||||
} catch (err) {
|
||||
return res.status(422).json({
|
||||
validation: { username: { msg: _faSr.not_found.password } }
|
||||
})
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
/// //////// logout
|
||||
module.exports.webLogout = [
|
||||
async (req, res) => {
|
||||
try {
|
||||
const token = req.headers?.authorization
|
||||
if (!token) throw new Error('err')
|
||||
|
||||
const user = await User.findOne({ token })
|
||||
if (!user) throw new Error('err')
|
||||
|
||||
user.token = null
|
||||
await user.save()
|
||||
|
||||
return res.json({ message: _faSr.response.logged_out })
|
||||
} catch (err) {
|
||||
return res.status(401).json({ message: _faSr.response.not_logged_in })
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
module.exports.appLogout = [
|
||||
async (req, res) => {
|
||||
try {
|
||||
const token = req.headers?.authorization
|
||||
if (!token) throw new Error('err')
|
||||
|
||||
const user = await User.findOne({ appToken: token })
|
||||
if (!user) throw new Error('err')
|
||||
|
||||
user.appToken = null
|
||||
await user.save()
|
||||
|
||||
return res.json({ message: _faSr.response.logged_out })
|
||||
} catch (err) {
|
||||
return res.status(401).json({ message: _faSr.response.not_logged_in })
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
/// //////// get user
|
||||
module.exports.getUser = [
|
||||
async (req, res) => {
|
||||
try {
|
||||
const token = req.headers?.authorization
|
||||
if (!token) throw new Error('err')
|
||||
|
||||
const decoded = jwt.verify(token, secretKey)
|
||||
if (!decoded) throw new Error('err')
|
||||
|
||||
const user = await User.findById(decoded?._id).select(
|
||||
'-token -appToken -emailConfirmationKey -mobileConfirmationKey -password -resetPassToken'
|
||||
)
|
||||
return res.json({ user })
|
||||
} catch (err) {
|
||||
console.log('🚀 ~ file: userController.js ~ line 1070 ~ err', err)
|
||||
return res.status(401).json({ message: 'unauthenticated' })
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
module.exports.updateUserByAdmin = [
|
||||
[
|
||||
body('first_name')
|
||||
@@ -1595,3 +1422,177 @@ module.exports.updateUserByAdmin = [
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
/// //////////////////////////////////////////////////////////////////// authentication
|
||||
|
||||
/// //////// Login
|
||||
|
||||
module.exports.webLogin = [
|
||||
[
|
||||
body('username')
|
||||
.isLength({ min: 4 })
|
||||
.withMessage(_faSr.min_char.min4)
|
||||
.bail()
|
||||
.if((value, { req }) => {
|
||||
return req.body.password && req.body.password.length >= 4
|
||||
})
|
||||
.custom((value, { req }) => {
|
||||
return User.findOne({
|
||||
$or: [{ email: value.toLowerCase().trim() }, { national_code: value }, { username: value }]
|
||||
}).then(user => {
|
||||
if (!user) return Promise.reject(_faSr.not_found.password)
|
||||
else return true
|
||||
})
|
||||
}),
|
||||
|
||||
body('password')
|
||||
.notEmpty()
|
||||
.withMessage(_faSr.required.password)
|
||||
.bail()
|
||||
.isLength({ min: 4 })
|
||||
.withMessage(_faSr.min_char.min4),
|
||||
|
||||
body('remember_me')
|
||||
.exists()
|
||||
.withMessage(_faSr.required.remember_me)
|
||||
.bail()
|
||||
.isBoolean()
|
||||
.withMessage(_faSr.format.boolean)
|
||||
],
|
||||
checkValidations(validationResult),
|
||||
async (req, res) => {
|
||||
try {
|
||||
const { username, password } = req.body
|
||||
const user = await User.findOne({
|
||||
$or: [{ email: username.toLowerCase().trim() }, { national_code: username }, { username }]
|
||||
})
|
||||
if (!user) throw new Error('err')
|
||||
const passwordMatch = await bcrypt.compare(password, user.password)
|
||||
if (!passwordMatch) throw new Error('err')
|
||||
const token = await jwt.sign({ _id: user._id }, secretKey, {
|
||||
expiresIn: req.body.remember_me ? '30d' : '7d'
|
||||
})
|
||||
user.token = token
|
||||
await user.save()
|
||||
return res.json({ token })
|
||||
} catch (err) {
|
||||
return res.status(422).json({
|
||||
validation: { username: { msg: _faSr.not_found.password } }
|
||||
})
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
module.exports.appLogin = [
|
||||
[
|
||||
body('username')
|
||||
.isLength({ min: 4 })
|
||||
.withMessage(_faSr.min_char.min4)
|
||||
.bail()
|
||||
.if((value, { req }) => {
|
||||
return req.body.password && req.body.password.length >= 4
|
||||
})
|
||||
.custom((value, { req }) => {
|
||||
return User.findOne({
|
||||
$or: [{ email: value.toLowerCase().trim() }, { national_code: value }]
|
||||
}).then(user => {
|
||||
if (!user) return Promise.reject(_faSr.not_found.password)
|
||||
else return true
|
||||
})
|
||||
}),
|
||||
|
||||
body('password')
|
||||
.notEmpty()
|
||||
.withMessage(_faSr.required.password)
|
||||
.bail()
|
||||
.isLength({ min: 4 })
|
||||
.withMessage(_faSr.min_char.min4)
|
||||
],
|
||||
checkValidations(validationResult),
|
||||
async (req, res) => {
|
||||
try {
|
||||
const { username, password } = req.body
|
||||
const user = await User.findOne({
|
||||
$or: [{ email: username.toLowerCase().trim() }, { national_code: username }]
|
||||
})
|
||||
if (!user) throw new Error('err')
|
||||
|
||||
const passwordMatch = await bcrypt.compare(password, user.password)
|
||||
if (!passwordMatch) throw new Error('err')
|
||||
|
||||
const token = await jwt.sign({ _id: user._id }, secretKey, {
|
||||
expiresIn: '60d'
|
||||
})
|
||||
user.appToken = token
|
||||
await user.save()
|
||||
return res.json({ token })
|
||||
} catch (err) {
|
||||
return res.status(422).json({
|
||||
validation: { username: { msg: _faSr.not_found.password } }
|
||||
})
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
/// //////// logout
|
||||
module.exports.webLogout = [
|
||||
async (req, res) => {
|
||||
try {
|
||||
const token = req.headers?.authorization
|
||||
if (!token) throw new Error('err')
|
||||
|
||||
const user = await User.findOne({ token })
|
||||
if (!user) throw new Error('err')
|
||||
|
||||
user.token = null
|
||||
await user.save()
|
||||
|
||||
return res.json({ message: _faSr.response.logged_out })
|
||||
} catch (err) {
|
||||
return res.status(401).json({ message: _faSr.response.not_logged_in })
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
module.exports.appLogout = [
|
||||
async (req, res) => {
|
||||
try {
|
||||
const token = req.headers?.authorization
|
||||
if (!token) throw new Error('err')
|
||||
|
||||
const user = await User.findOne({ appToken: token })
|
||||
if (!user) throw new Error('err')
|
||||
|
||||
user.appToken = null
|
||||
await user.save()
|
||||
|
||||
return res.json({ message: _faSr.response.logged_out })
|
||||
} catch (err) {
|
||||
return res.status(401).json({ message: _faSr.response.not_logged_in })
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
/// //////// get user
|
||||
module.exports.getUser = [
|
||||
async (req, res) => {
|
||||
try {
|
||||
const token = req.headers?.authorization
|
||||
if (!token) throw new Error('err')
|
||||
|
||||
const decoded = jwt.verify(token, secretKey)
|
||||
if (!decoded) throw new Error('err')
|
||||
|
||||
const user = await User.findById(decoded?._id).select(
|
||||
'-token -appToken -emailConfirmationKey -mobileConfirmationKey -password -resetPassToken'
|
||||
)
|
||||
return res.json({ user })
|
||||
} catch (err) {
|
||||
console.log('🚀 ~ file: userController.js ~ line 1070 ~ err', err)
|
||||
return res.status(401).json({ message: 'unauthenticated' })
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
/// ////////////////////////////////////////////////////////////////////////// GPS Section
|
||||
|
||||
|
||||
Reference in New Issue
Block a user