Koa2-TS/examples/dbs/mariadb/controller/user.controller.js

82 lines
1.9 KiB
JavaScript

const jwt = require('jsonwebtoken')
const {
createUser,
getUerInfo,
updateById,
} = require('../service/user.service')
const { userRegisterError } = require('../constant/err.type')
const { JWT_SECRET } = require('../config/config.default')
class UserController {
async register(ctx, next) {
// 1. 获取数据
// console.log(ctx.request.body)
const { user_name, password } = ctx.request.body
// 2. 操作数据库
try {
const res = await createUser(user_name, password)
// console.log(res)
// 3. 返回结果
ctx.body = {
code: 0,
message: '用户注册成功',
result: {
id: res.id,
user_name: res.user_name,
},
}
} catch (err) {
console.log(err)
ctx.app.emit('error', userRegisterError, ctx)
}
}
async login(ctx, next) {
const { user_name } = ctx.request.body
// 1. 获取用户信息(在token的payload中, 记录id, user_name, is_admin)
try {
// 从返回结果对象中剔除password属性, 将剩下的属性放到res对象
const { password, ...res } = await getUerInfo({ user_name })
ctx.body = {
code: 0,
message: '用户登录成功',
result: {
token: jwt.sign(res, JWT_SECRET, { expiresIn: '1d' }),
},
}
} catch (err) {
console.error('用户登录失败', err)
}
}
async changePassword(ctx, next) {
// 1. 获取数据
const id = ctx.state.user.id
const password = ctx.request.body.password
// 2. 操作数据库
if (await updateById({ id, password })) {
ctx.body = {
code: 0,
message: '修改密码成功',
result: '',
}
} else {
ctx.body = {
code: '10007',
message: '修改密码失败',
result: '',
}
}
// 3. 返回结果
}
}
module.exports = new UserController()