|
@@ -1,86 +1,182 @@
|
|
|
+import md5 from 'md5-node'
|
|
|
+import jwt from "jsonwebtoken"
|
|
|
+import jwtSecret from "../../config"
|
|
|
+import Logger from "../../loaders/logger"
|
|
|
import { Request, Response } from "express"
|
|
|
+import { createMathExpr } from "svg-captcha"
|
|
|
+import { connection } from '../../utils/initMysql'
|
|
|
+
|
|
|
+export interface dataModel {
|
|
|
+ length: number
|
|
|
+}
|
|
|
+
|
|
|
+// 保存验证码
|
|
|
+let verify: number | string
|
|
|
|
|
|
/**
|
|
|
- * 登陆
|
|
|
- * @route GET /login/
|
|
|
- * @summary 登陆
|
|
|
- * @group login - 登陆
|
|
|
- * @returns {object} 200
|
|
|
+ * @typedef Point
|
|
|
+ * @property {string} username.required - 用户名
|
|
|
+ * @property {string} password.required - 密码
|
|
|
+ * @property {string} verify.required - 验证码
|
|
|
+ */
|
|
|
+
|
|
|
+/**
|
|
|
+ * @typedef Error
|
|
|
+ * @property {string} code.required
|
|
|
+ */
|
|
|
+
|
|
|
+/**
|
|
|
+ * @typedef Response
|
|
|
+ * @property {[integer]} code
|
|
|
+ */
|
|
|
+
|
|
|
+/**
|
|
|
+ * 登录
|
|
|
+ * @route POST /login
|
|
|
+ * @param {Point.model} point.body.required - the new point
|
|
|
+ * @produces application/json application/xml
|
|
|
+ * @consumes application/json application/xml
|
|
|
+ * @returns {Response.model} 200
|
|
|
+ * @returns {Array.<Point>} Point
|
|
|
+ * @headers {integer} 200.X-Rate-Limit
|
|
|
+ * @headers {string} 200.X-Expires-After
|
|
|
* @security JWT
|
|
|
- * @returns {Error} default - Unexpected error
|
|
|
*/
|
|
|
-const login =async (req: Request, res: Response) => {
|
|
|
- res.json({code:1 , msg: "成功"})
|
|
|
+
|
|
|
+const login = async (req: Request, res: Response) => {
|
|
|
+ console.log(req.body)
|
|
|
+ // if (verify !== req.query.verify) return res.json({
|
|
|
+ // code: -1,
|
|
|
+ // info: "请输入正确的验证码"
|
|
|
+ // })
|
|
|
+ //生成jwt(token令牌) {expiresIn:3600}为token的过期时间,这里设置的是1小时
|
|
|
+ // const accessToken = jwt.sign({
|
|
|
+ // accountId: account.id
|
|
|
+ // }, settings.accessTokenSecret, { expiresIn: 3600 })
|
|
|
+ // const idToken = jwt.sign({
|
|
|
+ // sub: account.id,
|
|
|
+ // preferred_username: account.username
|
|
|
+ // }, "some secret that doesn't matter")
|
|
|
+ // //返回token
|
|
|
+ // response.status(200).json({
|
|
|
+ // access_token: accessToken,
|
|
|
+ // id_token: idToken
|
|
|
+ // })
|
|
|
+ // accessToken
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 注册
|
|
|
- * @route GET /register/
|
|
|
+ * @route POST /register
|
|
|
* @summary 注册
|
|
|
* @group register - 注册
|
|
|
+ * @param {string} username.query.required - username
|
|
|
+ * @param {string} password.query.required - password
|
|
|
+ * @param {string} verify.query.required - verify
|
|
|
* @returns {object} 200
|
|
|
* @security JWT
|
|
|
- * @returns {Error} default - Unexpected error
|
|
|
*/
|
|
|
|
|
|
-const register =async (req: Request, res: Response) => {
|
|
|
- res.json({code:1 , msg: "成功"})
|
|
|
+const register = async (req: Request, res: Response) => {
|
|
|
+ if (verify !== req.query.verify) return res.json({
|
|
|
+ code: -1,
|
|
|
+ info: "请输入正确的验证码"
|
|
|
+ })
|
|
|
+ let sql: string = 'select * from users where username=' + "'" + req.query.username + "'"
|
|
|
+ connection.query(sql, async (err, data: dataModel) => {
|
|
|
+ if (data.length > 0) {
|
|
|
+ await res.json({
|
|
|
+ code: -1,
|
|
|
+ info: "账号已被注册"
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ let sql: string = 'insert into users (username,password) value(' + "'" + req.query.username + "'" + ',' + "'" + req.query.password +
|
|
|
+ "'" + ')'
|
|
|
+ connection.query(sql, async function (err) {
|
|
|
+ if (err) {
|
|
|
+ Logger.error(err)
|
|
|
+ } else {
|
|
|
+ await res.json({
|
|
|
+ code: 0,
|
|
|
+ info: "账号注册成功"
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 列表更新
|
|
|
- * @route GET /updateList/
|
|
|
+ * @route GET /updateList
|
|
|
* @summary 列表更新
|
|
|
* @group updateList - 列表更新
|
|
|
* @returns {object} 200
|
|
|
* @security JWT
|
|
|
- * @returns {Error} default - Unexpected error
|
|
|
*/
|
|
|
|
|
|
-const updateList =async (req: Request, res: Response) => {
|
|
|
- res.json({code:1 , msg: "成功"})
|
|
|
+const updateList = async (req: Request, res: Response) => {
|
|
|
+ res.json({ code: 1, msg: "成功" })
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 列表删除
|
|
|
- * @route GET /deleteList/
|
|
|
+ * @route GET /deleteList
|
|
|
* @summary 列表删除
|
|
|
* @group deleteList - 列表删除
|
|
|
* @returns {object} 200
|
|
|
* @security JWT
|
|
|
- * @returns {Error} default - Unexpected error
|
|
|
*/
|
|
|
|
|
|
-const deleteList =async (req: Request, res: Response) => {
|
|
|
- res.json({code:1 , msg: "成功"})
|
|
|
+const deleteList = async (req: Request, res: Response) => {
|
|
|
+ res.json({ code: 1, msg: "成功" })
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 分页查询
|
|
|
- * @route GET /searchPage/
|
|
|
- * @summary 分页查询
|
|
|
- * @group searchPage - 分页查询
|
|
|
- * @returns {object} 200
|
|
|
- * @security JWT
|
|
|
- * @returns {Error} default - Unexpected error
|
|
|
- */
|
|
|
+/**
|
|
|
+* 分页查询
|
|
|
+* @route GET /searchPage
|
|
|
+* @summary 分页查询
|
|
|
+* @group searchPage - 分页查询
|
|
|
+* @returns {object} 200
|
|
|
+* @security JWT
|
|
|
+* @returns {Error} default - Unexpected error
|
|
|
+*/
|
|
|
|
|
|
-const searchPage =async (req: Request, res: Response) => {
|
|
|
- res.json({code:1 , msg: "成功"})
|
|
|
+const searchPage = async (req: Request, res: Response) => {
|
|
|
+ res.json({ code: 1, msg: "成功" })
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 模糊查询
|
|
|
- * @route GET /searchVague/
|
|
|
+ * @route GET /searchVague
|
|
|
* @summary 模糊查询
|
|
|
* @group searchVague - 模糊查询
|
|
|
* @returns {object} 200
|
|
|
* @security JWT
|
|
|
- * @returns {Error} default - Unexpected error
|
|
|
*/
|
|
|
|
|
|
-const searchVague =async (req: Request, res: Response) => {
|
|
|
- res.json({code:1 , msg: "成功"})
|
|
|
+const searchVague = async (req: Request, res: Response) => {
|
|
|
+ res.json({ code: 1, msg: "成功" })
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 图形验证码
|
|
|
+ * @route GET /captcha
|
|
|
+ * @summary 图形验证码
|
|
|
+ * @group captcha - 图形验证码
|
|
|
+ * @returns {object} 200
|
|
|
+ * @security JWT
|
|
|
+ */
|
|
|
+
|
|
|
+const captcha = async (req: Request, res: Response) => {
|
|
|
+ const create = createMathExpr({
|
|
|
+ mathMin: 1,
|
|
|
+ mathMax: 4,
|
|
|
+ mathOperator: "+"
|
|
|
+ })
|
|
|
+ verify = create.text
|
|
|
+ res.type('svg') // 响应的类型
|
|
|
+ res.json({ code: 1, msg: create.text, svg: create.data })
|
|
|
}
|
|
|
|
|
|
export {
|
|
@@ -90,4 +186,5 @@ export {
|
|
|
deleteList,
|
|
|
searchPage,
|
|
|
searchVague,
|
|
|
+ captcha,
|
|
|
}
|