@social-mail/social-mail-web-server 1.7.455 → 1.7.456

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.
@@ -1,6 +1,7 @@
1
1
  import AppFile from "../../model/entities/AppFile.js";
2
2
  export default class AtomicFolderService {
3
3
  private db;
4
+ private fas;
4
5
  create(parentID: number, name: string): Promise<AppFile>;
5
6
  }
6
7
  //# sourceMappingURL=AtomicFolderService.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AtomicFolderService.d.ts","sourceRoot":"","sources":["../../../../src/server/services/files/AtomicFolderService.ts"],"names":[],"mappings":"AAIA,OAAO,OAAO,MAAM,iCAAiC,CAAC;AAItD,MAAM,CAAC,OAAO,OAAO,mBAAmB;IAGpC,OAAO,CAAC,EAAE,CAAoB;IAExB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAgC9C"}
1
+ {"version":3,"file":"AtomicFolderService.d.ts","sourceRoot":"","sources":["../../../../src/server/services/files/AtomicFolderService.ts"],"names":[],"mappings":"AAIA,OAAO,OAAO,MAAM,iCAAiC,CAAC;AAMtD,MAAM,CAAC,OAAO,OAAO,mBAAmB;IAGpC,OAAO,CAAC,EAAE,CAAoB;IAG9B,OAAO,CAAC,GAAG,CAAoB;IAEzB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CA0C9C"}
@@ -11,10 +11,19 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  import Inject, { RegisterTransient } from "@entity-access/entity-access/dist/di/di.js";
12
12
  import SocialMailContext from "../../model/SocialMailContext.js";
13
13
  import DateTime from "@entity-access/entity-access/dist/types/DateTime.js";
14
+ import FileAccessService from "./FileAccessService.js";
14
15
  let AtomicFolderService = class AtomicFolderService {
15
16
  async create(parentID, name) {
16
17
  const dateCreated = DateTime.now;
17
18
  const dateUpdated = dateCreated;
19
+ // check access.
20
+ // check write access...
21
+ const existing = await this.fas.getFile({ parentID, name }, "read");
22
+ if (existing) {
23
+ return existing;
24
+ }
25
+ // since it doesn't exist, we should verify if folder is writable
26
+ await this.fas.getFile({ fileID: parentID }, "modify");
18
27
  const folder = await this.db.appFiles.statements.selectOrInsert({
19
28
  parentID,
20
29
  name,
@@ -44,6 +53,10 @@ __decorate([
44
53
  Inject,
45
54
  __metadata("design:type", SocialMailContext)
46
55
  ], AtomicFolderService.prototype, "db", void 0);
56
+ __decorate([
57
+ Inject,
58
+ __metadata("design:type", FileAccessService)
59
+ ], AtomicFolderService.prototype, "fas", void 0);
47
60
  AtomicFolderService = __decorate([
48
61
  RegisterTransient
49
62
  ], AtomicFolderService);
@@ -1 +1 @@
1
- {"version":3,"file":"AtomicFolderService.js","sourceRoot":"","sources":["../../../../src/server/services/files/AtomicFolderService.ts"],"names":[],"mappings":";;;;;;;;;AAAA,+BAA+B;AAC/B,OAAO,MAAM,EAAE,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,iBAAiB,MAAM,kCAAkC,CAAC;AAGjE,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAG5D,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAKpC,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,IAAY;QACvC,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC;QACjC,MAAM,WAAW,GAAG,WAAW,CAAC;QAEhC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC;YACxD,QAAQ;YACR,IAAI;YACJ,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,CAAC;YACX,WAAW,EAAE,QAAQ;YACrB,WAAW;YACX,WAAW;SAClB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QAE1B,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YAC7B,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;YACzB,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,SAAS,EAAG,KAAK,EAAC,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAC,CAAC,CAAC;QACnG,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;YAC5G,MAAM,CAAC,IAAI,GAAG,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,SAAS,GAAG,CAAC;YACnD,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC;gBACrC,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,IAAI,EAAE,MAAM,CAAC,IAAI;aACpB,CAAC,CAAC;QACP,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;CAEJ,CAAA;AAlCW;IADP,MAAM;8BACK,iBAAiB;+CAAC;AAHb,mBAAmB;IADvC,iBAAiB;GACG,mBAAmB,CAqCvC;eArCoB,mBAAmB"}
1
+ {"version":3,"file":"AtomicFolderService.js","sourceRoot":"","sources":["../../../../src/server/services/files/AtomicFolderService.ts"],"names":[],"mappings":";;;;;;;;;AAAA,+BAA+B;AAC/B,OAAO,MAAM,EAAE,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,iBAAiB,MAAM,kCAAkC,CAAC;AAGjE,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAE3E,OAAO,iBAAiB,MAAM,wBAAwB,CAAC;AAGxC,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAQpC,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,IAAY;QACvC,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC;QACjC,MAAM,WAAW,GAAG,WAAW,CAAC;QAEhC,gBAAgB;QAChB,wBAAwB;QACxB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;QACpE,IAAI,QAAQ,EAAE,CAAC;YACX,OAAO,QAAQ,CAAC;QACpB,CAAC;QAED,iEAAiE;QACjE,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC;QAEvD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC;YACxD,QAAQ;YACR,IAAI;YACJ,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,CAAC;YACX,WAAW,EAAE,QAAQ;YACrB,WAAW;YACX,WAAW;SAClB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QAE1B,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YAC7B,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;YACzB,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,SAAS,EAAG,KAAK,EAAC,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAC,CAAC,CAAC;QACnG,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;YAC5G,MAAM,CAAC,IAAI,GAAG,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,SAAS,GAAG,CAAC;YACnD,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC;gBACrC,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,IAAI,EAAE,MAAM,CAAC,IAAI;aACpB,CAAC,CAAC;QACP,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;CAEJ,CAAA;AA/CW;IADP,MAAM;8BACK,iBAAiB;+CAAC;AAGtB;IADP,MAAM;8BACM,iBAAiB;gDAAC;AANd,mBAAmB;IADvC,iBAAiB;GACG,mBAAmB,CAkDvC;eAlDoB,mBAAmB"}
@@ -1,15 +1,12 @@
1
- import { ExternalUser } from "../../model/entities/AppFile.js";
2
- import { ICacheContainer, ObjectCache } from "../../../common/cacheFor.js";
3
- export default class FileAccessService implements ICacheContainer<FileAccessService> {
4
- cache: ObjectCache<FileAccessService>;
5
- getWriteList(userID: number): Promise<{
6
- type: "create" | "read" | "write" | "delegate";
7
- path: string;
8
- }[]>;
9
- getList(userID: number): Promise<{
10
- type: "create" | "read" | "write" | "delegate";
11
- path: string;
12
- }[]>;
1
+ import AppFile, { ExternalUser } from "../../model/entities/AppFile.js";
2
+ import SocialMailContext from "../../model/SocialMailContext.js";
3
+ export default class FileAccessService {
4
+ db: SocialMailContext;
5
+ getFile({ fileID, parentID, name }: {
6
+ fileID?: number;
7
+ parentID?: any;
8
+ name?: any;
9
+ }, mode: "read" | "modify"): Promise<AppFile>;
13
10
  createExternalUser(externalUser: ExternalUser): Promise<number>;
14
11
  }
15
12
  //# sourceMappingURL=FileAccessService.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileAccessService.d.ts","sourceRoot":"","sources":["../../../../src/server/services/files/FileAccessService.ts"],"names":[],"mappings":"AAEA,OAAgB,EAAiB,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAGvF,OAAO,EAAC,eAAe,EAAE,WAAW,EAAY,MAAM,6BAA6B,CAAC;AAOpF,MAAM,CAAC,OAAO,OAAO,iBAAkB,YAAW,eAAe,CAAC,iBAAiB,CAAC;IAEhF,KAAK,EAAE,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAEzB,YAAY,CAAC,MAAM,EAAE,MAAM;;;;IAM3B,OAAO,CAAC,MAAM,EAAE,MAAM;;;;IAsBtB,kBAAkB,CAAC,YAAY,EAAE,YAAY;CA2C7D"}
1
+ {"version":3,"file":"FileAccessService.d.ts","sourceRoot":"","sources":["../../../../src/server/services/files/FileAccessService.ts"],"names":[],"mappings":"AAEA,OAAO,OAAO,EAAE,EAAiB,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAEvF,OAAO,iBAAiB,MAAM,kCAAkC,CAAC;AAQjE,MAAM,CAAC,OAAO,OAAO,iBAAiB;IAGlC,EAAE,EAAE,iBAAiB,CAAC;IAET,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAC;QAAC,IAAI,CAAC,MAAA;KAAG,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ;IAuBpG,kBAAkB,CAAC,YAAY,EAAE,YAAY;CA2C7D"}
@@ -7,37 +7,34 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
- import { RegisterSingleton } from "@entity-access/entity-access/dist/di/di.js";
10
+ import Inject, { RegisterScoped } from "@entity-access/entity-access/dist/di/di.js";
11
11
  import { globalServices } from "../../../globalServices.js";
12
12
  import SocialMailContext from "../../model/SocialMailContext.js";
13
- import { cacheFor } from "../../../common/cacheFor.js";
14
13
  import DateTime from "@entity-access/entity-access/dist/types/DateTime.js";
15
14
  import CryptoService from "../CryptoService.js";
16
15
  import { randomUUID } from "crypto";
17
16
  import EntityAccessError from "@entity-access/entity-access/dist/common/EntityAccessError.js";
18
17
  let FileAccessService = class FileAccessService {
19
- async getWriteList(userID) {
20
- const list = await this.getList(userID);
21
- return list.filter((x) => x.type === "write");
22
- }
23
- async getList(userID) {
24
- const scope = globalServices.createScope();
25
- try {
26
- const db = scope.resolve(SocialMailContext);
27
- db.raiseEvents = false;
28
- db.verifyFilters = false;
29
- const list = await db.fileAccessList
30
- .where({ userID }, (p) => (x) => x.userID === p.userID)
31
- .include((x) => x.file)
32
- .toArray();
33
- return list.map((x) => ({
34
- type: x.type,
35
- path: x.file.path
36
- }));
18
+ async getFile({ fileID, parentID, name }, mode) {
19
+ if (fileID) {
20
+ const appFile = await this.db.appFiles.filtered(mode)
21
+ .where({ fileID }, (p) => (x) => x.appFileID === p.fileID)
22
+ .first();
23
+ if (!appFile) {
24
+ throw new EntityAccessError(`Cannot access file/folder ${fileID} for ${mode} access`);
25
+ }
26
+ return appFile;
27
+ }
28
+ if (!parentID) {
29
+ throw new EntityAccessError(`Invalid access`);
37
30
  }
38
- finally {
39
- scope.dispose();
31
+ const childFile = await this.db.appFiles.filtered(mode)
32
+ .where({ parentID, name }, (p) => (x) => x.parentID === p.parentID && x.name === p.name)
33
+ .first();
34
+ if (!childFile) {
35
+ throw new EntityAccessError(`Cannot access file/folder ${name} in ${parentID} for ${mode} access`);
40
36
  }
37
+ return childFile;
41
38
  }
42
39
  async createExternalUser(externalUser) {
43
40
  let tries = 3;
@@ -84,13 +81,11 @@ let FileAccessService = class FileAccessService {
84
81
  }
85
82
  };
86
83
  __decorate([
87
- cacheFor(),
88
- __metadata("design:type", Function),
89
- __metadata("design:paramtypes", [Number]),
90
- __metadata("design:returntype", Promise)
91
- ], FileAccessService.prototype, "getList", null);
84
+ Inject,
85
+ __metadata("design:type", SocialMailContext)
86
+ ], FileAccessService.prototype, "db", void 0);
92
87
  FileAccessService = __decorate([
93
- RegisterSingleton
88
+ RegisterScoped
94
89
  ], FileAccessService);
95
90
  export default FileAccessService;
96
91
  //# sourceMappingURL=FileAccessService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileAccessService.js","sourceRoot":"","sources":["../../../../src/server/services/files/FileAccessService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FileAccessService.js","sourceRoot":"","sources":["../../../../src/server/services/files/FileAccessService.ts"],"names":[],"mappings":"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"}