102 lines
3.0 KiB
JavaScript
102 lines
3.0 KiB
JavaScript
const { body, validationResult } = require('express-validator')
|
|
const userService = require('../services/userService')
|
|
const FetchResult = require('../common/web/fetchResult')
|
|
const errorMessages = require('../config/errorMessages')
|
|
const successMessages = require('../config/successMessages')
|
|
|
|
exports.getAllUsers = async (res) => {
|
|
try {
|
|
const users = await userService.user_list()
|
|
return FetchResult.formatResult(res, 200, 'success', users)
|
|
} catch (err) {
|
|
return FetchResult.formatResult(res, 500, 'Internal server error')
|
|
}
|
|
}
|
|
|
|
exports.createUser = [
|
|
body('account').isLength({ min: 3 }).withMessage('Account must be at least 3 characters long'),
|
|
body('account').isEmpty().withMessage('Account is required'),
|
|
body('password').isLength({ min: 6 }).withMessage('Password must be at least 6 characters long'),
|
|
body('password').isEmpty().withMessage('Password is required'),
|
|
async (req, res, next) => {
|
|
const errors = validationResult(req)
|
|
if (!errors.isEmpty()) {
|
|
return FetchResult.formatResult(
|
|
res,
|
|
400,
|
|
errors
|
|
.array()
|
|
.map((err) => err.msg)
|
|
.join(', ')
|
|
)
|
|
}
|
|
|
|
next()
|
|
},
|
|
async (req, res) => {
|
|
try {
|
|
const user = req.body
|
|
await userService.create_user(user)
|
|
return FetchResult.formatResult(res, 201, successMessages.user.created)
|
|
} catch (err) {
|
|
logger('Error creating user: ', err)
|
|
if (err.message === errorMessages.user.already_exists) {
|
|
return FetchResult.formatResult(res, 400, errorMessages.user.already_exists)
|
|
}
|
|
return FetchResult.formatResult(res, 500, 'Internal server error')
|
|
}
|
|
}
|
|
]
|
|
|
|
exports.login = [
|
|
body('account').notEmpty().withMessage('Account is required'),
|
|
body('password').notEmpty().withMessage('Password is required'),
|
|
async (req, res, next) => {
|
|
const errors = validationResult(req)
|
|
if (!errors.isEmpty()) {
|
|
console.log(errors)
|
|
return FetchResult.formatResult(
|
|
res,
|
|
400,
|
|
errors
|
|
.array()
|
|
.map((err) => err.msg)
|
|
.join(', ')
|
|
)
|
|
}
|
|
|
|
next()
|
|
},
|
|
async (req, res) => {
|
|
try {
|
|
const { account, password } = req.body
|
|
|
|
const user = await userService.login(account, password)
|
|
req.session.user = user
|
|
return FetchResult.formatResult(res, 200, successMessages.user.login)
|
|
} catch (err) {
|
|
if (err.message === errorMessages.user.not_found) {
|
|
return FetchResult.formatResult(res, 401, errorMessages.user.account_password_not_match)
|
|
}
|
|
return FetchResult.formatResult(res, 500, '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 FetchResult.formatResult(res, 404, errorMessages.user.not_found)
|
|
}
|
|
return FetchResult.formatResult(res, 200, successMessages.user.exist)
|
|
} catch (err) {
|
|
return FetchResult.formatResult(res, 500, 'Internal server error')
|
|
}
|
|
}
|