UNPKG

fjh

Version:

博客api

155 lines (148 loc) 9.08 kB
const db = require('../mysql/index'); const jwt = require('jsonwebtoken'); const config = require('../public/config'); const emailVerif = require('../public/emailVerif'); // 注册 exports.reguser = (req, res) => { const { username, password, email, captcha, avatar } = req.body; const times = new Date(); const sqlStr1 = 'select * from captchadata where captchaUser = ? and captchaPassword = ? and captchaEmail = ? and captcha = ? '; const sqlStr2 = 'insert into userdata set ?'; const sqlStr3 = `delete from captchadata where captchaEmail = '${email}' and captchaUser = '${username}'`; db.getConnection((err, connection) => { connection.query(sqlStr1, [username, password, email, captcha], (err, results) => { if (err) return res.send({ status: 0, message: err.message }); if (results.length == 0) { return res.send({ status: 0, message: '注册用户失败,请稍后再试!' }) }; connection.query(sqlStr2, { username: username, password: password, email: email, avatar: avatar, token: verify, registrationTime: times.toLocaleString() }, (err, results) => { if (err) return res.send({ status: 0, message: err.message }); if (results.affectedRows != 1) { return res.send({ status: 0, message: '注册用户失败,请稍后再试!' }) }; connection.query(sqlStr3, (err, results) => { if (err) return res.send({ status: 0, message: err.message }); res.send({ status: 200, message: '注册成功!' }); }) }) }) db.releaseConnection(connection); }) } // 发送验证码 exports.captcha = (req, res) => { const { username, password, email, avatar } = req.body; const times = new Date(); const verify = emailVerif.randomFns(); const sqlStr1 = 'select * from userdata where username = ? or email = ?'; const sqlStr2 = 'insert into captchadata set ?'; db.getConnection((err, connection) => { connection.query(sqlStr1, [username, email], (err, results) => { if (err) return res.send({ status: 0, message: err.message }); if (results.length == 1) { return res.send({ status: 0, message: '用户名或账号被占用!' }) }; connection.query(sqlStr2, { captchaUser: username, captchaPassword: password, captchaEmail: email, captcha: verify, times: times.toLocaleString() }, (err, results) => { if (err) return res.send({ status: 0, message: err.message }); if (results.affectedRows !== 1) { return res.send({ status: 0, message: '验证码发送失败,请稍后再试!' }) }; emailVerif.captcha(verify, email); res.send({ status: 200, message: '验证码发送成功!' }); }) }) db.releaseConnection(connection); }) } // 登录 exports.login = (req, res) => { const { email, password } = req.body; const times = new Date(); const sqlStr1 = 'select * from userdata where password = ? and email = ?'; db.getConnection((err, connection) => { connection.query(sqlStr1, [password, email], (err, results) => { if (err) return res.send({ status: 0, message: err.message }); if (results.length != 1) { return res.send({ status: 0, message: '账号或密码错误!' }) }; const user = { ...results[0], password: '', avatar: '', token: '' }; const tokenStr = 'Bearer ' + jwt.sign(user, config.jwtSecretKey, { expiresIn: config.expiresIn }); const sqlStr2 = `update userdata set token = '${tokenStr}', logonTime = ? where email = ? and password = ? `; connection.query(sqlStr2, [times.toLocaleString(), email, password], (err, results) => { if (err) return res.send({ status: 0, message: err.message }); if (results.affectedRows !== 1) { return res.send({ status: 0, message: '登录失败,请稍后再试!' }) }; res.send({ status: 200, message: '登录成功!', token: tokenStr }) }) }) db.releaseConnection(connection); }) } // 发送登录验证码与修改密码 exports.sendcaptcha = (req, res) => { const { email } = req.body; const times = new Date(); const verify = emailVerif.randomFns(); const sqlStr1 = 'select * from userdata where email = ?'; const sqlStr2 = 'insert into captchadata set ?'; db.getConnection((err, connection) => { connection.query(sqlStr1, [email], (err, results) => { if (err) return res.send({ status: 0, message: err.message }); if (results.length != 1) { return res.send({ status: 0, message: '该账号未注册!' }) }; connection.query(sqlStr2, { captchaEmail: email, captcha: verify, times: times.toLocaleString() }, (err, results) => { if (err) return res.send({ status: 0, message: err.message }); if (results.affectedRows !== 1) { return res.send({ status: 0, message: '发送验证码失败,请稍后再试!' }) }; emailVerif.captcha(verify, email); res.send({ status: 200, message: '验证码发送成功!' }); }) }) db.releaseConnection(connection); }) } // 验证码登录 exports.captchalogin = (req, res) => { const { email, captcha } = req.body; const times = new Date(); const sqlStr1 = 'select * from userdata where email = ?'; const sqlStr2 = 'select * from captchadata where captchaEmail = ? and captcha = ? '; const sqlStr4 = `delete from captchadata where captchaEmail = '${email}'`; db.getConnection((err, connection) => { connection.query(sqlStr1, [email], (err, results) => { if (err) return res.send({ status: 0, message: err.message }); if (results.length != 1) { return res.send({ status: 0, message: '该账号未注册!' }) }; connection.query(sqlStr2, [email, captcha], (err, results) => { if (results.length !== 1) { return res.send({ status: 0, message: '登录失败,请稍后再试!' }) }; if (err) return res.send({ status: 0, message: err.message }); const user = { ...results[0] }; const tokenStr = 'Bearer ' + jwt.sign(user, config.jwtSecretKey, { expiresIn: config.expiresIn }); const sqlStr3 = `update userdata set token = '${tokenStr}', logonTime = ? where email = ?`; connection.query(sqlStr3, [times.toLocaleString(), email], (err, results) => { if (err) return res.send({ status: 0, message: err.message }); if (results.affectedRows !== 1) { return res.send({ status: 0, message: '登录失败,请稍后再试!' }) }; connection.query(sqlStr4, (err, results) => { if (err) return res.send({ status: 0, message: err.message }); res.send({ status: 200, message: '登录成功!', token: tokenStr }) }) }) }) }) db.releaseConnection(connection); }) } // 修改密码与忘记密码 exports.revise = (req, res) => { const { password, email, captcha } = req.body; const times = new Date(); const sqlStr1 = 'select * from userdata where email = ?'; const sqlStr2 = 'select * from captchadata where captchaEmail = ? and captcha = ? '; const sqlStr3 = `update userdata set password = ?, reviseTime = ? where email = ?`; const sqlStr4 = `delete from captchadata where captchaEmail = '${email}'`; db.getConnection((err, connection) => { connection.query(sqlStr1, [email], (err, results) => { if (err) return res.send({ status: 0, message: err.message }); if (results.length != 1) { return res.send({ status: 0, message: '该账号未注册!' }) }; connection.query(sqlStr2, [email, captcha], (err, results) => { if (results.length !== 1) { return res.send({ status: 0, message: '修改密码失败,请稍后再试!' }) }; if (err) return res.send({ status: 0, message: err.message }); connection.query(sqlStr3, [password, times.toLocaleString(), email], (err, results) => { if (err) return res.send({ status: 0, message: err.message }); if (results.affectedRows !== 1) { return res.send({ status: 0, message: '修改密码失败,请稍后再试!' }) }; connection.query(sqlStr4, (err, results) => { if (err) return res.send({ status: 0, message: err.message }); res.send({ status: 200, message: '修改密码成功!' }) }) }) }) }) db.releaseConnection(connection); }) }