backup serving, storing and restoring
This commit is contained in:
parent
fc01263c4e
commit
6330ebd01d
8 changed files with 261 additions and 3 deletions
|
@ -1,5 +1,6 @@
|
|||
import express from "express";
|
||||
import PermissionHelper from "../../helpers/permissionHelper";
|
||||
import preventWebapiAccess from "../../middleware/preventWebApiAccess";
|
||||
|
||||
import award from "./settings/award";
|
||||
import communicationType from "./settings/communicationType";
|
||||
|
@ -23,7 +24,7 @@ import role from "./user/role";
|
|||
import user from "./user/user";
|
||||
import invite from "./user/invite";
|
||||
import api from "./user/webapi";
|
||||
import preventWebapiAccess from "../../middleware/preventWebApiAccess";
|
||||
import backup from "./user/backup";
|
||||
|
||||
var router = express.Router({ mergeParams: true });
|
||||
|
||||
|
@ -143,5 +144,6 @@ router.use(
|
|||
);
|
||||
router.use("/invite", PermissionHelper.passCheckMiddleware("read", "user", "user"), invite);
|
||||
router.use("/webapi", preventWebapiAccess, PermissionHelper.passCheckMiddleware("read", "user", "webapi"), api);
|
||||
router.use("/backup", preventWebapiAccess, PermissionHelper.passCheckMiddleware("read", "user", "backup"), backup);
|
||||
|
||||
export default router;
|
||||
|
|
67
src/routes/admin/user/backup.ts
Normal file
67
src/routes/admin/user/backup.ts
Normal file
|
@ -0,0 +1,67 @@
|
|||
import express, { Request, Response } from "express";
|
||||
import PermissionHelper from "../../../helpers/permissionHelper";
|
||||
import multer from "multer";
|
||||
import {
|
||||
createManualBackup,
|
||||
downloadBackupFile,
|
||||
getGeneratedBackups,
|
||||
restoreBackupByLocalFile,
|
||||
uploadBackupFile,
|
||||
} from "../../../controller/admin/club/backupController";
|
||||
|
||||
const storage = multer.diskStorage({
|
||||
destination: (req, file, cb) => {
|
||||
cb(null, "files/backup/");
|
||||
},
|
||||
filename: (req, file, cb) => {
|
||||
cb(null, `${new Date().toISOString().split("T")[0]}-uploaded-${file.originalname}`);
|
||||
},
|
||||
});
|
||||
|
||||
const upload = multer({
|
||||
storage,
|
||||
fileFilter: (req: Request, file, cb) => {
|
||||
if (file.mimetype === "application/json") {
|
||||
cb(null, true);
|
||||
} else {
|
||||
cb(new Error("Only JSON files are allowed!"));
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
var router = express.Router({ mergeParams: true });
|
||||
|
||||
router.get("/", async (req: Request, res: Response) => {
|
||||
await getGeneratedBackups(req, res);
|
||||
});
|
||||
|
||||
router.get("/:filename", async (req: Request, res: Response) => {
|
||||
await downloadBackupFile(req, res);
|
||||
});
|
||||
|
||||
router.post(
|
||||
"/",
|
||||
PermissionHelper.passCheckMiddleware("create", "user", "backup"),
|
||||
async (req: Request, res: Response) => {
|
||||
await createManualBackup(req, res);
|
||||
}
|
||||
);
|
||||
|
||||
router.post(
|
||||
"/restore",
|
||||
PermissionHelper.passCheckMiddleware("admin", "user", "backup"),
|
||||
async (req: Request, res: Response) => {
|
||||
await restoreBackupByLocalFile(req, res);
|
||||
}
|
||||
);
|
||||
|
||||
router.post(
|
||||
"/upload",
|
||||
PermissionHelper.passCheckMiddleware("create", "user", "backup"),
|
||||
upload.single("file"),
|
||||
async (req: Request, res: Response) => {
|
||||
await uploadBackupFile(req, res);
|
||||
}
|
||||
);
|
||||
|
||||
export default router;
|
Loading…
Add table
Add a link
Reference in a new issue