feat: webui auth

This commit is contained in:
手瓜一十雪
2024-05-08 20:33:48 +08:00
parent d4ec6ede83
commit 963bd2961d
44 changed files with 66 additions and 62 deletions

View File

@@ -6,13 +6,13 @@ import { OB11Config } from "@/webui/ui/components/WebUiApiOB11Config";
const isEmpty = (data: any) => data === undefined || data === null || data === '';
export const OB11GetConfigHandler: RequestHandler = async (req, res) => {
let isLogin = await DataRuntime.getQQLoginStatus();
// if (!isLogin) {
// res.send({
// code: -1,
// message: 'Not Login'
// });
// return;
// }
if (!isLogin) {
res.send({
code: -1,
message: 'Not Login'
});
return;
}
const uin = await DataRuntime.getQQLoginUin();
let configFilePath = resolve(__dirname, `./config/onebot11_${uin}.json`);
//console.log(configFilePath);
@@ -37,13 +37,13 @@ export const OB11GetConfigHandler: RequestHandler = async (req, res) => {
}
export const OB11SetConfigHandler: RequestHandler = async (req, res) => {
let isLogin = await DataRuntime.getQQLoginStatus();
// if (!isLogin) {
// res.send({
// code: -1,
// message: 'Not Login'
// });
// return;
// }
if (!isLogin) {
res.send({
code: -1,
message: 'Not Login'
});
return;
}
if (isEmpty(req.body.config)) {
res.send({
code: -1,

View File

@@ -1,7 +1,8 @@
import { Router } from 'express';
import { QQCheckLoginStatusHandler, QQGetQRcodeHandler, QQGetQuickLoginListHandler } from '../api/QQLogin';
import { QQCheckLoginStatusHandler, QQGetQRcodeHandler, QQGetQuickLoginListHandler, QQSetQuickLoginHandler } from '../api/QQLogin';
const router = Router();
router.all('/GetQuickLoginList', QQGetQuickLoginListHandler)
router.post('/CheckLoginStatus', QQCheckLoginStatusHandler);
router.post('/GetQQLoginQrcode', QQGetQRcodeHandler);
router.post('/SetQuickLogin', QQSetQuickLoginHandler);
export { router as QQLoginRouter };

View File

@@ -4,20 +4,22 @@ import { NextFunction, Request, Response } from 'express';
import { QQLoginRouter } from "./QQLogin";
import { AuthRouter } from "./auth";
import { OB11ConfigRouter } from "./OB11Config";
import { WebUiConfig } from "../helper/config";
const router = Router();
export async function AuthApi(req: Request, res: Response, next: NextFunction) {
//判断当前url是否为/api/login 如果是跳过鉴权
console.log(req.url);
//判断当前url是否为/login 如果是跳过鉴权
try {
if (req.url == '/api/auth/login') {
if (req.url == '/auth/login') {
next();
return;
}
if (req.headers?.authorization) {
let token = req.headers?.authorization.split(' ')[1];
let Credential = JSON.parse(Buffer.from(token, 'base64').toString('utf-8'));
let credentialJson = await AuthHelper.checkCredential(Credential);
let config = await WebUiConfig.GetWebUIConfig();
let credentialJson = await AuthHelper.validateCredentialWithinOneHour(config.token, Credential);
if (credentialJson) {
//通过验证
next();
}
res.json({
@@ -39,7 +41,7 @@ export async function AuthApi(req: Request, res: Response, next: NextFunction) {
});
return;
}
//router.use('/*', AuthApi);//鉴权
router.use(AuthApi);
router.all("/test", (req, res) => {
res.json({
code: 0,
@@ -47,6 +49,6 @@ router.all("/test", (req, res) => {
});
});
router.use('/auth', AuthRouter);
router.use('/QQLogin',QQLoginRouter);
router.use('/OB11Config',OB11ConfigRouter);
router.use('/QQLogin', QQLoginRouter);
router.use('/OB11Config', OB11ConfigRouter);
export { router as ALLRouter }