40 lines
1.2 KiB
JavaScript
40 lines
1.2 KiB
JavaScript
const jwt = require('jsonwebtoken')
|
|
const { readKey, writeKey, decrypt } = require('../utils')
|
|
|
|
const getpublicKey = ({ res }) => {
|
|
let { publicKey: data } = readKey()
|
|
if(!data) return res.fail({ msg: 'publicKey not found, Try to restart the server', status: 500 })
|
|
res.success({ data })
|
|
}
|
|
|
|
const login = async ({ res, request }) => {
|
|
let { body: { ciphertext } } = request
|
|
if(!ciphertext) return res.fail({ msg: '参数错误' })
|
|
try {
|
|
const password = decrypt(ciphertext)
|
|
let { pwd, jwtSecret, jwtExpires } = readKey()
|
|
if(password !== pwd) return res.fail({ msg: '密码错误' })
|
|
const token = jwt.sign({ date: Date.now() }, jwtSecret, { expiresIn: jwtExpires }) // 生成token
|
|
res.success({ data: { token, jwtExpires } })
|
|
} catch (error) {
|
|
res.fail({ msg: '解密失败' })
|
|
}
|
|
}
|
|
|
|
const updatePwd = async ({ res, request }) => {
|
|
let { body: { oldPwd, newPwd } } = request
|
|
oldPwd = decrypt(oldPwd)
|
|
newPwd = decrypt(newPwd)
|
|
let keyObj = readKey()
|
|
if(oldPwd !== keyObj.pwd) return res.fail({ data: false, msg: '旧密码校验失败' })
|
|
keyObj.pwd = newPwd
|
|
writeKey(keyObj)
|
|
res.success({ data: true, msg: 'success' })
|
|
}
|
|
|
|
module.exports = {
|
|
login,
|
|
getpublicKey,
|
|
updatePwd
|
|
}
|