expressServer/controllers/userController.js

104 lines
3.1 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' })
}
}
]
exports.getUserExist = async (req, res) => {
console.log(req.path)
try {
const { account } = req.query
const exist = await userService.get_user_exist(account)
if (!exist) {
return res.status(404).json({ message: errorMessages.user.not_found }) // 用户未找到,使用 404 错误码
}
return res.status(200).json({ message: successMessages.user.exist })
} catch (err) {
res.status(500).json({ error: err.message })
}
}