后端实现Resources修改接口

This commit is contained in:
2024-09-01 13:46:10 +08:00
parent bb23f0073d
commit 0bc7eeb3ea
6 changed files with 124 additions and 4 deletions

View File

@@ -0,0 +1,26 @@
import { API } from "../../Plugs/API/API";
import ServerStdResponse from "../../ServerStdResponse";
import MySQLConnection from '../../Plugs/MySQLConnection'
import Auth from "../../Plugs/Middleware/Auth";
// 删除资源
class DelResource extends API {
constructor() {
super('DELETE', '/console/resource', Auth);
}
public async onRequset(data: any, res: any) {
let { id } = data;
if (!id) {
return res.json(ServerStdResponse.PARAMS_MISSING);
}
let execRes = await MySQLConnection.execute('DELETE FROM resource WHERE `id` = ?', [id]);
if (!execRes || execRes.affectedRows != 1) {
return res.json(ServerStdResponse.SERVER_ERROR);
}
return res.json({ ...ServerStdResponse.OK });
}
}
export default DelResource;

View File

@@ -0,0 +1,22 @@
import { API } from "../../Plugs/API/API";
import ServerStdResponse from "../../ServerStdResponse";
import MySQLConnection from '../../Plugs/MySQLConnection'
import Auth from "../../Plugs/Middleware/Auth";
// 获取博客列表
class GetBlogs extends API {
constructor() {
super('GET', '/console/blogs', Auth);
}
public async onRequset(data: any, res: any) {
// const { uuid } = data._jwt;
let resourcesRes = await MySQLConnection.execute("SELECT * FROM blog");
if (!resourcesRes) {
return res.json(ServerStdResponse.SERVER_ERROR);
}
return res.json({ ...ServerStdResponse.OK, data: resourcesRes });
}
}
export default GetBlogs;

View File

@@ -0,0 +1,22 @@
import { API } from "../../Plugs/API/API";
import ServerStdResponse from "../../ServerStdResponse";
import MySQLConnection from '../../Plugs/MySQLConnection'
import Auth from "../../Plugs/Middleware/Auth";
// 获取资源列表
class GetResources extends API {
constructor() {
super('GET', '/console/resources', Auth);
}
public async onRequset(data: any, res: any) {
// const { uuid } = data._jwt;
let resourcesRes = await MySQLConnection.execute("SELECT * FROM resource");
if (!resourcesRes) {
return res.json(ServerStdResponse.SERVER_ERROR);
}
return res.json({ ...ServerStdResponse.OK, data: resourcesRes });
}
}
export default GetResources;

View File

@@ -0,0 +1,33 @@
import { API } from "../../Plugs/API/API";
import ServerStdResponse from "../../ServerStdResponse";
import MySQLConnection from '../../Plugs/MySQLConnection'
import Auth from "../../Plugs/Middleware/Auth";
// 保存资源
class SaveResource extends API {
constructor() {
super('POST', '/console/saveResource', Auth);
}
public async onRequset(data: any, res: any) {
let { id, type, recommand, title, describe, icon_src, addition, src } = data;
if (!type || !recommand || !title || !describe || !icon_src || !addition || !src) {
return res.json(ServerStdResponse.PARAMS_MISSING);
}
let execRes: any;
if (id) {
// 保存
execRes = await MySQLConnection.execute('UPDATE resource SET `type` = ?, `recommand` = ?, `title` = ?, `describe` = ?, `addition` = ?, `icon_src` = ?, `src` = ? WHERE `id` = ?', [type, recommand, title, describe, addition, icon_src, src, id]);
} else {
// 新建
execRes = await MySQLConnection.execute('INSERT INTO resource (`type`, `recommand`, `title`, `describe`, `addition`, `icon_src`, `src`) VALUES (?,?,?,?,?,?,?)', [type, recommand, title, describe, addition, icon_src, src]);
}
if (!execRes || execRes.affectedRows != 1) {
return res.json(ServerStdResponse.SERVER_ERROR);
}
return res.json({ ...ServerStdResponse.OK });
}
}
export default SaveResource;

View File

@@ -2,14 +2,22 @@ import { Request, Response, NextFunction } from "express";
import config from "../../config"; import config from "../../config";
import ServerStdResponse from "../../ServerStdResponse"; import ServerStdResponse from "../../ServerStdResponse";
import Logger from "../Logger"; import Logger from "../Logger";
import jwt from 'jsonwebtoken'
const logger = new Logger("Auth"); const logger = new Logger("Auth");
const Auth = (req: Request, res: Response, next: NextFunction) => { const Auth = (req: Request, res: Response, next: NextFunction) => {
let token = req.headers.authorization; let token = req.headers.authorization;
if (token === config.authToken || token == config.adminToken) { try {
next(); if (!token) {
} else { throw new Error('空Token')
}
if(typeof token != 'string' || token.indexOf('Bearer ') == -1){
throw new Error('格式错误的Token')
}
req.body._jwt = jwt.verify(token.replace('Bearer ',''), config.jwt.secret);
next()
} catch (error) {
let ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress || req.ip; let ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress || req.ip;
logger.info(`API[${req.method}][${req.url.split('?')[0]}] 请求鉴权不通过[${token}][${ip}]`); logger.info(`API[${req.method}][${req.url.split('?')[0]}] 请求鉴权不通过[${token}][${ip}] ${error}`);
res.json(ServerStdResponse.AUTH_ERROR); res.json(ServerStdResponse.AUTH_ERROR);
} }
} }

View File

@@ -15,7 +15,12 @@ import BlogComment from "../APIs/BlogComment";
import GetBlogComment from "../APIs/GetBlogComment"; import GetBlogComment from "../APIs/GetBlogComment";
import GetCaptcha from "../APIs/GetCaptcha"; import GetCaptcha from "../APIs/GetCaptcha";
import CheckCaptcha from "../APIs/CheckCaptcha"; import CheckCaptcha from "../APIs/CheckCaptcha";
import Login from "../APIs/Console/Login"; import Login from "../APIs/Console/Login";
import GetResources from "../APIs/Console/GetResources";
import GetBlogs from '../APIs/Console/GetBlogs'
import SaveResource from '../APIs/Console/SaveResource'
import DelResource from '../APIs/Console/DelResource'
class Server { class Server {
private logger = new Logger('Server'); private logger = new Logger('Server');
@@ -39,6 +44,10 @@ class Server {
this.apiLoader.add(CheckCaptcha); this.apiLoader.add(CheckCaptcha);
this.apiLoader.add(Login); this.apiLoader.add(Login);
this.apiLoader.add(GetResources);
this.apiLoader.add(GetBlogs)
this.apiLoader.add(SaveResource);
this.apiLoader.add(DelResource);
this.apiLoader.start(config.apiPort); this.apiLoader.start(config.apiPort);
} }