back-end done
This commit is contained in:
@@ -4,28 +4,30 @@ const dateformat = require('dateformat')
|
||||
const bcrypt = require('bcryptjs')
|
||||
const jwt = require('jsonwebtoken')
|
||||
const config = require('../config')
|
||||
const v_m = require('../validation_messages')
|
||||
|
||||
/////////////////////////////////////////////////////////////////////// register
|
||||
module.exports.register = [
|
||||
[
|
||||
body('name')
|
||||
.isLength({min: 4}).withMessage('حداقل 4 کاراکتر'),
|
||||
.isLength({min: 2}).withMessage(v_m['fa'].min_char.min2),
|
||||
|
||||
body('username')
|
||||
.isLength({min: 4}).withMessage('حداقل 4 کاراکتر')
|
||||
.isLength({min: 4}).withMessage(v_m['fa'].min_char.min4)
|
||||
.custom((value, {req}) => {
|
||||
return Admin.findOne({username: value})
|
||||
.then(admin => {
|
||||
if (admin && admin.username === value) return Promise.reject('این نام کاربری از قبل وجود دارد.')
|
||||
if (admin && admin.username === value) return Promise.reject(v_m['fa'].duplicated.username)
|
||||
else return true
|
||||
})
|
||||
}),
|
||||
|
||||
body('password')
|
||||
.isLength({min: 4}).withMessage('حداقل 4 کاراکتر')
|
||||
.isLength({min: 4}).withMessage(v_m['fa'].min_char.min4)
|
||||
.custom((value, {req}) => {
|
||||
return value === req.body.password_confirmation
|
||||
}).withMessage('پسورد ها یکی نیست.')
|
||||
if (value === req.body.password_confirmation) return true
|
||||
else return Promise.reject(v_m['fa'].response.passwords_not_match)
|
||||
})
|
||||
],
|
||||
(req, res) => {
|
||||
const errors = validationResult(req)
|
||||
@@ -34,7 +36,6 @@ module.exports.register = [
|
||||
const data = {}
|
||||
data.name = req.body.name
|
||||
data.username = req.body.username
|
||||
data.scope = 'admin'
|
||||
data.created_at = dateformat(Date.now(), 'yyyy-mm-dd HH:MM:ss')
|
||||
|
||||
bcrypt.genSalt(10, (err, salt) => {
|
||||
@@ -45,7 +46,7 @@ module.exports.register = [
|
||||
const admin = new Admin(data)
|
||||
admin.save(err => {
|
||||
if (err) console.log(err)
|
||||
return res.json({message: 'Admin added.'})
|
||||
return res.json({message: v_m['fa'].response.success_save})
|
||||
})
|
||||
})
|
||||
})
|
||||
@@ -57,20 +58,26 @@ module.exports.register = [
|
||||
module.exports.login = [
|
||||
[
|
||||
body('username')
|
||||
.isLength({min: 4}).withMessage('حداقل 4 کاراکتر')
|
||||
.isLength({min: 4}).withMessage(v_m['fa'].min_char.min4)
|
||||
.bail()
|
||||
.if((value, {req}) => {
|
||||
return req.body.password && req.body.password.length >= 4
|
||||
})
|
||||
.custom((value, {req}) => {
|
||||
return Admin.findOne({username: value})
|
||||
.then(admin => {
|
||||
if (!admin) return Promise.reject('ادمینی با این نام وجود ندارد.')
|
||||
if (!admin) return Promise.reject(v_m['fa'].not_found.admin_id)
|
||||
else return true
|
||||
})
|
||||
}),
|
||||
|
||||
body('password')
|
||||
.isLength({min: 4}).withMessage('حداقل 4 کاراکتر'),
|
||||
.notEmpty().withMessage(v_m['fa'].required.password)
|
||||
.bail()
|
||||
.isLength({min: 4}).withMessage(v_m['fa'].min_char.min4),
|
||||
|
||||
body('remember_me')
|
||||
.exists().withMessage('پارامتر remember_me الزامی است.')
|
||||
.exists().withMessage(v_m['fa'].required.remember_me)
|
||||
.bail()
|
||||
.isBoolean().withMessage('مقدار باید از جنس Boolean باشد.')
|
||||
],
|
||||
@@ -82,18 +89,17 @@ module.exports.login = [
|
||||
if (err) console.log(err)
|
||||
bcrypt.compare(req.body.password, user.password, (err, isMatch) => {
|
||||
if (err) console.log(err)
|
||||
if (!isMatch) return res.status(422).json({validation: {password: {msg: 'پسورد اشتباه است.'}}})
|
||||
if (!isMatch) return res.status(422).json({validation: {password: {msg: v_m['fa'].not_found.password}}})
|
||||
|
||||
let token
|
||||
if (req.body.remember_me) token = jwt.sign({_id: user._id}, config.secretKey)
|
||||
else token = jwt.sign({_id: user._id}, config.secretKey, {expiresIn: '1h'})
|
||||
|
||||
user.token = token
|
||||
user.markModified('token')
|
||||
user.save(err => {
|
||||
if (err) console.log(err)
|
||||
return res.json({token: token})
|
||||
})
|
||||
return res.json({token: token})
|
||||
})
|
||||
})
|
||||
}
|
||||
@@ -106,11 +112,11 @@ module.exports.logout = [
|
||||
if (token) {
|
||||
Admin.findOneAndUpdate({token: token}, {token: null}, (err, oldData) => {
|
||||
if (err) console.log(err)
|
||||
if (oldData) return res.json({message: 'You are logged out.'})
|
||||
return res.status(401).json({message: 'Your not logged in'})
|
||||
if (oldData) return res.json({message: v_m['fa'].response.logged_out})
|
||||
return res.status(401).json({message: v_m['fa'].response.not_logged_in})
|
||||
})
|
||||
} else {
|
||||
return res.status(401).json({message: 'Your not logged in'})
|
||||
return res.status(401).json({message: v_m['fa'].response.not_logged_in})
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user