diff --git a/src/index.ts b/src/index.ts index e5116e0..3eace1f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,7 +1,7 @@ import { sql, SQL } from "bun"; import { Hono } from "hono"; import { validator } from "hono/validator"; -import { checkAdmin } from "./utils/admin"; +import { checkAdmin, initAdmin } from "./utils/admin"; import { addUser, checkUser, getAllUser } from "./utils/user"; import { responseStr } from "./const/response_str"; import { checkEnv } from "./utils/env"; @@ -17,6 +17,7 @@ const db = new SQL({ "database": Bun.env.DB_NAME ?? "user_auth", "allowPublicKeyRetrieval": true }) +await initAdmin(db) // 鉴权 app.get( diff --git a/src/utils/admin.ts b/src/utils/admin.ts index 95fc76f..49ed763 100644 --- a/src/utils/admin.ts +++ b/src/utils/admin.ts @@ -14,4 +14,16 @@ export async function checkAdmin( return false } return await Bun.password.verify(passwd, rows[0]!["passwd"]) +} + +export async function initAdmin(db: SQL) { + const admin_name = Bun.env.admin_name ?? "" + const admin_passwd = Bun.env.admin_passwd ?? "" + // 判断有没有管理员 + const adminRows = await db`select * from admin` + if (adminRows.length != 0) { + return + } + const encryptPasswd = await Bun.password.hash(admin_passwd) + await db`insert into admin(name, passwd) values(${admin_name}, ${encryptPasswd})` } \ No newline at end of file