fea: 完成添加用户,查询用户,鉴权,和添加管理员API
This commit is contained in:
1 parent
861a689759
commit
b43c31a12b
6 files changed
+236
-74
No files matched your search
+146
-51
@@ -2,7 +2,8 @@ import { sql, SQL } from "bun";
|
||||
import { Hono } from "hono";
|
||||
import { validator } from "hono/validator";
|
||||
import { checkAdmin } from "./utils/admin";
|
||||
import { checkUser } from "./utils/user";
|
||||
import { addUser, checkUser, getAllUser } from "./utils/user";
|
||||
import { responseStr } from "./const/response_str";
|
||||
|
||||
const appTmp = new Hono()
|
||||
const app = appTmp.basePath("/auth")
|
||||
@@ -29,27 +30,28 @@ app.get(
|
||||
) {
|
||||
c.status(401)
|
||||
return c.json({
|
||||
"msg": "需要提供用户信息字段: name, passwd"
|
||||
})
|
||||
}
|
||||
|
||||
// 验证是否是合法用户
|
||||
const re = await checkUser(db, name.toString(), passwd.toString())
|
||||
if (re) {
|
||||
return val
|
||||
} else {
|
||||
c.status(401)
|
||||
return c.json({
|
||||
"msg": "用户验证失败"
|
||||
"msg": responseStr.REQ_PARAM_ERR
|
||||
})
|
||||
}
|
||||
}),
|
||||
(c) => {
|
||||
async (c) => {
|
||||
const req = c.req.query()
|
||||
const name = req.name ?? ""
|
||||
const passwd = req.passwd ?? ""
|
||||
const re = await checkUser(db, name.toString(), passwd.toString())
|
||||
if (!re) {
|
||||
c.status(401)
|
||||
return c.json({
|
||||
"msg": responseStr.USER_INVALID
|
||||
})
|
||||
}
|
||||
|
||||
return c.json({
|
||||
"code": 200,
|
||||
"msg": "ok"
|
||||
})
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
// 查询所有用户
|
||||
app.get(
|
||||
@@ -65,7 +67,7 @@ app.get(
|
||||
) {
|
||||
c.status(401)
|
||||
return c.json({
|
||||
"msg": "需要提供管理员信息字段: admin_name, admin_passwd"
|
||||
"msg": responseStr.REQ_PARAM_ERR
|
||||
})
|
||||
}
|
||||
|
||||
@@ -76,52 +78,145 @@ app.get(
|
||||
} else {
|
||||
c.status(401)
|
||||
return c.json({
|
||||
"msg": "管理员验证失败"
|
||||
"msg": responseStr.ADMIN_INVALID
|
||||
})
|
||||
}
|
||||
}),
|
||||
async (c) => {
|
||||
const rows = await db`select name, token, create_time, update_time from user`
|
||||
interface userDTO {
|
||||
name: String,
|
||||
token: String,
|
||||
create_time: Date,
|
||||
update_time: Date,
|
||||
}
|
||||
let re: userDTO[] = []
|
||||
rows.forEach((ele: { [x: string]: any; }) => {
|
||||
re.push({
|
||||
"name": ele["name"],
|
||||
"token": ele["token"],
|
||||
"create_time": ele["create_time"],
|
||||
"update_time": ele["update_time"],
|
||||
})
|
||||
});
|
||||
const re = await getAllUser(db)
|
||||
return c.json({
|
||||
"msg": "ok",
|
||||
"data": re
|
||||
})
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
// 添加用户
|
||||
// app.post("/user",
|
||||
// validator("json", (val, c) => {
|
||||
// if (val.auth_name == null || val.auth_passwd == null) {
|
||||
// c.status(400)
|
||||
// return c.json({
|
||||
// "code": 400,
|
||||
// "msg": "Parameter is invalid"
|
||||
// })
|
||||
// }
|
||||
// }),
|
||||
// async (c) => {
|
||||
// const req = await c.req.json()
|
||||
// const auth_name = req.auth_name
|
||||
// const auth_passwd = req.auth_passwd
|
||||
app.post(
|
||||
"/user",
|
||||
validator("json", (val, c) => {
|
||||
if (
|
||||
val.name == null ||
|
||||
val.name == "" ||
|
||||
val.passwd == null ||
|
||||
val.passwd == ""
|
||||
) {
|
||||
c.status(400)
|
||||
c.status(400)
|
||||
return c.json({
|
||||
"code": 400,
|
||||
"msg": responseStr.REQ_PARAM_ERR
|
||||
})
|
||||
} else {
|
||||
return val
|
||||
}
|
||||
}),
|
||||
async (c) => {
|
||||
const reqHeader = c.req.query()
|
||||
const adminName = reqHeader.admin_name ?? ""
|
||||
const adminPasswd = reqHeader.admin_passwd ?? ""
|
||||
if (!(await checkAdmin(db, adminName, adminPasswd))) {
|
||||
c.status(401)
|
||||
return c.json({
|
||||
"code": 401,
|
||||
"msg": responseStr.ADMIN_INVALID
|
||||
})
|
||||
}
|
||||
|
||||
// await db``
|
||||
// return c.json({})
|
||||
// })
|
||||
const req = await c.req.json()
|
||||
const name: string = req.name ?? ""
|
||||
const passwd: string = req.passwd ?? ""
|
||||
|
||||
|
||||
if (name.length <= 0 || name.length >= 11) {
|
||||
c.status(400)
|
||||
return c.json({
|
||||
"code": 400,
|
||||
"msg": responseStr.USER_NAME_LENGTH_LIMIT
|
||||
})
|
||||
}
|
||||
|
||||
if (passwd.length <= 0 || passwd.length >= 31) {
|
||||
c.status(400)
|
||||
return c.json({
|
||||
"code": 400,
|
||||
"msg": responseStr.USER_NAME_LENGTH_LIMIT
|
||||
})
|
||||
}
|
||||
|
||||
const re = await addUser(db, name, passwd)
|
||||
if (re.state != 0) {
|
||||
c.status(500)
|
||||
return c.json({
|
||||
"code": 500,
|
||||
"msg": re.msg
|
||||
})
|
||||
}
|
||||
return c.json({
|
||||
"code": 200,
|
||||
"msg": "ok"
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
// 添加管理员
|
||||
app.post(
|
||||
"/admin",
|
||||
validator("json", (val, c) => {
|
||||
if (
|
||||
val.name == null ||
|
||||
val.name == "" ||
|
||||
val.passwd == null ||
|
||||
val.passwd == ""
|
||||
) {
|
||||
c.status(400)
|
||||
c.status(400)
|
||||
return c.json({
|
||||
"code": 400,
|
||||
"msg": responseStr.REQ_PARAM_ERR
|
||||
})
|
||||
} else {
|
||||
return val
|
||||
}
|
||||
}),
|
||||
async (c) => {
|
||||
const req = await c.req.json()
|
||||
const name: string = req.name ?? ""
|
||||
const passwd: string = req.passwd ?? ""
|
||||
|
||||
if (name.length <= 0 || name.length >= 11) {
|
||||
c.status(400)
|
||||
return c.json({
|
||||
"code": 400,
|
||||
"msg": responseStr.USER_NAME_LENGTH_LIMIT
|
||||
})
|
||||
}
|
||||
|
||||
if (passwd.length <= 0 || passwd.length >= 31) {
|
||||
c.status(400)
|
||||
return c.json({
|
||||
"code": 400,
|
||||
"msg": responseStr.USER_NAME_LENGTH_LIMIT
|
||||
})
|
||||
}
|
||||
|
||||
const encryptPasswd = await Bun.password.hash(passwd)
|
||||
try {
|
||||
await db`insert into admin(name, passwd) values(${name}, ${encryptPasswd})`
|
||||
} catch (e) {
|
||||
c.status(500)
|
||||
return c.json({
|
||||
"code": 500,
|
||||
"msg": responseStr.SERVER_INTERNAL_ERR
|
||||
})
|
||||
}
|
||||
return c.json({
|
||||
"code": 200,
|
||||
"msg": "ok"
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
export default {
|
||||
port: 8080,
|
||||
|
||||
Reference in new issue
Block a user