@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.
Files changed (125) hide show
  1. package/lib/DFWInstance.d.ts +21 -0
  2. package/lib/DFWInstance.d.ts.map +1 -0
  3. package/lib/DFWInstance.js +52 -0
  4. package/lib/DFWInstance.js.map +1 -0
  5. package/lib/{script/DFWUtils.d.ts → DFWUtils.d.ts} +3 -4
  6. package/lib/DFWUtils.d.ts.map +1 -0
  7. package/lib/{script/DFWUtils.js → DFWUtils.js} +9 -15
  8. package/lib/DFWUtils.js.map +1 -0
  9. package/lib/index.d.ts +7 -58
  10. package/lib/index.d.ts.map +1 -1
  11. package/lib/index.js +14 -11
  12. package/lib/index.js.map +1 -1
  13. package/lib/manager/APIManager.d.ts +48 -0
  14. package/lib/manager/APIManager.d.ts.map +1 -0
  15. package/lib/manager/APIManager.js +210 -0
  16. package/lib/manager/APIManager.js.map +1 -0
  17. package/lib/manager/DFWModule.d.ts +10 -0
  18. package/lib/manager/DFWModule.d.ts.map +1 -0
  19. package/lib/manager/DFWModule.js +10 -0
  20. package/lib/manager/DFWModule.js.map +1 -0
  21. package/lib/manager/DatabaseManager.d.ts +9 -0
  22. package/lib/manager/DatabaseManager.d.ts.map +1 -0
  23. package/lib/manager/DatabaseManager.js +25 -0
  24. package/lib/manager/DatabaseManager.js.map +1 -0
  25. package/lib/manager/FileManager.d.ts +64 -0
  26. package/lib/manager/FileManager.d.ts.map +1 -0
  27. package/lib/manager/FileManager.js +206 -0
  28. package/lib/manager/FileManager.js.map +1 -0
  29. package/lib/{module → manager}/SecurityManager.d.ts +13 -13
  30. package/lib/manager/SecurityManager.d.ts.map +1 -0
  31. package/lib/{module → manager}/SecurityManager.js +36 -63
  32. package/lib/manager/SecurityManager.js.map +1 -0
  33. package/lib/manager/SessionManager.d.ts +41 -0
  34. package/lib/manager/SessionManager.d.ts.map +1 -0
  35. package/lib/manager/SessionManager.js +173 -0
  36. package/lib/manager/SessionManager.js.map +1 -0
  37. package/lib/manager/UserManager.d.ts +15 -0
  38. package/lib/manager/UserManager.d.ts.map +1 -0
  39. package/lib/manager/UserManager.js +101 -0
  40. package/lib/manager/UserManager.js.map +1 -0
  41. package/lib/test.js +25 -75
  42. package/lib/test.js.map +1 -1
  43. package/lib/types/APIListenerConfig.d.ts +46 -0
  44. package/lib/types/APIListenerConfig.d.ts.map +1 -0
  45. package/lib/types/{DFWAPIListenerConfig.js → APIListenerConfig.js} +1 -1
  46. package/lib/types/APIListenerConfig.js.map +1 -0
  47. package/lib/types/DFWBoot.d.ts +19 -0
  48. package/lib/types/DFWBoot.d.ts.map +1 -0
  49. package/lib/types/DFWBoot.js +3 -0
  50. package/lib/types/DFWBoot.js.map +1 -0
  51. package/lib/types/DFWConfig.d.ts +7 -21
  52. package/lib/types/DFWConfig.d.ts.map +1 -1
  53. package/lib/types/DFWRequestScheme.d.ts +36 -0
  54. package/lib/types/DFWRequestScheme.d.ts.map +1 -0
  55. package/lib/types/DFWRequestScheme.js +3 -0
  56. package/lib/types/DFWRequestScheme.js.map +1 -0
  57. package/package.json +31 -43
  58. package/prisma/schema.prisma +117 -0
  59. package/lib/model/dfw_access.d.ts +0 -11
  60. package/lib/model/dfw_access.d.ts.map +0 -1
  61. package/lib/model/dfw_access.js +0 -58
  62. package/lib/model/dfw_access.js.map +0 -1
  63. package/lib/model/dfw_access_credential.d.ts +0 -6
  64. package/lib/model/dfw_access_credential.d.ts.map +0 -1
  65. package/lib/model/dfw_access_credential.js +0 -41
  66. package/lib/model/dfw_access_credential.js.map +0 -1
  67. package/lib/model/dfw_credential.d.ts +0 -12
  68. package/lib/model/dfw_credential.d.ts.map +0 -1
  69. package/lib/model/dfw_credential.js +0 -100
  70. package/lib/model/dfw_credential.js.map +0 -1
  71. package/lib/model/dfw_file.d.ts +0 -23
  72. package/lib/model/dfw_file.d.ts.map +0 -1
  73. package/lib/model/dfw_file.js +0 -121
  74. package/lib/model/dfw_file.js.map +0 -1
  75. package/lib/model/dfw_session.d.ts +0 -15
  76. package/lib/model/dfw_session.d.ts.map +0 -1
  77. package/lib/model/dfw_session.js +0 -69
  78. package/lib/model/dfw_session.js.map +0 -1
  79. package/lib/model/dfw_user.d.ts +0 -31
  80. package/lib/model/dfw_user.d.ts.map +0 -1
  81. package/lib/model/dfw_user.js +0 -211
  82. package/lib/model/dfw_user.js.map +0 -1
  83. package/lib/model/dfw_users_credential.d.ts +0 -6
  84. package/lib/model/dfw_users_credential.d.ts.map +0 -1
  85. package/lib/model/dfw_users_credential.js +0 -41
  86. package/lib/model/dfw_users_credential.js.map +0 -1
  87. package/lib/module/APIManager.d.ts +0 -86
  88. package/lib/module/APIManager.d.ts.map +0 -1
  89. package/lib/module/APIManager.js +0 -267
  90. package/lib/module/APIManager.js.map +0 -1
  91. package/lib/module/DatabaseManager.d.ts +0 -22
  92. package/lib/module/DatabaseManager.d.ts.map +0 -1
  93. package/lib/module/DatabaseManager.js +0 -58
  94. package/lib/module/DatabaseManager.js.map +0 -1
  95. package/lib/module/FileManager.d.ts +0 -196
  96. package/lib/module/FileManager.d.ts.map +0 -1
  97. package/lib/module/FileManager.js +0 -433
  98. package/lib/module/FileManager.js.map +0 -1
  99. package/lib/module/SecurityManager.d.ts.map +0 -1
  100. package/lib/module/SecurityManager.js.map +0 -1
  101. package/lib/module/SessionManager.d.ts +0 -49
  102. package/lib/module/SessionManager.d.ts.map +0 -1
  103. package/lib/module/SessionManager.js +0 -220
  104. package/lib/module/SessionManager.js.map +0 -1
  105. package/lib/module/UserManager.d.ts +0 -16
  106. package/lib/module/UserManager.d.ts.map +0 -1
  107. package/lib/module/UserManager.js +0 -74
  108. package/lib/module/UserManager.js.map +0 -1
  109. package/lib/script/DFWInstance.d.ts +0 -38
  110. package/lib/script/DFWInstance.d.ts.map +0 -1
  111. package/lib/script/DFWInstance.js +0 -65
  112. package/lib/script/DFWInstance.js.map +0 -1
  113. package/lib/script/DFWModule.d.ts +0 -10
  114. package/lib/script/DFWModule.d.ts.map +0 -1
  115. package/lib/script/DFWModule.js +0 -12
  116. package/lib/script/DFWModule.js.map +0 -1
  117. package/lib/script/DFWUtils.d.ts.map +0 -1
  118. package/lib/script/DFWUtils.js.map +0 -1
  119. package/lib/types/DFWAPIListenerConfig.d.ts +0 -39
  120. package/lib/types/DFWAPIListenerConfig.d.ts.map +0 -1
  121. package/lib/types/DFWAPIListenerConfig.js.map +0 -1
  122. package/lib/types/DFWRequestError.d.ts +0 -9
  123. package/lib/types/DFWRequestError.d.ts.map +0 -1
  124. package/lib/types/DFWRequestError.js +0 -15
  125. 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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAAiC;AAGjC,4DAAoC;AACpC,wDAA+B;AAI/B,uCAAyB;AACzB,2CAA6B;AAC7B,2DAAmC;AAGnC,iCAAiC;AAEjC,MAAM,eAAe,GAAG,IAAA,gBAAS,EAAC,EAAE,CAAC,MAAM,CAAC,CAAC;AAC7C,MAAM,eAAe,GAAG,IAAA,gBAAS,EAAC,EAAE,CAAC,MAAM,CAAC,CAAC;AAC7C,MAAM,WAAW,GAAG,IAAA,gBAAS,EAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AACxC,MAAM,eAAe,GAAG,IAAA,gBAAS,EAAC,EAAE,CAAC,OAAO,CAAC,CAAC;AAC9C,MAAM,QAAQ,GAAG,IAAA,gBAAS,EAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACpC,MAAM,UAAU,GAAG,IAAA,gBAAS,EAAC,EAAE,CAAC,MAAM,CAAC,CAAC;AACxC,MAAM,QAAQ,GAAG,IAAA,gBAAS,EAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AA8BxC,MAAM,gCAAgC,GAAG,gBAAgB,CAAC;AAC1D,MAAM,uBAAuB,GAAG,oBAAoB,CAAC;AACrD,MAAM,0BAA0B,GAAG,uBAAuB,CAAC;AAE3D,MAAqB,WAAY,SAAQ,mBAAS;IAK9C,YAAY,GAAgB;QACxB,KAAK,CAAC,GAAG,CAAC,CAAC;QAHN,0BAAqB,GAAG,gCAAgC,CAAC;QA+B3D,eAAU,GAAG,CAAO,GAAe,EAAE,GAAa,EAAE,EAAE;YACzD,GAAG,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC;QAE/B,CAAC,CAAA,CAAA;QA7BG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;YAChD,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;SAC3C;aAAM;YACH,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;SAC7B;QAED,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAC5B,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC7B;aAAM;YACH,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC7B;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAE1E,4BAA4B;QAC5B,qHAAqH;QAErH,mCAAmC;QACnC;;;;UAIE;IACN,CAAC;IAOD;;OAEG;IACU,oBAAoB,CAAC,QAAgB,EAAE,GAAe,EAAE,gBAAyB,KAAK;;YAE/F,IAAI,CAAA,MAAM,eAAe,CAAC,QAAQ,CAAC,KAAI,KAAK,EAAE;gBAC1C,MAAM,0DAA0D,QAAQ,EAAE,CAAC;aAC9E;YAED,IAAI,QAAQ,GAAG,MAAM,IAAA,kBAAO,EAAC,QAAQ,CAAC,CAAC;YACvC,IAAI,KAAK,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACrC,IAAI,QAAQ,GAAG,kBAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAClD,IAAI,QAAQ,GAAG,GAAG,kBAAQ,CAAC,IAAI,EAAE,IAAI,kBAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/E,IAAI,WAAW,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,uBAAuB,IAAI,gBAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAA;YACjI,IAAI,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;YACpD,IAAI,aAAa,GAAG,GAAG,WAAW,IAAI,QAAQ,EAAE,CAAC;YACjD,IAAI,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;YAClC,IAAI,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;YAC1B,IAAI,QAAQ,GAAG,OAAO,GAAG,CAAC,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;YAG1E,IAAI,CAAA,MAAM,eAAe,CAAC,WAAW,CAAC,KAAI,KAAK,EAAE;gBAC7C,MAAM,WAAW,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;aACvD;YAED,IAAI,aAAa,EAAE;gBACf,MAAM,eAAe,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;oBACvD,MAAM,IAAI,KAAK,CAAC,mEAAmE,GAAG,CAAC,CAAC,CAAC;gBAC7F,CAAC,CAAC,CAAA;aACL;iBAAM;gBACH,MAAM,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;oBAChD,MAAM,IAAI,KAAK,CAAC,mEAAmE,GAAG,CAAC,CAAC,CAAC;gBAC7F,CAAC,CAAC,CAAC;aACN;YAED,OAAO,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,GAAS,EAAE;gBACnC,kDAAkD;gBAClD,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE;oBAC3B,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;wBACtC,KAAK,EAAE;4BACH,QAAQ;4BACR,OAAO;yBACV;qBACJ,CAAC,CAAC;oBACH,KAAK,IAAI,EAAE,IAAI,GAAG,EAAE;wBAAE,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;qBAAE;iBAC1D;gBAED,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;oBAC3B,IAAI,EAAE;wBACF,QAAQ;wBACR,QAAQ;wBACR,QAAQ;wBACR,MAAM;wBACN,OAAO;wBACP,WAAW;wBACX,IAAI,EAAE,aAAa;wBACnB,MAAM,EAAE,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI;wBACvF,IAAI,EAAE,GAAG,CAAC,IAAI;wBACd,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;qBACrC;iBACJ,CAAC,CAAC;YACP,CAAC,CAAA,CAAC,CAAA;QACN,CAAC;KAAA;IAED;;;;OAIG;IACU,WAAW,CAAC,IAAkB,EAAE,GAAe;;YACxD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC5D,CAAC;KAAA;IAEM,oBAAoB,CAAC,MAAe;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,kBAAQ,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACrF,CAAC;IAED;;;OAGG;IACU,gBAAgB,CAAC,IAAuB;;QAErD,CAAC;KAAA;IAED;;OAEG;IACU,eAAe,CAAC,IAAuB;;YAChD,IAAI,IAAW,CAAC;YAChB,IAAI,MAAM,GAAG,OAAO,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACtD,IAAI,OAAO,GAAG,OAAO,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;YAEpI,IAAG,OAAO,EAAC;gBACP,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;aACvB;iBAAI;gBACD,MAAM,qBAAqB,CAAA;aAC9B;YAED,IAAI,aAAa,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAChD,KAAK,EAAE;oBACH,QAAQ,EAAE,MAAM;iBACnB;aACJ,CAAC,CAAC;YAEH,KAAK,IAAI,EAAE,IAAI,aAAa,EAAE;gBAC1B,IAAI,EAAE;oBAAE,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,4BAA4B;aACvE;YAED,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBACrB,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;oBAC7B,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;wBACpB,KAAK,EAAE;4BACH,EAAE,EAAE,MAAM;yBACb;qBACJ,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,MAAM,yBAAyB,MAAM,EAAE,CAAA,CAAC,CAAC,CAAC,CAAC;aAC/D;QAEL,CAAC;KAAA;IAGD;;OAEG;IACU,sBAAsB;;QAEnC,CAAC;KAAA;CAEJ;AAxKD,8BAwKC"}
@@ -1,8 +1,8 @@
1
- import { NextFunction, Request, Response } from "express";
2
- import dfw_credential from "../model/dfw_credential";
3
- import dfw_access from "../model/dfw_access";
4
- import DFWModule from "../script/DFWModule";
5
- import { ListenerSecurityConfig } from "../types/DFWAPIListenerConfig";
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: Request, res: Response, next: NextFunction) => void;
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 secConfig
26
+ * @param securityObject
28
27
  */
29
- static jsonToBindings(secConfig: ListenerSecurityConfig): [number, any][];
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: Request, bindings: [number, any][]): Promise<boolean>;
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: Request, type: number, value: any | any[]): Promise<boolean>;
45
- checkUserCredentialAsync(req: Request, credential: dfw_credential | dfw_credential[] | string | string[]): Promise<boolean>;
46
- checkUserAccessAsync(req: Request, access: dfw_access | dfw_access[] | string | string[]): Promise<boolean>;
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 = __importStar(require("../script/DFWModule"));
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, next) => {
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 new DFWRequestError_1.DFWRequestError(DFWRequestError_1.DFWRequestError.CODE_API_ACCESS_ERROR, SecurityManager.RULE_LABELS[binding[0]], binding[0]);
57
- }
24
+ if ((yield this.checkBindingAsync(req, binding[0], binding[1])) === false)
25
+ throw SecurityManager.RULE_LABELS[binding[0]], binding[0];
58
26
  }
59
- next();
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 secConfig
32
+ * @param securityObject
65
33
  */
66
- static jsonToBindings(secConfig) {
34
+ static jsonToBindings(securityObject) {
67
35
  let bindings = [];
68
- if (secConfig.session !== undefined) {
69
- bindings.push([SecurityManager.RULE_LOGGED_SESSION, secConfig.session ? true : false]);
36
+ if (securityObject.session !== undefined) {
37
+ bindings.push([SecurityManager.RULE_LOGGED_SESSION, securityObject.session ? true : false]);
70
38
  }
71
- if (secConfig.credentials) {
72
- bindings.push([SecurityManager.RULE_CREDENTIAL, secConfig.credentials]);
39
+ if (securityObject.credentials) {
40
+ bindings.push([SecurityManager.RULE_CREDENTIAL, securityObject.credentials]);
73
41
  }
74
- if (secConfig.access) {
75
- bindings.push([SecurityManager.RULE_ACCESS, secConfig.access]);
42
+ if (securityObject.access) {
43
+ bindings.push([SecurityManager.RULE_ACCESS, securityObject.access]);
76
44
  }
77
- if (secConfig.validation) {
78
- if (secConfig.validation.body) {
79
- bindings.push([SecurityManager.RULE_BODY_PARAMS_SETTED, secConfig.validation.body]);
45
+ if (securityObject.validation) {
46
+ if (securityObject.validation.body) {
47
+ bindings.push([SecurityManager.RULE_BODY_PARAMS_SETTED, securityObject.validation.body]);
80
48
  }
81
- if (secConfig.validation.query) {
82
- bindings.push([SecurityManager.RULE_QUERY_PARAMS_SETTED, secConfig.validation.query]);
49
+ if (securityObject.validation.query) {
50
+ bindings.push([SecurityManager.RULE_QUERY_PARAMS_SETTED, securityObject.validation.query]);
83
51
  }
84
52
  }
85
- if (secConfig.bindings) {
86
- for (let binding of secConfig.bindings) {
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.checkUserCredentialAsync(req, value); // checks credentials array
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
- checkUserCredentialAsync(req, credential) {
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 (req.dfw.session.isLogged === false || req.dfw.session.record.user === null)
120
+ if (!user)
148
121
  return false;
149
- return yield req.dfw.session.record.user.checkCredentialAsync(credential);
122
+ return false;
150
123
  });
151
124
  }
152
- checkUserAccessAsync(req, access) {
125
+ checkUserAccessAsync(user, access) {
153
126
  return __awaiter(this, void 0, void 0, function* () {
154
- if (req.dfw.session.isLogged === false || req.dfw.session.record.user === null)
127
+ if (!user)
155
128
  return false;
156
- return yield req.dfw.session.record.user.checkAccessAsync(access);
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":";;;;;;;;;;;;;;AACA,0EAAyC;AAGzC,4DAAoC;AAQpC,MAAqB,eAAgB,SAAQ,mBAAS;IAAtD;;QAgBW,eAAU,GAAG,CAAO,GAAe,EAAE,GAAa,EAAE,EAAE;YACzD,IAAI,MAAM,GAAsB,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACnF,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAEtF,KAAK,IAAI,OAAO,IAAI,QAAQ,EAAE;gBAC1B,IAAI,CAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAK,KAAK;oBAAE,MAAM,eAAe,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;aACtI;YAED,GAAG,CAAC,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC;QACnC,CAAC,CAAA,CAAA;IAyHL,CAAC;IAvHG;;;OAGG;IACI,MAAM,CAAC,cAAc,CAAC,cAAsC;QAC/D,IAAI,QAAQ,GAAoB,EAAE,CAAC;QAEnC,IAAI,cAAc,CAAC,OAAO,KAAK,SAAS,EAAE;YACtC,QAAQ,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,mBAAmB,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;SAC/F;QAED,IAAI,cAAc,CAAC,WAAW,EAAE;YAC5B,QAAQ,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,eAAe,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC;SAChF;QAED,IAAI,cAAc,CAAC,MAAM,EAAE;YACvB,QAAQ,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,WAAW,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;SACvE;QAED,IAAI,cAAc,CAAC,UAAU,EAAE;YAC3B,IAAI,cAAc,CAAC,UAAU,CAAC,IAAI,EAAE;gBAChC,QAAQ,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,uBAAuB,EAAE,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;aAC5F;YACD,IAAI,cAAc,CAAC,UAAU,CAAC,KAAK,EAAE;gBACjC,QAAQ,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,wBAAwB,EAAE,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;aAC9F;SACJ;QAED,IAAI,cAAc,CAAC,QAAQ,EAAE;YACzB,KAAK,IAAI,OAAO,IAAI,cAAc,CAAC,QAAQ,EAAE;gBACzC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC1B;SACJ;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAAA,CAAC;IAEK,MAAM,CAAC,cAAc,CAAC,OAAe,EAAE,IAAY;QACtD,OAAO,2BAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAEM,MAAM,CAAC,eAAe,CAAC,QAAgB;QAC1C,OAAO,2BAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACU,sBAAsB,CAAC,GAAe,EAAE,QAAyB;;YAC1E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACtC,IAAI,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAK,KAAK,EAAE;oBACrE,OAAO,KAAK,CAAC;iBAChB;aACJ;YAED,OAAO,IAAI,CAAC;QAChB,CAAC;KAAA;IAED;;;;;OAKG;IACU,iBAAiB,CAAC,GAAe,EAAE,IAAY,EAAE,KAAkB;;YAC5E,QAAQ,IAAI,EAAE;gBACV,KAAK,eAAe,CAAC,mBAAmB,CAAC,CAAC;oBACtC,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAc,uBAAuB;iBAClF;gBAED,KAAK,eAAe,CAAC,eAAe,CAAC,CAAC;oBAClC,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAE,2BAA2B;iBACzG;gBAED,KAAK,eAAe,CAAC,WAAW,CAAC,CAAC;oBAC9B,OAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAM,sBAAsB;iBACnG;gBAED,KAAK,eAAe,CAAC,uBAAuB,CAAC,CAAC;oBAC1C,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAiB,6BAA6B;iBACzF;gBAED,KAAK,eAAe,CAAC,wBAAwB,CAAC,CAAC;oBAC3C,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAiB,6BAA6B;iBAC1F;gBAED,OAAO,CAAC,CAAC;oBACL,OAAO,KAAK,CAAC,CAAC,mCAAmC;iBACpD;aACJ;QACL,CAAC;KAAA;IAEY,qBAAqB,CAAC,IAAY;;YAC3C,OAAO,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAC9D,CAAC;KAAA;IAEY,yBAAyB,CAAC,IAAiC,EAAE,UAAiE;;YACvI,IAAI,CAAC,IAAI;gBAAE,OAAO,KAAK,CAAC;YACxB,OAAO,KAAK,CAAC;QACjB,CAAC;KAAA;IAEY,oBAAoB,CAAC,IAAiC,EAAE,MAAqD;;YACtH,IAAI,CAAC,IAAI;gBAAE,OAAO,KAAK,CAAC;YACxB,OAAO,KAAK,CAAA;QAChB,CAAC;KAAA;IAEM,eAAe,CAAC,GAAY,EAAE,MAAgB;QACjD,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9E,CAAC;IAEM,gBAAgB,CAAC,GAAY,EAAE,MAAgB;QAClD,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,OAAO,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,CAAC;;AAhJL,kCAkJC;AAhJmB,mCAAmB,GAAG,CAAC,CAAC;AACxB,2BAAW,GAAG,CAAC,CAAC;AAChB,+BAAe,GAAG,CAAC,CAAC;AACpB,uCAAuB,GAAG,CAAC,CAAC;AAC5B,wCAAwB,GAAG,CAAC,CAAC;AAE7B,2BAAW,GAAG;IAC1B,CAAC,eAAe,CAAC,mBAAmB,CAAC,EAAE,uCAAuC;IAC9E,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,kDAAkD;IACjF,CAAC,eAAe,CAAC,eAAe,CAAC,EAAE,uDAAuD;IAC1F,CAAC,eAAe,CAAC,uBAAuB,CAAC,EAAE,+BAA+B;IAC1E,CAAC,eAAe,CAAC,wBAAwB,CAAC,EAAE,gCAAgC;CAC/E,CAAA"}
@@ -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"}