@scefira/dfw 0.0.58 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/DFWInstance.d.ts +21 -0
- package/lib/DFWInstance.d.ts.map +1 -0
- package/lib/DFWInstance.js +52 -0
- package/lib/DFWInstance.js.map +1 -0
- package/lib/{script/DFWUtils.d.ts → DFWUtils.d.ts} +3 -4
- package/lib/DFWUtils.d.ts.map +1 -0
- package/lib/{script/DFWUtils.js → DFWUtils.js} +9 -15
- package/lib/DFWUtils.js.map +1 -0
- package/lib/index.d.ts +7 -58
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +14 -11
- package/lib/index.js.map +1 -1
- package/lib/manager/APIManager.d.ts +48 -0
- package/lib/manager/APIManager.d.ts.map +1 -0
- package/lib/manager/APIManager.js +210 -0
- package/lib/manager/APIManager.js.map +1 -0
- package/lib/manager/DFWModule.d.ts +10 -0
- package/lib/manager/DFWModule.d.ts.map +1 -0
- package/lib/manager/DFWModule.js +10 -0
- package/lib/manager/DFWModule.js.map +1 -0
- package/lib/manager/DatabaseManager.d.ts +9 -0
- package/lib/manager/DatabaseManager.d.ts.map +1 -0
- package/lib/manager/DatabaseManager.js +25 -0
- package/lib/manager/DatabaseManager.js.map +1 -0
- package/lib/manager/FileManager.d.ts +64 -0
- package/lib/manager/FileManager.d.ts.map +1 -0
- package/lib/manager/FileManager.js +206 -0
- package/lib/manager/FileManager.js.map +1 -0
- package/lib/{module → manager}/SecurityManager.d.ts +13 -13
- package/lib/manager/SecurityManager.d.ts.map +1 -0
- package/lib/{module → manager}/SecurityManager.js +36 -63
- package/lib/manager/SecurityManager.js.map +1 -0
- package/lib/manager/SessionManager.d.ts +41 -0
- package/lib/manager/SessionManager.d.ts.map +1 -0
- package/lib/manager/SessionManager.js +173 -0
- package/lib/manager/SessionManager.js.map +1 -0
- package/lib/manager/UserManager.d.ts +15 -0
- package/lib/manager/UserManager.d.ts.map +1 -0
- package/lib/manager/UserManager.js +101 -0
- package/lib/manager/UserManager.js.map +1 -0
- package/lib/test.js +25 -75
- package/lib/test.js.map +1 -1
- package/lib/types/APIListenerConfig.d.ts +46 -0
- package/lib/types/APIListenerConfig.d.ts.map +1 -0
- package/lib/types/{DFWAPIListenerConfig.js → APIListenerConfig.js} +1 -1
- package/lib/types/APIListenerConfig.js.map +1 -0
- package/lib/types/DFWBoot.d.ts +19 -0
- package/lib/types/DFWBoot.d.ts.map +1 -0
- package/lib/types/DFWBoot.js +3 -0
- package/lib/types/DFWBoot.js.map +1 -0
- package/lib/types/DFWConfig.d.ts +7 -21
- package/lib/types/DFWConfig.d.ts.map +1 -1
- package/lib/types/DFWRequestScheme.d.ts +36 -0
- package/lib/types/DFWRequestScheme.d.ts.map +1 -0
- package/lib/types/DFWRequestScheme.js +3 -0
- package/lib/types/DFWRequestScheme.js.map +1 -0
- package/package.json +31 -43
- package/prisma/schema.prisma +117 -0
- package/lib/model/dfw_access.d.ts +0 -11
- package/lib/model/dfw_access.d.ts.map +0 -1
- package/lib/model/dfw_access.js +0 -58
- package/lib/model/dfw_access.js.map +0 -1
- package/lib/model/dfw_access_credential.d.ts +0 -6
- package/lib/model/dfw_access_credential.d.ts.map +0 -1
- package/lib/model/dfw_access_credential.js +0 -41
- package/lib/model/dfw_access_credential.js.map +0 -1
- package/lib/model/dfw_credential.d.ts +0 -12
- package/lib/model/dfw_credential.d.ts.map +0 -1
- package/lib/model/dfw_credential.js +0 -100
- package/lib/model/dfw_credential.js.map +0 -1
- package/lib/model/dfw_file.d.ts +0 -23
- package/lib/model/dfw_file.d.ts.map +0 -1
- package/lib/model/dfw_file.js +0 -121
- package/lib/model/dfw_file.js.map +0 -1
- package/lib/model/dfw_session.d.ts +0 -15
- package/lib/model/dfw_session.d.ts.map +0 -1
- package/lib/model/dfw_session.js +0 -69
- package/lib/model/dfw_session.js.map +0 -1
- package/lib/model/dfw_user.d.ts +0 -31
- package/lib/model/dfw_user.d.ts.map +0 -1
- package/lib/model/dfw_user.js +0 -211
- package/lib/model/dfw_user.js.map +0 -1
- package/lib/model/dfw_users_credential.d.ts +0 -6
- package/lib/model/dfw_users_credential.d.ts.map +0 -1
- package/lib/model/dfw_users_credential.js +0 -41
- package/lib/model/dfw_users_credential.js.map +0 -1
- package/lib/module/APIManager.d.ts +0 -86
- package/lib/module/APIManager.d.ts.map +0 -1
- package/lib/module/APIManager.js +0 -267
- package/lib/module/APIManager.js.map +0 -1
- package/lib/module/DatabaseManager.d.ts +0 -22
- package/lib/module/DatabaseManager.d.ts.map +0 -1
- package/lib/module/DatabaseManager.js +0 -58
- package/lib/module/DatabaseManager.js.map +0 -1
- package/lib/module/FileManager.d.ts +0 -196
- package/lib/module/FileManager.d.ts.map +0 -1
- package/lib/module/FileManager.js +0 -433
- package/lib/module/FileManager.js.map +0 -1
- package/lib/module/SecurityManager.d.ts.map +0 -1
- package/lib/module/SecurityManager.js.map +0 -1
- package/lib/module/SessionManager.d.ts +0 -49
- package/lib/module/SessionManager.d.ts.map +0 -1
- package/lib/module/SessionManager.js +0 -220
- package/lib/module/SessionManager.js.map +0 -1
- package/lib/module/UserManager.d.ts +0 -16
- package/lib/module/UserManager.d.ts.map +0 -1
- package/lib/module/UserManager.js +0 -74
- package/lib/module/UserManager.js.map +0 -1
- package/lib/script/DFWInstance.d.ts +0 -38
- package/lib/script/DFWInstance.d.ts.map +0 -1
- package/lib/script/DFWInstance.js +0 -65
- package/lib/script/DFWInstance.js.map +0 -1
- package/lib/script/DFWModule.d.ts +0 -10
- package/lib/script/DFWModule.d.ts.map +0 -1
- package/lib/script/DFWModule.js +0 -12
- package/lib/script/DFWModule.js.map +0 -1
- package/lib/script/DFWUtils.d.ts.map +0 -1
- package/lib/script/DFWUtils.js.map +0 -1
- package/lib/types/DFWAPIListenerConfig.d.ts +0 -39
- package/lib/types/DFWAPIListenerConfig.d.ts.map +0 -1
- package/lib/types/DFWAPIListenerConfig.js.map +0 -1
- package/lib/types/DFWRequestError.d.ts +0 -9
- package/lib/types/DFWRequestError.d.ts.map +0 -1
- package/lib/types/DFWRequestError.js +0 -15
- package/lib/types/DFWRequestError.js.map +0 -1
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import DFWInstance from "../DFWInstance";
|
|
2
|
+
import { DFWRequest } from "../types/DFWRequestScheme";
|
|
3
|
+
import DFWModule from "./DFWModule";
|
|
4
|
+
import { Response } from "express";
|
|
5
|
+
import { dfw_file, dfw_user } from "@prisma/client";
|
|
6
|
+
import { UploadedFile } from "express-fileupload";
|
|
7
|
+
declare type FileConfig = {
|
|
8
|
+
protected?: boolean | any[];
|
|
9
|
+
expiration?: Date;
|
|
10
|
+
slug?: string;
|
|
11
|
+
description?: string;
|
|
12
|
+
user: dfw_user | number | null;
|
|
13
|
+
parent?: number | dfw_file;
|
|
14
|
+
variant?: string;
|
|
15
|
+
replaceVariants?: boolean;
|
|
16
|
+
};
|
|
17
|
+
export declare type UploadConfig = {
|
|
18
|
+
headers?: any;
|
|
19
|
+
highWaterMark?: number;
|
|
20
|
+
fileHwm?: number;
|
|
21
|
+
defCharset?: string;
|
|
22
|
+
preservePath?: boolean;
|
|
23
|
+
limits?: {
|
|
24
|
+
fieldNameSize?: number;
|
|
25
|
+
fieldSize?: number;
|
|
26
|
+
fields?: number;
|
|
27
|
+
fileSize?: number;
|
|
28
|
+
files?: number;
|
|
29
|
+
parts?: number;
|
|
30
|
+
headerPairs?: number;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
export default class FileManager extends DFWModule {
|
|
34
|
+
readonly tmpDir: string;
|
|
35
|
+
readonly publicStaticFilesPath = "/static/upload";
|
|
36
|
+
constructor(DFW: DFWInstance);
|
|
37
|
+
middleware: (req: DFWRequest, res: Response) => Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Takes a local tmp file and move to the files on DFW folder and save db record
|
|
40
|
+
*/
|
|
41
|
+
assignLocalFileAsync(filePath: string, cfg: FileConfig, moveLocalFile?: boolean): Promise<dfw_file>;
|
|
42
|
+
/**
|
|
43
|
+
*
|
|
44
|
+
* @param bodyFileName
|
|
45
|
+
* @param cfg
|
|
46
|
+
*/
|
|
47
|
+
flushUpload(file: UploadedFile, cfg: FileConfig): Promise<void>;
|
|
48
|
+
generateTempFileName(posfix?: string): string;
|
|
49
|
+
/**
|
|
50
|
+
*
|
|
51
|
+
* @param file
|
|
52
|
+
*/
|
|
53
|
+
getFileDataAsync(file: number | dfw_file): Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Remove file record from the DB and from the local file space (removes their children too)
|
|
56
|
+
*/
|
|
57
|
+
removeFileAsync(file: number | dfw_file): Promise<void>;
|
|
58
|
+
/**
|
|
59
|
+
*
|
|
60
|
+
*/
|
|
61
|
+
sweepExpiredFilesAsync(): Promise<void>;
|
|
62
|
+
}
|
|
63
|
+
export {};
|
|
64
|
+
//# sourceMappingURL=FileManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileManager.d.ts","sourceRoot":"","sources":["../../src/manager/FileManager.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,SAAS,MAAM,aAAa,CAAC;AAGpC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAKnC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAWlD,aAAK,UAAU,GAAG;IACd,SAAS,CAAC,EAAE,OAAO,GAAG,GAAG,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAA;AAED,oBAAY,YAAY,GAAG;IACvB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE;QACL,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;CACL,CAAA;AAMD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,SAAS;IAE9C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,qBAAqB,oBAAoC;gBAEtD,GAAG,EAAE,WAAW;IA6BrB,UAAU,QAAe,UAAU,OAAO,QAAQ,mBAGxD;IAED;;OAEG;IACU,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,aAAa,GAAE,OAAe;IA6DnG;;;;OAIG;IACU,WAAW,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU;IAIrD,oBAAoB,CAAC,MAAM,CAAC,EAAE,MAAM;IAI3C;;;OAGG;IACU,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAIrD;;OAEG;IACU,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAkCpD;;OAEG;IACU,sBAAsB;CAItC"}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
22
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
23
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
24
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
25
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
26
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
27
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
31
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
32
|
+
};
|
|
33
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
34
|
+
const util_1 = require("util");
|
|
35
|
+
const DFWModule_1 = __importDefault(require("./DFWModule"));
|
|
36
|
+
const md5_file_1 = __importDefault(require("md5-file"));
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const DFWUtils_1 = __importDefault(require("../DFWUtils"));
|
|
40
|
+
const luxon_1 = require("luxon");
|
|
41
|
+
const fileExistsAsync = (0, util_1.promisify)(fs.exists);
|
|
42
|
+
const fileRenameAsync = (0, util_1.promisify)(fs.rename);
|
|
43
|
+
const fileMakeDir = (0, util_1.promisify)(fs.mkdir);
|
|
44
|
+
const fileMakeTempDir = (0, util_1.promisify)(fs.mkdtemp);
|
|
45
|
+
const fileStat = (0, util_1.promisify)(fs.stat);
|
|
46
|
+
const fileUnlink = (0, util_1.promisify)(fs.unlink);
|
|
47
|
+
const fileCopy = (0, util_1.promisify)(fs.copyFile);
|
|
48
|
+
const DEFAULT_PUBLIC_STATIC_FILES_PATH = "/static/upload";
|
|
49
|
+
const LOCAL_PUBLIC_UPLOAD_DIR = ".dfw/upload/public";
|
|
50
|
+
const LOCAL_PROTECTED_UPLOAD_DIR = ".dfw/upload/protected";
|
|
51
|
+
class FileManager extends DFWModule_1.default {
|
|
52
|
+
constructor(DFW) {
|
|
53
|
+
super(DFW);
|
|
54
|
+
this.publicStaticFilesPath = DEFAULT_PUBLIC_STATIC_FILES_PATH;
|
|
55
|
+
this.middleware = (req, res) => __awaiter(this, void 0, void 0, function* () {
|
|
56
|
+
req.dfw.FileManager = this;
|
|
57
|
+
});
|
|
58
|
+
if (DFW.config.upload && DFW.config.upload.tempDir) {
|
|
59
|
+
this.tmpDir = DFW.config.upload.tempDir;
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
this.tmpDir = ".dfw/temp";
|
|
63
|
+
}
|
|
64
|
+
if (fs.existsSync(this.tmpDir)) {
|
|
65
|
+
fs.rmSync(this.tmpDir, { recursive: true });
|
|
66
|
+
fs.mkdirSync(this.tmpDir);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
fs.mkdirSync(this.tmpDir);
|
|
70
|
+
}
|
|
71
|
+
this.tmpDir = path.normalize(fs.mkdtempSync(`${this.tmpDir}${path.sep}`));
|
|
72
|
+
// Public static upload path
|
|
73
|
+
//DFW.APIManager.server.use(this.publicStaticFilesPath, ExpressStatic(LOCAL_PUBLIC_UPLOAD_DIR, { maxAge: 2592000 }));
|
|
74
|
+
// Clear expired files each 6 hours
|
|
75
|
+
/*
|
|
76
|
+
setInterval(() => {
|
|
77
|
+
this.sweepExpiredFilesAsync();
|
|
78
|
+
}, 21600000);
|
|
79
|
+
*/
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Takes a local tmp file and move to the files on DFW folder and save db record
|
|
83
|
+
*/
|
|
84
|
+
assignLocalFileAsync(filePath, cfg, moveLocalFile = false) {
|
|
85
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
86
|
+
if ((yield fileExistsAsync(filePath)) == false) {
|
|
87
|
+
throw `Process uploaded file async error, unable to find file ${filePath}`;
|
|
88
|
+
}
|
|
89
|
+
let checksum = yield (0, md5_file_1.default)(filePath);
|
|
90
|
+
let stats = yield fileStat(filePath);
|
|
91
|
+
let mimetype = DFWUtils_1.default.getFileMimetype(filePath);
|
|
92
|
+
let filename = `${DFWUtils_1.default.uuid()}.${DFWUtils_1.default.getFilenameExtension(filePath)}`;
|
|
93
|
+
let partialPath = `${cfg.protected ? LOCAL_PROTECTED_UPLOAD_DIR : LOCAL_PUBLIC_UPLOAD_DIR}/${luxon_1.DateTime.now().toFormat("YYYY/MM")}`;
|
|
94
|
+
let expire = cfg.expiration ? cfg.expiration : null;
|
|
95
|
+
let finalFilePath = `${partialPath}/${filename}`;
|
|
96
|
+
let description = cfg.description;
|
|
97
|
+
let variant = cfg.variant;
|
|
98
|
+
let idParent = typeof cfg.parent == "object" ? cfg.parent.id : cfg.parent;
|
|
99
|
+
if ((yield fileExistsAsync(partialPath)) == false) {
|
|
100
|
+
yield fileMakeDir(partialPath, { recursive: true });
|
|
101
|
+
}
|
|
102
|
+
if (moveLocalFile) {
|
|
103
|
+
yield fileRenameAsync(filePath, finalFilePath).catch((e) => {
|
|
104
|
+
throw new Error("Process uploaded file async error, unable to move file uploaded: " + e);
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
yield fileCopy(filePath, finalFilePath).catch((e) => {
|
|
109
|
+
throw new Error("Process uploaded file async error, unable to copy file uploaded: " + e);
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
return this.db.$transaction(() => __awaiter(this, void 0, void 0, function* () {
|
|
113
|
+
// Removing same variant if has variant and parent
|
|
114
|
+
if (cfg.parent && cfg.variant) {
|
|
115
|
+
let dfl = yield this.db.dfw_file.findMany({
|
|
116
|
+
where: {
|
|
117
|
+
idParent,
|
|
118
|
+
variant,
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
for (let df of dfl) {
|
|
122
|
+
yield this.removeFileAsync(df);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return this.db.dfw_file.create({
|
|
126
|
+
data: {
|
|
127
|
+
idParent,
|
|
128
|
+
mimetype,
|
|
129
|
+
checksum,
|
|
130
|
+
expire,
|
|
131
|
+
variant,
|
|
132
|
+
description,
|
|
133
|
+
path: finalFilePath,
|
|
134
|
+
idUser: cfg.user === null ? null : typeof cfg.user == "object" ? cfg.user.id : cfg.user,
|
|
135
|
+
slug: cfg.slug,
|
|
136
|
+
size: Math.ceil(stats.size / 1024),
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
}));
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
*
|
|
144
|
+
* @param bodyFileName
|
|
145
|
+
* @param cfg
|
|
146
|
+
*/
|
|
147
|
+
flushUpload(file, cfg) {
|
|
148
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
149
|
+
this.assignLocalFileAsync(file.tempFilePath, cfg, true);
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
generateTempFileName(posfix) {
|
|
153
|
+
return path.join(this.tmpDir, `${DFWUtils_1.default.uuid()}${posfix ? `.${posfix}` : ""}`);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
*
|
|
157
|
+
* @param file
|
|
158
|
+
*/
|
|
159
|
+
getFileDataAsync(file) {
|
|
160
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Remove file record from the DB and from the local file space (removes their children too)
|
|
165
|
+
*/
|
|
166
|
+
removeFileAsync(file) {
|
|
167
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
168
|
+
let path;
|
|
169
|
+
let idFile = typeof file == "object" ? file.id : file;
|
|
170
|
+
let fileObj = typeof file == "object" ? file : yield this.db.dfw_file.findUnique({ select: { path: true }, where: { id: idFile } });
|
|
171
|
+
if (fileObj) {
|
|
172
|
+
path = fileObj.path;
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
throw `Unable to find file`;
|
|
176
|
+
}
|
|
177
|
+
let childrenFiles = yield this.db.dfw_file.findMany({
|
|
178
|
+
where: {
|
|
179
|
+
idParent: idFile
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
for (let fc of childrenFiles) {
|
|
183
|
+
if (fc)
|
|
184
|
+
yield this.removeFileAsync(fc); // Remove all children files
|
|
185
|
+
}
|
|
186
|
+
if (fs.existsSync(path)) {
|
|
187
|
+
yield fileUnlink(path).then(() => {
|
|
188
|
+
this.db.dfw_file.delete({
|
|
189
|
+
where: {
|
|
190
|
+
id: idFile
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
}).catch(() => { throw `Unable to remove file ${idFile}`; });
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
*
|
|
199
|
+
*/
|
|
200
|
+
sweepExpiredFilesAsync() {
|
|
201
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
exports.default = FileManager;
|
|
206
|
+
//# sourceMappingURL=FileManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileManager.js","sourceRoot":"","sources":["../../src/manager/FileManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import DFWModule from "
|
|
5
|
-
import {
|
|
1
|
+
import { Request, Response } from "express";
|
|
2
|
+
import { DFWRequest } from "../types/DFWRequestScheme";
|
|
3
|
+
import { ListenerSecurityConfig } from "../types/APIListenerConfig";
|
|
4
|
+
import DFWModule from "./DFWModule";
|
|
5
|
+
import { dfw_access, dfw_credential, dfw_user } from "@prisma/client";
|
|
6
6
|
export declare type SecurityScheme = {
|
|
7
7
|
hasAccessAsync: (access: string | string[] | number | number[] | dfw_access | dfw_access[]) => Promise<boolean>;
|
|
8
8
|
hasCredentialsAsync: (credentials: string | string[] | number | number[] | dfw_credential | dfw_credential[]) => Promise<boolean>;
|
|
@@ -20,13 +20,12 @@ export default class SecurityManager extends DFWModule {
|
|
|
20
20
|
3: string;
|
|
21
21
|
4: string;
|
|
22
22
|
};
|
|
23
|
-
middleware: (req:
|
|
24
|
-
APILevelMiddleware: (...args: any[]) => Promise<void>;
|
|
23
|
+
middleware: (req: DFWRequest, res: Response) => Promise<void>;
|
|
25
24
|
/**
|
|
26
25
|
* Genera un array de security bindings a partir de un obejto ListenerSecurityConfig
|
|
27
|
-
* @param
|
|
26
|
+
* @param securityObject
|
|
28
27
|
*/
|
|
29
|
-
static jsonToBindings(
|
|
28
|
+
static jsonToBindings(securityObject: ListenerSecurityConfig): [number, any][];
|
|
30
29
|
static verifyPassword(encoded: string, test: string): boolean;
|
|
31
30
|
static encryptPassword(password: string): string;
|
|
32
31
|
/**
|
|
@@ -34,16 +33,17 @@ export default class SecurityManager extends DFWModule {
|
|
|
34
33
|
* @param req
|
|
35
34
|
* @param bindings
|
|
36
35
|
*/
|
|
37
|
-
checkBindingArrayAsync(req:
|
|
36
|
+
checkBindingArrayAsync(req: DFWRequest, bindings: [number, any][]): Promise<boolean>;
|
|
38
37
|
/**
|
|
39
38
|
*
|
|
40
39
|
* @param req
|
|
41
40
|
* @param type
|
|
42
41
|
* @param value
|
|
43
42
|
*/
|
|
44
|
-
checkBindingAsync(req:
|
|
45
|
-
|
|
46
|
-
|
|
43
|
+
checkBindingAsync(req: DFWRequest, type: number, value: any | any[]): Promise<boolean>;
|
|
44
|
+
createCredentialAsync(name: string): Promise<dfw_credential>;
|
|
45
|
+
checkUserCredentialsAsync(user: dfw_user | null | undefined, credential: dfw_credential | dfw_credential[] | string | string[]): Promise<boolean>;
|
|
46
|
+
checkUserAccessAsync(user: dfw_user | null | undefined, access: dfw_access | dfw_access[] | string | string[]): Promise<boolean>;
|
|
47
47
|
checkBodyParams(req: Request, params: string[]): boolean;
|
|
48
48
|
checkQueryParams(req: Request, params: string[]): boolean;
|
|
49
49
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SecurityManager.d.ts","sourceRoot":"","sources":["../../src/manager/SecurityManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAqB,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACvF,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAEtE,oBAAY,cAAc,GAAG;IACzB,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,UAAU,GAAG,UAAU,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAC/G,mBAAmB,EAAE,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,cAAc,GAAG,cAAc,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CACpI,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,SAAS;IAElD,MAAM,CAAC,QAAQ,CAAC,mBAAmB,KAAK;IACxC,MAAM,CAAC,QAAQ,CAAC,WAAW,KAAK;IAChC,MAAM,CAAC,QAAQ,CAAC,eAAe,KAAK;IACpC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,KAAK;IAC5C,MAAM,CAAC,QAAQ,CAAC,wBAAwB,KAAK;IAE7C,MAAM,CAAC,QAAQ,CAAC,WAAW;;;;;;MAM1B;IAEM,UAAU,QAAe,UAAU,OAAO,QAAQ,mBASxD;IAED;;;OAGG;WACW,cAAc,CAAC,cAAc,EAAE,sBAAsB,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;WAiCvE,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;WAItD,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAIvD;;;;OAIG;IACU,sBAAsB,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAWjG;;;;;OAKG;IACU,iBAAiB,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IA4BtF,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAI5D,yBAAyB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EAAE,UAAU,EAAE,cAAc,GAAG,cAAc,EAAE,GAAG,MAAM,GAAG,MAAM,EAAE;IAK9H,oBAAoB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,UAAU,EAAE,GAAG,MAAM,GAAG,MAAM,EAAE;IAKnH,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO;IAKxD,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO;CAKnE"}
|
|
@@ -1,23 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
-
}) : function(o, v) {
|
|
12
|
-
o["default"] = v;
|
|
13
|
-
});
|
|
14
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
-
if (mod && mod.__esModule) return mod;
|
|
16
|
-
var result = {};
|
|
17
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
-
__setModuleDefault(result, mod);
|
|
19
|
-
return result;
|
|
20
|
-
};
|
|
21
2
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
22
3
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
23
4
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -32,58 +13,45 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
32
13
|
};
|
|
33
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
34
15
|
const node_php_password_1 = __importDefault(require("node-php-password"));
|
|
35
|
-
const DFWModule_1 =
|
|
36
|
-
const DFWRequestError_1 = require("../types/DFWRequestError");
|
|
16
|
+
const DFWModule_1 = __importDefault(require("./DFWModule"));
|
|
37
17
|
class SecurityManager extends DFWModule_1.default {
|
|
38
18
|
constructor() {
|
|
39
19
|
super(...arguments);
|
|
40
|
-
this.middleware = (req, res,
|
|
41
|
-
req.dfw.security = {
|
|
42
|
-
hasAccessAsync: (access) => {
|
|
43
|
-
return this.checkBindingAsync(req, SecurityManager.RULE_ACCESS, access);
|
|
44
|
-
},
|
|
45
|
-
hasCredentialsAsync: (credentials) => __awaiter(this, void 0, void 0, function* () {
|
|
46
|
-
return this.checkBindingAsync(req, SecurityManager.RULE_CREDENTIAL, credentials);
|
|
47
|
-
})
|
|
48
|
-
};
|
|
49
|
-
next();
|
|
50
|
-
};
|
|
51
|
-
this.APILevelMiddleware = DFWModule_1.MiddlewareAsyncWrapper((req, res, next) => __awaiter(this, void 0, void 0, function* () {
|
|
20
|
+
this.middleware = (req, res) => __awaiter(this, void 0, void 0, function* () {
|
|
52
21
|
let config = req.dfw.__meta.config ? req.dfw.__meta.config : {};
|
|
53
22
|
let bindings = config.security ? SecurityManager.jsonToBindings(config.security) : [];
|
|
54
23
|
for (let binding of bindings) {
|
|
55
|
-
if ((yield this.checkBindingAsync(req, binding[0], binding[1])) === false)
|
|
56
|
-
throw
|
|
57
|
-
}
|
|
24
|
+
if ((yield this.checkBindingAsync(req, binding[0], binding[1])) === false)
|
|
25
|
+
throw SecurityManager.RULE_LABELS[binding[0]], binding[0];
|
|
58
26
|
}
|
|
59
|
-
|
|
60
|
-
})
|
|
27
|
+
req.dfw.SecurityManager = this;
|
|
28
|
+
});
|
|
61
29
|
}
|
|
62
30
|
/**
|
|
63
31
|
* Genera un array de security bindings a partir de un obejto ListenerSecurityConfig
|
|
64
|
-
* @param
|
|
32
|
+
* @param securityObject
|
|
65
33
|
*/
|
|
66
|
-
static jsonToBindings(
|
|
34
|
+
static jsonToBindings(securityObject) {
|
|
67
35
|
let bindings = [];
|
|
68
|
-
if (
|
|
69
|
-
bindings.push([SecurityManager.RULE_LOGGED_SESSION,
|
|
36
|
+
if (securityObject.session !== undefined) {
|
|
37
|
+
bindings.push([SecurityManager.RULE_LOGGED_SESSION, securityObject.session ? true : false]);
|
|
70
38
|
}
|
|
71
|
-
if (
|
|
72
|
-
bindings.push([SecurityManager.RULE_CREDENTIAL,
|
|
39
|
+
if (securityObject.credentials) {
|
|
40
|
+
bindings.push([SecurityManager.RULE_CREDENTIAL, securityObject.credentials]);
|
|
73
41
|
}
|
|
74
|
-
if (
|
|
75
|
-
bindings.push([SecurityManager.RULE_ACCESS,
|
|
42
|
+
if (securityObject.access) {
|
|
43
|
+
bindings.push([SecurityManager.RULE_ACCESS, securityObject.access]);
|
|
76
44
|
}
|
|
77
|
-
if (
|
|
78
|
-
if (
|
|
79
|
-
bindings.push([SecurityManager.RULE_BODY_PARAMS_SETTED,
|
|
45
|
+
if (securityObject.validation) {
|
|
46
|
+
if (securityObject.validation.body) {
|
|
47
|
+
bindings.push([SecurityManager.RULE_BODY_PARAMS_SETTED, securityObject.validation.body]);
|
|
80
48
|
}
|
|
81
|
-
if (
|
|
82
|
-
bindings.push([SecurityManager.RULE_QUERY_PARAMS_SETTED,
|
|
49
|
+
if (securityObject.validation.query) {
|
|
50
|
+
bindings.push([SecurityManager.RULE_QUERY_PARAMS_SETTED, securityObject.validation.query]);
|
|
83
51
|
}
|
|
84
52
|
}
|
|
85
|
-
if (
|
|
86
|
-
for (let binding of
|
|
53
|
+
if (securityObject.bindings) {
|
|
54
|
+
for (let binding of securityObject.bindings) {
|
|
87
55
|
bindings.push(binding);
|
|
88
56
|
}
|
|
89
57
|
}
|
|
@@ -125,10 +93,10 @@ class SecurityManager extends DFWModule_1.default {
|
|
|
125
93
|
return req.dfw.session.isLogged === value; // checks session state
|
|
126
94
|
}
|
|
127
95
|
case SecurityManager.RULE_CREDENTIAL: {
|
|
128
|
-
return yield this.
|
|
96
|
+
return yield this.checkUserCredentialsAsync(req.dfw.session.user, value); // checks credentials array
|
|
129
97
|
}
|
|
130
98
|
case SecurityManager.RULE_ACCESS: {
|
|
131
|
-
return yield this.checkUserAccessAsync(req, value); // checks access array
|
|
99
|
+
return yield this.checkUserAccessAsync(req.dfw.session.user, value); // checks access array
|
|
132
100
|
}
|
|
133
101
|
case SecurityManager.RULE_BODY_PARAMS_SETTED: {
|
|
134
102
|
return this.checkBodyParams(req, value); // Check params array on body
|
|
@@ -142,26 +110,31 @@ class SecurityManager extends DFWModule_1.default {
|
|
|
142
110
|
}
|
|
143
111
|
});
|
|
144
112
|
}
|
|
145
|
-
|
|
113
|
+
createCredentialAsync(name) {
|
|
114
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
115
|
+
return this.db.dfw_credential.create({ data: { name, } });
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
checkUserCredentialsAsync(user, credential) {
|
|
146
119
|
return __awaiter(this, void 0, void 0, function* () {
|
|
147
|
-
if (
|
|
120
|
+
if (!user)
|
|
148
121
|
return false;
|
|
149
|
-
return
|
|
122
|
+
return false;
|
|
150
123
|
});
|
|
151
124
|
}
|
|
152
|
-
checkUserAccessAsync(
|
|
125
|
+
checkUserAccessAsync(user, access) {
|
|
153
126
|
return __awaiter(this, void 0, void 0, function* () {
|
|
154
|
-
if (
|
|
127
|
+
if (!user)
|
|
155
128
|
return false;
|
|
156
|
-
return
|
|
129
|
+
return false;
|
|
157
130
|
});
|
|
158
131
|
}
|
|
159
132
|
checkBodyParams(req, params) {
|
|
160
|
-
let keys = Object.keys(req.body);
|
|
133
|
+
let keys = req.body ? Object.keys(req.body) : [];
|
|
161
134
|
return keys.length >= params.length && params.every(v => keys.includes(v));
|
|
162
135
|
}
|
|
163
136
|
checkQueryParams(req, params) {
|
|
164
|
-
let keys = Object.keys(req.query);
|
|
137
|
+
let keys = req.query ? Object.keys(req.query) : [];
|
|
165
138
|
return keys.length >= params.length && params.every(v => keys.includes(v));
|
|
166
139
|
}
|
|
167
140
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SecurityManager.js","sourceRoot":"","sources":["../../src/manager/SecurityManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Response } from "express";
|
|
2
|
+
import DFWInstance from "../DFWInstance";
|
|
3
|
+
import { DFWRequest } from "../types/DFWRequestScheme";
|
|
4
|
+
import DFWModule from "./DFWModule";
|
|
5
|
+
export default class SessionManager extends DFWModule {
|
|
6
|
+
readonly sessionExpirationDays: number;
|
|
7
|
+
readonly stkFieldName: string;
|
|
8
|
+
readonly sidFieldName: string;
|
|
9
|
+
constructor(DFW: DFWInstance);
|
|
10
|
+
middleware: (req: DFWRequest, res: Response) => Promise<void>;
|
|
11
|
+
/**
|
|
12
|
+
*
|
|
13
|
+
* @param req
|
|
14
|
+
* @param res
|
|
15
|
+
*/
|
|
16
|
+
private regenerateSessionAsync;
|
|
17
|
+
/**
|
|
18
|
+
*
|
|
19
|
+
* @param user
|
|
20
|
+
* @param password
|
|
21
|
+
* @param persist undefined => onli browser session time | number => number in days that sessiopn keeps opened
|
|
22
|
+
*/
|
|
23
|
+
loginAsync(req: DFWRequest, user: string, password: string): Promise<boolean>;
|
|
24
|
+
/**
|
|
25
|
+
*
|
|
26
|
+
* @param req
|
|
27
|
+
* @param res
|
|
28
|
+
*/
|
|
29
|
+
logoutAsync(req: DFWRequest): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* set (or reset) cookies if needed
|
|
32
|
+
* @param req
|
|
33
|
+
* @param res
|
|
34
|
+
*/
|
|
35
|
+
setSessionCookies(req: DFWRequest, res: Response): void;
|
|
36
|
+
/**
|
|
37
|
+
* Destroy all sessions that expires 1 day ago
|
|
38
|
+
*/
|
|
39
|
+
sweepExpiredSessionsAsync(): Promise<void>;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=SessionManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionManager.d.ts","sourceRoot":"","sources":["../../src/manager/SessionManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,WAAW,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,SAAS,MAAM,aAAa,CAAC;AAUpC,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,SAAS;IAEjD,SAAgB,qBAAqB,EAAE,MAAM,CAAC;IAC9C,SAAgB,YAAY,EAAE,MAAM,CAAS;IAC7C,SAAgB,YAAY,EAAE,MAAM,CAAS;gBAEjC,GAAG,EAAE,WAAW;IAKrB,UAAU,QAAe,UAAU,OAAO,QAAQ,mBAsCvD;IAEF;;;;OAIG;YACW,sBAAsB;IAepC;;;;;OAKG;IACU,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA4B1F;;;;OAIG;IACU,WAAW,CAAC,GAAG,EAAE,UAAU;IAoBxC;;;;OAIG;IACI,iBAAiB,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ;IAavD;;OAEG;IACU,yBAAyB;CASzC"}
|