88 lines
2.7 KiB
JavaScript
88 lines
2.7 KiB
JavaScript
const { body, validationResult } = require('express-validator')
|
|
const userService = require('../services/userService')
|
|
const errorMessages = require('../config/errorMessages')
|
|
const successMessages = require('../config/successMessages')
|
|
|
|
exports.getAllUsers = async (req, res) => {
|
|
try {
|
|
const users = await userService.user_list()
|
|
res.json(users)
|
|
} catch (err) {
|
|
res.status(500).json({ error: err.message })
|
|
}
|
|
}
|
|
|
|
exports.createUser = [
|
|
body('account').isLength({ min: 3 }).withMessage('Account must be at least 3 characters long'),
|
|
body('password').isLength({ min: 6 }).withMessage('Password must be at least 6 characters long'),
|
|
async (req, res, next) => {
|
|
const errors = validationResult(req)
|
|
if (!errors.isEmpty()) {
|
|
const formattedErrors = errors.array().map((err) => ({
|
|
field: err.path, // 错误字段名
|
|
message: err.msg // 错误提示消息
|
|
}))
|
|
return res.status(400).json({ errors: formattedErrors })
|
|
}
|
|
|
|
next()
|
|
},
|
|
async (req, res) => {
|
|
try {
|
|
const user = req.body
|
|
await userService.create_user(user)
|
|
res.status(201).json({ message: successMessages.user.created })
|
|
} catch (err) {
|
|
if (err.message === errorMessages.user.already_exists) {
|
|
return res.status(400).json({ error: err.message })
|
|
}
|
|
logger('Error creating user: ', err)
|
|
return res.status(500).json({ error: 'Internal server error' })
|
|
}
|
|
}
|
|
]
|
|
|
|
exports.login = [
|
|
async (req, res, next) => {
|
|
const errors = validationResult(req)
|
|
if (!errors.isEmpty()) {
|
|
const formattedErrors = errors.array().map((err) => ({
|
|
field: err.path, // 错误字段名
|
|
message: err.msg // 错误提示消息
|
|
}))
|
|
return res.status(400).json({ errors: formattedErrors })
|
|
}
|
|
|
|
const { account, password } = req.body
|
|
|
|
if (!account) {
|
|
return res.status(400).json({ error: errorMessages.user.account_not_match })
|
|
}
|
|
if (!password) {
|
|
return res.status(400).json({ error: errorMessages.user.password_not_match })
|
|
}
|
|
|
|
next()
|
|
},
|
|
async (req, res) => {
|
|
try {
|
|
const { account, password } = req.body
|
|
if (account === 'admin' && password === 'admin') {
|
|
req.session.user = { account }
|
|
return res.status(200).json({ message: successMessages.user.login })
|
|
}
|
|
const user = await userService.login(account, password)
|
|
|
|
req.session.user = user
|
|
res.status(200).json({ message: successMessages.user.login })
|
|
} catch (err) {
|
|
if (err.message === errorMessages.user.not_found) {
|
|
return res.status(404).json({ error: err.message })
|
|
}
|
|
console.log(err)
|
|
|
|
return res.status(500).json({ error: 'Internal server error' })
|
|
}
|
|
}
|
|
]
|