@sync-in/server 1.11.0 → 2.0.0

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 (1040) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/LICENSE +1 -1
  3. package/README.md +3 -11
  4. package/environment/environment.dist.min.yaml +1 -1
  5. package/environment/environment.dist.yaml +173 -28
  6. package/package.json +17 -16
  7. package/server/app.bootstrap.js +1 -5
  8. package/server/app.bootstrap.js.map +1 -1
  9. package/server/app.constants.js +1 -5
  10. package/server/app.constants.js.map +1 -1
  11. package/server/app.e2e-spec.js +1 -5
  12. package/server/app.e2e-spec.js.map +1 -1
  13. package/server/app.functions.js +1 -5
  14. package/server/app.functions.js.map +1 -1
  15. package/server/app.module.js +1 -5
  16. package/server/app.module.js.map +1 -1
  17. package/server/app.service.js +1 -5
  18. package/server/app.service.js.map +1 -1
  19. package/server/app.service.spec.js +2 -6
  20. package/server/app.service.spec.js.map +1 -1
  21. package/server/applications/admin/admin.module.js +1 -5
  22. package/server/applications/admin/admin.module.js.map +1 -1
  23. package/server/applications/admin/constants/routes.js +1 -5
  24. package/server/applications/admin/constants/routes.js.map +1 -1
  25. package/server/applications/admin/interfaces/check-update.interfaces.js +1 -5
  26. package/server/applications/admin/interfaces/check-update.interfaces.js.map +1 -1
  27. package/server/applications/admin/services/admin-scheduler.service.js +1 -5
  28. package/server/applications/admin/services/admin-scheduler.service.js.map +1 -1
  29. package/server/applications/admin/services/admin.service.js +13 -8
  30. package/server/applications/admin/services/admin.service.js.map +1 -1
  31. package/server/applications/admin/services/admin.service.spec.js +1 -5
  32. package/server/applications/admin/services/admin.service.spec.js.map +1 -1
  33. package/server/applications/admin/utils/check-update.js +1 -5
  34. package/server/applications/admin/utils/check-update.js.map +1 -1
  35. package/server/applications/applications.config.js +1 -5
  36. package/server/applications/applications.config.js.map +1 -1
  37. package/server/applications/applications.constants.js +5 -5
  38. package/server/applications/applications.constants.js.map +1 -1
  39. package/server/applications/applications.module.js +1 -5
  40. package/server/applications/applications.module.js.map +1 -1
  41. package/server/applications/comments/comments.controller.js +1 -5
  42. package/server/applications/comments/comments.controller.js.map +1 -1
  43. package/server/applications/comments/comments.controller.spec.js +1 -5
  44. package/server/applications/comments/comments.controller.spec.js.map +1 -1
  45. package/server/applications/comments/comments.module.js +1 -5
  46. package/server/applications/comments/comments.module.js.map +1 -1
  47. package/server/applications/comments/constants/routes.js +1 -5
  48. package/server/applications/comments/constants/routes.js.map +1 -1
  49. package/server/applications/comments/dto/comment.dto.js +1 -5
  50. package/server/applications/comments/dto/comment.dto.js.map +1 -1
  51. package/server/applications/comments/interfaces/comment-recent.interface.js +1 -5
  52. package/server/applications/comments/interfaces/comment-recent.interface.js.map +1 -1
  53. package/server/applications/comments/schemas/comment.interface.js +1 -5
  54. package/server/applications/comments/schemas/comment.interface.js.map +1 -1
  55. package/server/applications/comments/schemas/comments.schema.js +1 -5
  56. package/server/applications/comments/schemas/comments.schema.js.map +1 -1
  57. package/server/applications/comments/services/comments-manager.service.js +9 -7
  58. package/server/applications/comments/services/comments-manager.service.js.map +1 -1
  59. package/server/applications/comments/services/comments-manager.service.spec.js +10 -8
  60. package/server/applications/comments/services/comments-manager.service.spec.js.map +1 -1
  61. package/server/applications/comments/services/comments-queries.service.js +1 -5
  62. package/server/applications/comments/services/comments-queries.service.js.map +1 -1
  63. package/server/applications/files/adapters/files-indexer-mysql.service.js +29 -12
  64. package/server/applications/files/adapters/files-indexer-mysql.service.js.map +1 -1
  65. package/server/applications/files/adapters/files-indexer-mysql.service.spec.js +1 -5
  66. package/server/applications/files/adapters/files-indexer-mysql.service.spec.js.map +1 -1
  67. package/server/applications/files/constants/cache.js +1 -5
  68. package/server/applications/files/constants/cache.js.map +1 -1
  69. package/server/applications/files/constants/compress.js +1 -5
  70. package/server/applications/files/constants/compress.js.map +1 -1
  71. package/server/applications/files/constants/files.js +1 -5
  72. package/server/applications/files/constants/files.js.map +1 -1
  73. package/server/applications/files/constants/indexing.js +1 -5
  74. package/server/applications/files/constants/indexing.js.map +1 -1
  75. package/server/applications/files/constants/operations.js +1 -5
  76. package/server/applications/files/constants/operations.js.map +1 -1
  77. package/server/applications/files/constants/routes.js +1 -5
  78. package/server/applications/files/constants/routes.js.map +1 -1
  79. package/server/applications/files/constants/samples.js +1 -5
  80. package/server/applications/files/constants/samples.js.map +1 -1
  81. package/server/applications/files/dto/file-operations.dto.js +1 -5
  82. package/server/applications/files/dto/file-operations.dto.js.map +1 -1
  83. package/server/applications/files/events/file-task-event.js +1 -5
  84. package/server/applications/files/events/file-task-event.js.map +1 -1
  85. package/server/applications/files/files-tasks.controller.js +1 -5
  86. package/server/applications/files/files-tasks.controller.js.map +1 -1
  87. package/server/applications/files/files-tasks.controller.spec.js +1 -5
  88. package/server/applications/files/files-tasks.controller.spec.js.map +1 -1
  89. package/server/applications/files/files.config.js +1 -5
  90. package/server/applications/files/files.config.js.map +1 -1
  91. package/server/applications/files/files.controller.js +1 -5
  92. package/server/applications/files/files.controller.js.map +1 -1
  93. package/server/applications/files/files.controller.spec.js +1 -5
  94. package/server/applications/files/files.controller.spec.js.map +1 -1
  95. package/server/applications/files/files.module.js +1 -5
  96. package/server/applications/files/files.module.js.map +1 -1
  97. package/server/applications/files/interfaces/file-db-props.interface.js +1 -5
  98. package/server/applications/files/interfaces/file-db-props.interface.js.map +1 -1
  99. package/server/applications/files/interfaces/file-lock.interface.js +1 -5
  100. package/server/applications/files/interfaces/file-lock.interface.js.map +1 -1
  101. package/server/applications/files/interfaces/file-parse-index.js +1 -5
  102. package/server/applications/files/interfaces/file-parse-index.js.map +1 -1
  103. package/server/applications/files/interfaces/file-props.interface.js +1 -5
  104. package/server/applications/files/interfaces/file-props.interface.js.map +1 -1
  105. package/server/applications/files/interfaces/file-recent-location.interface.js +1 -5
  106. package/server/applications/files/interfaces/file-recent-location.interface.js.map +1 -1
  107. package/server/applications/files/interfaces/file-space.interface.js +1 -5
  108. package/server/applications/files/interfaces/file-space.interface.js.map +1 -1
  109. package/server/applications/files/interfaces/file-tree.interface.js +1 -5
  110. package/server/applications/files/interfaces/file-tree.interface.js.map +1 -1
  111. package/server/applications/files/models/file-error.js +1 -5
  112. package/server/applications/files/models/file-error.js.map +1 -1
  113. package/server/applications/files/models/file-lock-error.js +1 -5
  114. package/server/applications/files/models/file-lock-error.js.map +1 -1
  115. package/server/applications/files/models/file-task.js +1 -5
  116. package/server/applications/files/models/file-task.js.map +1 -1
  117. package/server/applications/files/models/files-indexer.js +1 -5
  118. package/server/applications/files/models/files-indexer.js.map +1 -1
  119. package/server/applications/files/modules/collabora-online/collabora-online-environment.decorator.js +1 -5
  120. package/server/applications/files/modules/collabora-online/collabora-online-environment.decorator.js.map +1 -1
  121. package/server/applications/files/modules/collabora-online/collabora-online-manager.service.js +21 -10
  122. package/server/applications/files/modules/collabora-online/collabora-online-manager.service.js.map +1 -1
  123. package/server/applications/files/modules/collabora-online/collabora-online-manager.service.spec.js +1 -5
  124. package/server/applications/files/modules/collabora-online/collabora-online-manager.service.spec.js.map +1 -1
  125. package/server/applications/files/modules/collabora-online/collabora-online.config.js +1 -5
  126. package/server/applications/files/modules/collabora-online/collabora-online.config.js.map +1 -1
  127. package/server/applications/files/modules/collabora-online/collabora-online.constants.js +1 -5
  128. package/server/applications/files/modules/collabora-online/collabora-online.constants.js.map +1 -1
  129. package/server/applications/files/modules/collabora-online/collabora-online.controller.js +1 -5
  130. package/server/applications/files/modules/collabora-online/collabora-online.controller.js.map +1 -1
  131. package/server/applications/files/modules/collabora-online/collabora-online.controller.spec.js +1 -5
  132. package/server/applications/files/modules/collabora-online/collabora-online.controller.spec.js.map +1 -1
  133. package/server/applications/files/modules/collabora-online/collabora-online.dtos.js +1 -5
  134. package/server/applications/files/modules/collabora-online/collabora-online.dtos.js.map +1 -1
  135. package/server/applications/files/modules/collabora-online/collabora-online.guard.js +1 -5
  136. package/server/applications/files/modules/collabora-online/collabora-online.guard.js.map +1 -1
  137. package/server/applications/files/modules/collabora-online/collabora-online.guard.spec.js +1 -5
  138. package/server/applications/files/modules/collabora-online/collabora-online.guard.spec.js.map +1 -1
  139. package/server/applications/files/modules/collabora-online/collabora-online.interface.js +1 -5
  140. package/server/applications/files/modules/collabora-online/collabora-online.interface.js.map +1 -1
  141. package/server/applications/files/modules/collabora-online/collabora-online.module.js +1 -5
  142. package/server/applications/files/modules/collabora-online/collabora-online.module.js.map +1 -1
  143. package/server/applications/files/modules/collabora-online/collabora-online.routes.js +1 -5
  144. package/server/applications/files/modules/collabora-online/collabora-online.routes.js.map +1 -1
  145. package/server/applications/files/modules/collabora-online/collabora-online.strategy.js +1 -5
  146. package/server/applications/files/modules/collabora-online/collabora-online.strategy.js.map +1 -1
  147. package/server/applications/files/modules/collabora-online/collabora-online.utils.js +1 -5
  148. package/server/applications/files/modules/collabora-online/collabora-online.utils.js.map +1 -1
  149. package/server/applications/files/modules/file-editor-providers.interface.js +6 -0
  150. package/server/applications/files/modules/file-editor-providers.interface.js.map +1 -0
  151. package/server/applications/files/modules/only-office/only-office-environment.decorator.js +1 -5
  152. package/server/applications/files/modules/only-office/only-office-environment.decorator.js.map +1 -1
  153. package/server/applications/files/modules/only-office/only-office-manager.service.js +57 -19
  154. package/server/applications/files/modules/only-office/only-office-manager.service.js.map +1 -1
  155. package/server/applications/files/modules/only-office/only-office-manager.service.spec.js +1 -5
  156. package/server/applications/files/modules/only-office/only-office-manager.service.spec.js.map +1 -1
  157. package/server/applications/files/modules/only-office/only-office.config.js +1 -5
  158. package/server/applications/files/modules/only-office/only-office.config.js.map +1 -1
  159. package/server/applications/files/modules/only-office/only-office.constants.js +1 -5
  160. package/server/applications/files/modules/only-office/only-office.constants.js.map +1 -1
  161. package/server/applications/files/modules/only-office/only-office.controller.js +1 -5
  162. package/server/applications/files/modules/only-office/only-office.controller.js.map +1 -1
  163. package/server/applications/files/modules/only-office/only-office.controller.spec.js +1 -5
  164. package/server/applications/files/modules/only-office/only-office.controller.spec.js.map +1 -1
  165. package/server/applications/files/modules/only-office/only-office.dtos.js +1 -5
  166. package/server/applications/files/modules/only-office/only-office.dtos.js.map +1 -1
  167. package/server/applications/files/modules/only-office/only-office.guard.js +1 -5
  168. package/server/applications/files/modules/only-office/only-office.guard.js.map +1 -1
  169. package/server/applications/files/modules/only-office/only-office.guard.spec.js +1 -5
  170. package/server/applications/files/modules/only-office/only-office.guard.spec.js.map +1 -1
  171. package/server/applications/files/modules/only-office/only-office.interface.js +1 -5
  172. package/server/applications/files/modules/only-office/only-office.interface.js.map +1 -1
  173. package/server/applications/files/modules/only-office/only-office.module.js +1 -5
  174. package/server/applications/files/modules/only-office/only-office.module.js.map +1 -1
  175. package/server/applications/files/modules/only-office/only-office.routes.js +1 -5
  176. package/server/applications/files/modules/only-office/only-office.routes.js.map +1 -1
  177. package/server/applications/files/modules/only-office/only-office.strategy.js +1 -5
  178. package/server/applications/files/modules/only-office/only-office.strategy.js.map +1 -1
  179. package/server/applications/files/schemas/file-content.interface.js +1 -5
  180. package/server/applications/files/schemas/file-content.interface.js.map +1 -1
  181. package/server/applications/files/schemas/file-recent.interface.js +1 -5
  182. package/server/applications/files/schemas/file-recent.interface.js.map +1 -1
  183. package/server/applications/files/schemas/file.interface.js +1 -5
  184. package/server/applications/files/schemas/file.interface.js.map +1 -1
  185. package/server/applications/files/schemas/files-content.schema.js +1 -5
  186. package/server/applications/files/schemas/files-content.schema.js.map +1 -1
  187. package/server/applications/files/schemas/files-recents.schema.js +1 -5
  188. package/server/applications/files/schemas/files-recents.schema.js.map +1 -1
  189. package/server/applications/files/schemas/files.schema.js +1 -5
  190. package/server/applications/files/schemas/files.schema.js.map +1 -1
  191. package/server/applications/files/services/files-content-manager.service.js +45 -16
  192. package/server/applications/files/services/files-content-manager.service.js.map +1 -1
  193. package/server/applications/files/services/files-lock-manager.service.js +53 -18
  194. package/server/applications/files/services/files-lock-manager.service.js.map +1 -1
  195. package/server/applications/files/services/files-lock-manager.service.spec.js +1 -5
  196. package/server/applications/files/services/files-lock-manager.service.spec.js.map +1 -1
  197. package/server/applications/files/services/files-manager.service.js +77 -24
  198. package/server/applications/files/services/files-manager.service.js.map +1 -1
  199. package/server/applications/files/services/files-manager.service.spec.js +1 -5
  200. package/server/applications/files/services/files-manager.service.spec.js.map +1 -1
  201. package/server/applications/files/services/files-methods.service.js +5 -6
  202. package/server/applications/files/services/files-methods.service.js.map +1 -1
  203. package/server/applications/files/services/files-methods.service.spec.js +1 -5
  204. package/server/applications/files/services/files-methods.service.spec.js.map +1 -1
  205. package/server/applications/files/services/files-parser.service.js +13 -8
  206. package/server/applications/files/services/files-parser.service.js.map +1 -1
  207. package/server/applications/files/services/files-parser.service.spec.js +1 -5
  208. package/server/applications/files/services/files-parser.service.spec.js.map +1 -1
  209. package/server/applications/files/services/files-queries.service.js +29 -12
  210. package/server/applications/files/services/files-queries.service.js.map +1 -1
  211. package/server/applications/files/services/files-recents.service.js +1 -5
  212. package/server/applications/files/services/files-recents.service.js.map +1 -1
  213. package/server/applications/files/services/files-recents.service.spec.js +1 -5
  214. package/server/applications/files/services/files-recents.service.spec.js.map +1 -1
  215. package/server/applications/files/services/files-scheduler.service.js +77 -24
  216. package/server/applications/files/services/files-scheduler.service.js.map +1 -1
  217. package/server/applications/files/services/files-search-manager.service.js +9 -7
  218. package/server/applications/files/services/files-search-manager.service.js.map +1 -1
  219. package/server/applications/files/services/files-search-manager.service.spec.js +1 -5
  220. package/server/applications/files/services/files-search-manager.service.spec.js.map +1 -1
  221. package/server/applications/files/services/files-tasks-manager.service.js +77 -24
  222. package/server/applications/files/services/files-tasks-manager.service.js.map +1 -1
  223. package/server/applications/files/services/files-tasks-manager.service.spec.js +1 -5
  224. package/server/applications/files/services/files-tasks-manager.service.spec.js.map +1 -1
  225. package/server/applications/files/utils/doc-textify/adapters/excel.js +1 -5
  226. package/server/applications/files/utils/doc-textify/adapters/excel.js.map +1 -1
  227. package/server/applications/files/utils/doc-textify/adapters/html.js +1 -5
  228. package/server/applications/files/utils/doc-textify/adapters/html.js.map +1 -1
  229. package/server/applications/files/utils/doc-textify/adapters/open-office.js +1 -5
  230. package/server/applications/files/utils/doc-textify/adapters/open-office.js.map +1 -1
  231. package/server/applications/files/utils/doc-textify/adapters/pdf.js +1 -5
  232. package/server/applications/files/utils/doc-textify/adapters/pdf.js.map +1 -1
  233. package/server/applications/files/utils/doc-textify/adapters/power-point.js +1 -5
  234. package/server/applications/files/utils/doc-textify/adapters/power-point.js.map +1 -1
  235. package/server/applications/files/utils/doc-textify/adapters/text.js +1 -5
  236. package/server/applications/files/utils/doc-textify/adapters/text.js.map +1 -1
  237. package/server/applications/files/utils/doc-textify/adapters/word.js +1 -5
  238. package/server/applications/files/utils/doc-textify/adapters/word.js.map +1 -1
  239. package/server/applications/files/utils/doc-textify/doc-textify.js +1 -5
  240. package/server/applications/files/utils/doc-textify/doc-textify.js.map +1 -1
  241. package/server/applications/files/utils/doc-textify/interfaces/doc-textify.interfaces.js +1 -5
  242. package/server/applications/files/utils/doc-textify/interfaces/doc-textify.interfaces.js.map +1 -1
  243. package/server/applications/files/utils/doc-textify/utils/clean.js +1 -5
  244. package/server/applications/files/utils/doc-textify/utils/clean.js.map +1 -1
  245. package/server/applications/files/utils/files-search.js +1 -5
  246. package/server/applications/files/utils/files-search.js.map +1 -1
  247. package/server/applications/files/utils/files-tree.js +1 -5
  248. package/server/applications/files/utils/files-tree.js.map +1 -1
  249. package/server/applications/files/utils/files.js +1 -5
  250. package/server/applications/files/utils/files.js.map +1 -1
  251. package/server/applications/files/utils/send-file.js +1 -5
  252. package/server/applications/files/utils/send-file.js.map +1 -1
  253. package/server/applications/files/utils/unzip-file.js +1 -5
  254. package/server/applications/files/utils/unzip-file.js.map +1 -1
  255. package/server/applications/files/utils/url-file.js +1 -5
  256. package/server/applications/files/utils/url-file.js.map +1 -1
  257. package/server/applications/links/constants/cache.js +1 -5
  258. package/server/applications/links/constants/cache.js.map +1 -1
  259. package/server/applications/links/constants/links.js +1 -5
  260. package/server/applications/links/constants/links.js.map +1 -1
  261. package/server/applications/links/constants/routes.js +1 -5
  262. package/server/applications/links/constants/routes.js.map +1 -1
  263. package/server/applications/links/dto/create-or-update-link.dto.js +1 -5
  264. package/server/applications/links/dto/create-or-update-link.dto.js.map +1 -1
  265. package/server/applications/links/interfaces/link-guest.interface.js +1 -5
  266. package/server/applications/links/interfaces/link-guest.interface.js.map +1 -1
  267. package/server/applications/links/interfaces/link-space.interface.js +1 -5
  268. package/server/applications/links/interfaces/link-space.interface.js.map +1 -1
  269. package/server/applications/links/links.controller.js +1 -5
  270. package/server/applications/links/links.controller.js.map +1 -1
  271. package/server/applications/links/links.controller.spec.js +1 -5
  272. package/server/applications/links/links.controller.spec.js.map +1 -1
  273. package/server/applications/links/schemas/link.interface.js +1 -5
  274. package/server/applications/links/schemas/link.interface.js.map +1 -1
  275. package/server/applications/links/schemas/links.schema.js +1 -5
  276. package/server/applications/links/schemas/links.schema.js.map +1 -1
  277. package/server/applications/links/services/links-manager.service.js +55 -20
  278. package/server/applications/links/services/links-manager.service.js.map +1 -1
  279. package/server/applications/links/services/links-manager.service.spec.js +3 -7
  280. package/server/applications/links/services/links-manager.service.spec.js.map +1 -1
  281. package/server/applications/links/services/links-queries.service.js +1 -5
  282. package/server/applications/links/services/links-queries.service.js.map +1 -1
  283. package/server/applications/notifications/constants/notifications.js +1 -5
  284. package/server/applications/notifications/constants/notifications.js.map +1 -1
  285. package/server/applications/notifications/constants/routes.js +1 -5
  286. package/server/applications/notifications/constants/routes.js.map +1 -1
  287. package/server/applications/notifications/constants/websocket.js +1 -5
  288. package/server/applications/notifications/constants/websocket.js.map +1 -1
  289. package/server/applications/notifications/i18n/de.js +1 -9
  290. package/server/applications/notifications/i18n/de.js.map +1 -1
  291. package/server/applications/notifications/i18n/es.js +1 -5
  292. package/server/applications/notifications/i18n/es.js.map +1 -1
  293. package/server/applications/notifications/i18n/fr.js +1 -5
  294. package/server/applications/notifications/i18n/fr.js.map +1 -1
  295. package/server/applications/notifications/i18n/hi.js +1 -5
  296. package/server/applications/notifications/i18n/hi.js.map +1 -1
  297. package/server/applications/notifications/i18n/index.js +1 -5
  298. package/server/applications/notifications/i18n/index.js.map +1 -1
  299. package/server/applications/notifications/i18n/it.js +1 -5
  300. package/server/applications/notifications/i18n/it.js.map +1 -1
  301. package/server/applications/notifications/i18n/ja.js +1 -5
  302. package/server/applications/notifications/i18n/ja.js.map +1 -1
  303. package/server/applications/notifications/i18n/ko.js +1 -5
  304. package/server/applications/notifications/i18n/ko.js.map +1 -1
  305. package/server/applications/notifications/i18n/pl.js +1 -5
  306. package/server/applications/notifications/i18n/pl.js.map +1 -1
  307. package/server/applications/notifications/i18n/pt.js +1 -5
  308. package/server/applications/notifications/i18n/pt.js.map +1 -1
  309. package/server/applications/notifications/i18n/pt_br.js +1 -5
  310. package/server/applications/notifications/i18n/pt_br.js.map +1 -1
  311. package/server/applications/notifications/i18n/ru.js +1 -5
  312. package/server/applications/notifications/i18n/ru.js.map +1 -1
  313. package/server/applications/notifications/i18n/tr.js +1 -5
  314. package/server/applications/notifications/i18n/tr.js.map +1 -1
  315. package/server/applications/notifications/i18n/zh.js +1 -5
  316. package/server/applications/notifications/i18n/zh.js.map +1 -1
  317. package/server/applications/notifications/interfaces/notification-properties.interface.js +1 -5
  318. package/server/applications/notifications/interfaces/notification-properties.interface.js.map +1 -1
  319. package/server/applications/notifications/interfaces/user-mail-notification.interface.js +1 -5
  320. package/server/applications/notifications/interfaces/user-mail-notification.interface.js.map +1 -1
  321. package/server/applications/notifications/mails/models.js +1 -5
  322. package/server/applications/notifications/mails/models.js.map +1 -1
  323. package/server/applications/notifications/mails/templates.js +1 -5
  324. package/server/applications/notifications/mails/templates.js.map +1 -1
  325. package/server/applications/notifications/mails/urls.js +1 -5
  326. package/server/applications/notifications/mails/urls.js.map +1 -1
  327. package/server/applications/notifications/notifications.controller.js +1 -5
  328. package/server/applications/notifications/notifications.controller.js.map +1 -1
  329. package/server/applications/notifications/notifications.controller.spec.js +1 -5
  330. package/server/applications/notifications/notifications.controller.spec.js.map +1 -1
  331. package/server/applications/notifications/notifications.gateway.js +1 -5
  332. package/server/applications/notifications/notifications.gateway.js.map +1 -1
  333. package/server/applications/notifications/notifications.module.js +1 -5
  334. package/server/applications/notifications/notifications.module.js.map +1 -1
  335. package/server/applications/notifications/schemas/notification.interface.js +1 -5
  336. package/server/applications/notifications/schemas/notification.interface.js.map +1 -1
  337. package/server/applications/notifications/schemas/notifications.schema.js +1 -5
  338. package/server/applications/notifications/schemas/notifications.schema.js.map +1 -1
  339. package/server/applications/notifications/services/notifications-manager.service.js +25 -11
  340. package/server/applications/notifications/services/notifications-manager.service.js.map +1 -1
  341. package/server/applications/notifications/services/notifications-manager.service.spec.js +20 -11
  342. package/server/applications/notifications/services/notifications-manager.service.spec.js.map +1 -1
  343. package/server/applications/notifications/services/notifications-queries.service.js +1 -5
  344. package/server/applications/notifications/services/notifications-queries.service.js.map +1 -1
  345. package/server/applications/shares/constants/routes.js +1 -5
  346. package/server/applications/shares/constants/routes.js.map +1 -1
  347. package/server/applications/shares/constants/shares.js +1 -5
  348. package/server/applications/shares/constants/shares.js.map +1 -1
  349. package/server/applications/shares/dto/create-or-update-share.dto.js +1 -5
  350. package/server/applications/shares/dto/create-or-update-share.dto.js.map +1 -1
  351. package/server/applications/shares/interfaces/share-child.interface.js +1 -5
  352. package/server/applications/shares/interfaces/share-child.interface.js.map +1 -1
  353. package/server/applications/shares/interfaces/share-env.interface.js +1 -5
  354. package/server/applications/shares/interfaces/share-env.interface.js.map +1 -1
  355. package/server/applications/shares/interfaces/share-file.interface.js +1 -5
  356. package/server/applications/shares/interfaces/share-file.interface.js.map +1 -1
  357. package/server/applications/shares/interfaces/share-link.interface.js +1 -5
  358. package/server/applications/shares/interfaces/share-link.interface.js.map +1 -1
  359. package/server/applications/shares/interfaces/share-props.interface.js +1 -5
  360. package/server/applications/shares/interfaces/share-props.interface.js.map +1 -1
  361. package/server/applications/shares/models/share-child.model.js +1 -5
  362. package/server/applications/shares/models/share-child.model.js.map +1 -1
  363. package/server/applications/shares/schemas/share-members.interface.js +1 -5
  364. package/server/applications/shares/schemas/share-members.interface.js.map +1 -1
  365. package/server/applications/shares/schemas/share.interface.js +1 -5
  366. package/server/applications/shares/schemas/share.interface.js.map +1 -1
  367. package/server/applications/shares/schemas/shares-members.schema.js +1 -5
  368. package/server/applications/shares/schemas/shares-members.schema.js.map +1 -1
  369. package/server/applications/shares/schemas/shares.schema.js +1 -5
  370. package/server/applications/shares/schemas/shares.schema.js.map +1 -1
  371. package/server/applications/shares/services/shares-manager.service.js +214 -68
  372. package/server/applications/shares/services/shares-manager.service.js.map +1 -1
  373. package/server/applications/shares/services/shares-manager.service.spec.js +1 -5
  374. package/server/applications/shares/services/shares-manager.service.spec.js.map +1 -1
  375. package/server/applications/shares/services/shares-queries.service.js +49 -17
  376. package/server/applications/shares/services/shares-queries.service.js.map +1 -1
  377. package/server/applications/shares/shares.controller.js +1 -5
  378. package/server/applications/shares/shares.controller.js.map +1 -1
  379. package/server/applications/shares/shares.controller.spec.js +1 -5
  380. package/server/applications/shares/shares.controller.spec.js.map +1 -1
  381. package/server/applications/shares/shares.module.js +1 -5
  382. package/server/applications/shares/shares.module.js.map +1 -1
  383. package/server/applications/spaces/constants/cache.js +1 -5
  384. package/server/applications/spaces/constants/cache.js.map +1 -1
  385. package/server/applications/spaces/constants/routes.js +1 -5
  386. package/server/applications/spaces/constants/routes.js.map +1 -1
  387. package/server/applications/spaces/constants/spaces.js +1 -5
  388. package/server/applications/spaces/constants/spaces.js.map +1 -1
  389. package/server/applications/spaces/decorators/space-override-permission.decorator.js +1 -5
  390. package/server/applications/spaces/decorators/space-override-permission.decorator.js.map +1 -1
  391. package/server/applications/spaces/decorators/space-skip-guard.decorator.js +1 -5
  392. package/server/applications/spaces/decorators/space-skip-guard.decorator.js.map +1 -1
  393. package/server/applications/spaces/decorators/space-skip-permissions.decorator.js +1 -5
  394. package/server/applications/spaces/decorators/space-skip-permissions.decorator.js.map +1 -1
  395. package/server/applications/spaces/decorators/space.decorator.js +1 -5
  396. package/server/applications/spaces/decorators/space.decorator.js.map +1 -1
  397. package/server/applications/spaces/dto/create-or-update-space.dto.js +1 -5
  398. package/server/applications/spaces/dto/create-or-update-space.dto.js.map +1 -1
  399. package/server/applications/spaces/dto/delete-space.dto.js +1 -5
  400. package/server/applications/spaces/dto/delete-space.dto.js.map +1 -1
  401. package/server/applications/spaces/dto/search-space.dto.js +1 -5
  402. package/server/applications/spaces/dto/search-space.dto.js.map +1 -1
  403. package/server/applications/spaces/dto/space-roots.dto.js +1 -5
  404. package/server/applications/spaces/dto/space-roots.dto.js.map +1 -1
  405. package/server/applications/spaces/guards/space.guard.js +17 -9
  406. package/server/applications/spaces/guards/space.guard.js.map +1 -1
  407. package/server/applications/spaces/guards/space.guard.spec.js +1 -5
  408. package/server/applications/spaces/guards/space.guard.spec.js.map +1 -1
  409. package/server/applications/spaces/interfaces/space-diff.interface.js +1 -5
  410. package/server/applications/spaces/interfaces/space-diff.interface.js.map +1 -1
  411. package/server/applications/spaces/interfaces/space-files.interface.js +1 -5
  412. package/server/applications/spaces/interfaces/space-files.interface.js.map +1 -1
  413. package/server/applications/spaces/interfaces/space-request.interface.js +1 -5
  414. package/server/applications/spaces/interfaces/space-request.interface.js.map +1 -1
  415. package/server/applications/spaces/interfaces/space-trash.interface.js +1 -5
  416. package/server/applications/spaces/interfaces/space-trash.interface.js.map +1 -1
  417. package/server/applications/spaces/models/space-env.model.js +1 -5
  418. package/server/applications/spaces/models/space-env.model.js.map +1 -1
  419. package/server/applications/spaces/models/space-props.model.js +1 -5
  420. package/server/applications/spaces/models/space-props.model.js.map +1 -1
  421. package/server/applications/spaces/models/space-root-props.model.js +1 -5
  422. package/server/applications/spaces/models/space-root-props.model.js.map +1 -1
  423. package/server/applications/spaces/models/space.model.js +1 -5
  424. package/server/applications/spaces/models/space.model.js.map +1 -1
  425. package/server/applications/spaces/schemas/space-members.interface.js +1 -5
  426. package/server/applications/spaces/schemas/space-members.interface.js.map +1 -1
  427. package/server/applications/spaces/schemas/space-root.interface.js +1 -5
  428. package/server/applications/spaces/schemas/space-root.interface.js.map +1 -1
  429. package/server/applications/spaces/schemas/space.interface.js +1 -5
  430. package/server/applications/spaces/schemas/space.interface.js.map +1 -1
  431. package/server/applications/spaces/schemas/spaces-members.schema.js +1 -5
  432. package/server/applications/spaces/schemas/spaces-members.schema.js.map +1 -1
  433. package/server/applications/spaces/schemas/spaces-roots.schema.js +1 -5
  434. package/server/applications/spaces/schemas/spaces-roots.schema.js.map +1 -1
  435. package/server/applications/spaces/schemas/spaces.schema.js +1 -5
  436. package/server/applications/spaces/schemas/spaces.schema.js.map +1 -1
  437. package/server/applications/spaces/services/spaces-browser.service.js +77 -24
  438. package/server/applications/spaces/services/spaces-browser.service.js.map +1 -1
  439. package/server/applications/spaces/services/spaces-browser.service.spec.js +1 -5
  440. package/server/applications/spaces/services/spaces-browser.service.spec.js.map +1 -1
  441. package/server/applications/spaces/services/spaces-manager.service.js +193 -53
  442. package/server/applications/spaces/services/spaces-manager.service.js.map +1 -1
  443. package/server/applications/spaces/services/spaces-manager.service.spec.js +1 -5
  444. package/server/applications/spaces/services/spaces-manager.service.spec.js.map +1 -1
  445. package/server/applications/spaces/services/spaces-queries.service.js +65 -21
  446. package/server/applications/spaces/services/spaces-queries.service.js.map +1 -1
  447. package/server/applications/spaces/services/spaces-scheduler.service.js +49 -17
  448. package/server/applications/spaces/services/spaces-scheduler.service.js.map +1 -1
  449. package/server/applications/spaces/spaces.controller.js +1 -5
  450. package/server/applications/spaces/spaces.controller.js.map +1 -1
  451. package/server/applications/spaces/spaces.controller.spec.js +1 -5
  452. package/server/applications/spaces/spaces.controller.spec.js.map +1 -1
  453. package/server/applications/spaces/spaces.module.js +1 -5
  454. package/server/applications/spaces/spaces.module.js.map +1 -1
  455. package/server/applications/spaces/utils/paths.js +1 -5
  456. package/server/applications/spaces/utils/paths.js.map +1 -1
  457. package/server/applications/spaces/utils/permissions.js +1 -5
  458. package/server/applications/spaces/utils/permissions.js.map +1 -1
  459. package/server/applications/spaces/utils/routes.js +1 -5
  460. package/server/applications/spaces/utils/routes.js.map +1 -1
  461. package/server/applications/sync/constants/auth.js +1 -5
  462. package/server/applications/sync/constants/auth.js.map +1 -1
  463. package/server/applications/sync/constants/routes.js +6 -5
  464. package/server/applications/sync/constants/routes.js.map +1 -1
  465. package/server/applications/sync/constants/store.js +1 -9
  466. package/server/applications/sync/constants/store.js.map +1 -1
  467. package/server/applications/sync/constants/sync.js +2 -6
  468. package/server/applications/sync/constants/sync.js.map +1 -1
  469. package/server/applications/sync/decorators/sync-context.decorator.js +1 -5
  470. package/server/applications/sync/decorators/sync-context.decorator.js.map +1 -1
  471. package/server/applications/sync/decorators/sync-environment.decorator.js +1 -5
  472. package/server/applications/sync/decorators/sync-environment.decorator.js.map +1 -1
  473. package/server/applications/sync/dtos/sync-client-auth.dto.js +12 -8
  474. package/server/applications/sync/dtos/sync-client-auth.dto.js.map +1 -1
  475. package/server/applications/sync/dtos/sync-client-info.dto.js +49 -0
  476. package/server/applications/sync/dtos/sync-client-info.dto.js.map +1 -0
  477. package/server/applications/sync/dtos/sync-client-registration.dto.js +34 -11
  478. package/server/applications/sync/dtos/sync-client-registration.dto.js.map +1 -1
  479. package/server/applications/sync/dtos/sync-operations.dto.js +1 -5
  480. package/server/applications/sync/dtos/sync-operations.dto.js.map +1 -1
  481. package/server/applications/sync/dtos/sync-path.dto.js +1 -5
  482. package/server/applications/sync/dtos/sync-path.dto.js.map +1 -1
  483. package/server/applications/sync/dtos/sync-upload.dto.js +1 -5
  484. package/server/applications/sync/dtos/sync-upload.dto.js.map +1 -1
  485. package/server/applications/sync/interceptors/sync-diff-gzip-body.interceptor.js +1 -5
  486. package/server/applications/sync/interceptors/sync-diff-gzip-body.interceptor.js.map +1 -1
  487. package/server/applications/sync/interceptors/sync-diff-gzip-body.interceptor.spec.js +1 -5
  488. package/server/applications/sync/interceptors/sync-diff-gzip-body.interceptor.spec.js.map +1 -1
  489. package/server/applications/sync/interfaces/store-manifest.interface.js +1 -5
  490. package/server/applications/sync/interfaces/store-manifest.interface.js.map +1 -1
  491. package/server/applications/sync/interfaces/sync-client-auth.interface.js +1 -25
  492. package/server/applications/sync/interfaces/sync-client-auth.interface.js.map +1 -1
  493. package/server/applications/sync/interfaces/sync-client-paths.interface.js +1 -5
  494. package/server/applications/sync/interfaces/sync-client-paths.interface.js.map +1 -1
  495. package/server/applications/sync/interfaces/sync-client.interface.js +1 -5
  496. package/server/applications/sync/interfaces/sync-client.interface.js.map +1 -1
  497. package/server/applications/sync/interfaces/sync-diff.interface.js +1 -5
  498. package/server/applications/sync/interfaces/sync-diff.interface.js.map +1 -1
  499. package/server/applications/sync/interfaces/sync-path.interface.js +1 -5
  500. package/server/applications/sync/interfaces/sync-path.interface.js.map +1 -1
  501. package/server/applications/sync/schemas/sync-client.interface.js +1 -5
  502. package/server/applications/sync/schemas/sync-client.interface.js.map +1 -1
  503. package/server/applications/sync/schemas/sync-clients.schema.js +1 -5
  504. package/server/applications/sync/schemas/sync-clients.schema.js.map +1 -1
  505. package/server/applications/sync/schemas/sync-path.interface.js +1 -5
  506. package/server/applications/sync/schemas/sync-path.interface.js.map +1 -1
  507. package/server/applications/sync/schemas/sync-paths.schema.js +1 -5
  508. package/server/applications/sync/schemas/sync-paths.schema.js.map +1 -1
  509. package/server/applications/sync/services/sync-clients-manager.service.js +108 -44
  510. package/server/applications/sync/services/sync-clients-manager.service.js.map +1 -1
  511. package/server/applications/sync/services/sync-clients-manager.service.spec.js +14 -17
  512. package/server/applications/sync/services/sync-clients-manager.service.spec.js.map +1 -1
  513. package/server/applications/sync/services/sync-manager.service.js +29 -12
  514. package/server/applications/sync/services/sync-manager.service.js.map +1 -1
  515. package/server/applications/sync/services/sync-manager.service.spec.js +1 -5
  516. package/server/applications/sync/services/sync-manager.service.spec.js.map +1 -1
  517. package/server/applications/sync/services/sync-paths-manager.service.js +27 -17
  518. package/server/applications/sync/services/sync-paths-manager.service.js.map +1 -1
  519. package/server/applications/sync/services/sync-paths-manager.service.spec.js +11 -15
  520. package/server/applications/sync/services/sync-paths-manager.service.spec.js.map +1 -1
  521. package/server/applications/sync/services/sync-queries.service.js +1 -5
  522. package/server/applications/sync/services/sync-queries.service.js.map +1 -1
  523. package/server/applications/sync/sync.config.js +1 -5
  524. package/server/applications/sync/sync.config.js.map +1 -1
  525. package/server/applications/sync/sync.controller.js +21 -6
  526. package/server/applications/sync/sync.controller.js.map +1 -1
  527. package/server/applications/sync/sync.controller.spec.js +1 -5
  528. package/server/applications/sync/sync.controller.spec.js.map +1 -1
  529. package/server/applications/sync/sync.module.js +1 -5
  530. package/server/applications/sync/sync.module.js.map +1 -1
  531. package/server/applications/sync/utils/functions.js +1 -5
  532. package/server/applications/sync/utils/functions.js.map +1 -1
  533. package/server/applications/sync/utils/normalizedMap.js +1 -5
  534. package/server/applications/sync/utils/normalizedMap.js.map +1 -1
  535. package/server/applications/sync/utils/routes.js +1 -5
  536. package/server/applications/sync/utils/routes.js.map +1 -1
  537. package/server/applications/users/admin-users.controller.js +2 -6
  538. package/server/applications/users/admin-users.controller.js.map +1 -1
  539. package/server/applications/users/admin-users.controller.spec.js +6 -10
  540. package/server/applications/users/admin-users.controller.spec.js.map +1 -1
  541. package/server/applications/users/constants/group.js +1 -5
  542. package/server/applications/users/constants/group.js.map +1 -1
  543. package/server/applications/users/constants/member.js +1 -5
  544. package/server/applications/users/constants/member.js.map +1 -1
  545. package/server/applications/users/constants/routes.js +1 -5
  546. package/server/applications/users/constants/routes.js.map +1 -1
  547. package/server/applications/users/constants/user.js +1 -5
  548. package/server/applications/users/constants/user.js.map +1 -1
  549. package/server/applications/users/constants/websocket.js +1 -5
  550. package/server/applications/users/constants/websocket.js.map +1 -1
  551. package/server/applications/users/decorators/permissions.decorator.js +1 -5
  552. package/server/applications/users/decorators/permissions.decorator.js.map +1 -1
  553. package/server/applications/users/decorators/roles.decorator.js +1 -5
  554. package/server/applications/users/decorators/roles.decorator.js.map +1 -1
  555. package/server/applications/users/decorators/user.decorator.js +1 -5
  556. package/server/applications/users/decorators/user.decorator.js.map +1 -1
  557. package/server/applications/users/dto/create-or-update-group.dto.js +1 -5
  558. package/server/applications/users/dto/create-or-update-group.dto.js.map +1 -1
  559. package/server/applications/users/dto/create-or-update-user.dto.js +1 -5
  560. package/server/applications/users/dto/create-or-update-user.dto.js.map +1 -1
  561. package/server/applications/users/dto/delete-user.dto.js +1 -5
  562. package/server/applications/users/dto/delete-user.dto.js.map +1 -1
  563. package/server/applications/users/dto/search-members.dto.js +1 -5
  564. package/server/applications/users/dto/search-members.dto.js.map +1 -1
  565. package/server/applications/users/dto/user-properties.dto.js +1 -5
  566. package/server/applications/users/dto/user-properties.dto.js.map +1 -1
  567. package/server/applications/users/guards/permissions.guard.js +1 -5
  568. package/server/applications/users/guards/permissions.guard.js.map +1 -1
  569. package/server/applications/users/guards/permissions.guard.spec.js +1 -5
  570. package/server/applications/users/guards/permissions.guard.spec.js.map +1 -1
  571. package/server/applications/users/guards/roles.guard.js +1 -5
  572. package/server/applications/users/guards/roles.guard.js.map +1 -1
  573. package/server/applications/users/guards/roles.guard.spec.js +1 -5
  574. package/server/applications/users/guards/roles.guard.spec.js.map +1 -1
  575. package/server/applications/users/interfaces/admin-group.interface.js +1 -5
  576. package/server/applications/users/interfaces/admin-group.interface.js.map +1 -1
  577. package/server/applications/users/interfaces/admin-user.interface.js +1 -5
  578. package/server/applications/users/interfaces/admin-user.interface.js.map +1 -1
  579. package/server/applications/users/interfaces/group-browse.interface.js +1 -5
  580. package/server/applications/users/interfaces/group-browse.interface.js.map +1 -1
  581. package/server/applications/users/interfaces/group-member.js +1 -5
  582. package/server/applications/users/interfaces/group-member.js.map +1 -1
  583. package/server/applications/users/interfaces/guest-user.interface.js +1 -5
  584. package/server/applications/users/interfaces/guest-user.interface.js.map +1 -1
  585. package/server/applications/users/interfaces/member.interface.js +1 -5
  586. package/server/applications/users/interfaces/member.interface.js.map +1 -1
  587. package/server/applications/users/interfaces/owner.interface.js +1 -5
  588. package/server/applications/users/interfaces/owner.interface.js.map +1 -1
  589. package/server/applications/users/interfaces/user-secrets.interface.js +1 -5
  590. package/server/applications/users/interfaces/user-secrets.interface.js.map +1 -1
  591. package/server/applications/users/interfaces/websocket.interface.js +1 -5
  592. package/server/applications/users/interfaces/websocket.interface.js.map +1 -1
  593. package/server/applications/users/models/user.model.js +1 -5
  594. package/server/applications/users/models/user.model.js.map +1 -1
  595. package/server/applications/users/schemas/group.interface.js +1 -5
  596. package/server/applications/users/schemas/group.interface.js.map +1 -1
  597. package/server/applications/users/schemas/groups.schema.js +1 -5
  598. package/server/applications/users/schemas/groups.schema.js.map +1 -1
  599. package/server/applications/users/schemas/user-group.interface.js +1 -5
  600. package/server/applications/users/schemas/user-group.interface.js.map +1 -1
  601. package/server/applications/users/schemas/user.interface.js +1 -5
  602. package/server/applications/users/schemas/user.interface.js.map +1 -1
  603. package/server/applications/users/schemas/users-groups.schema.js +1 -5
  604. package/server/applications/users/schemas/users-groups.schema.js.map +1 -1
  605. package/server/applications/users/schemas/users-guests.schema.js +1 -5
  606. package/server/applications/users/schemas/users-guests.schema.js.map +1 -1
  607. package/server/applications/users/schemas/users.schema.js +1 -5
  608. package/server/applications/users/schemas/users.schema.js.map +1 -1
  609. package/server/applications/users/services/admin-users-manager.service.js +67 -23
  610. package/server/applications/users/services/admin-users-manager.service.js.map +1 -1
  611. package/server/applications/users/services/admin-users-manager.service.spec.js +3 -7
  612. package/server/applications/users/services/admin-users-manager.service.spec.js.map +1 -1
  613. package/server/applications/users/services/admin-users-queries.service.js +65 -21
  614. package/server/applications/users/services/admin-users-queries.service.js.map +1 -1
  615. package/server/applications/users/services/users-manager.service.js +81 -25
  616. package/server/applications/users/services/users-manager.service.js.map +1 -1
  617. package/server/applications/users/services/users-manager.service.spec.js +14 -12
  618. package/server/applications/users/services/users-manager.service.spec.js.map +1 -1
  619. package/server/applications/users/services/users-queries.service.js +49 -17
  620. package/server/applications/users/services/users-queries.service.js.map +1 -1
  621. package/server/applications/users/users.controller.js +2 -6
  622. package/server/applications/users/users.controller.js.map +1 -1
  623. package/server/applications/users/users.controller.spec.js +5 -9
  624. package/server/applications/users/users.controller.spec.js.map +1 -1
  625. package/server/applications/users/users.e2e-spec.js +3 -7
  626. package/server/applications/users/users.e2e-spec.js.map +1 -1
  627. package/server/applications/users/users.gateway.js +29 -12
  628. package/server/applications/users/users.gateway.js.map +1 -1
  629. package/server/applications/users/users.gateway.spec.js +1 -5
  630. package/server/applications/users/users.gateway.spec.js.map +1 -1
  631. package/server/applications/users/users.module.js +1 -5
  632. package/server/applications/users/users.module.js.map +1 -1
  633. package/server/applications/users/utils/avatar.js +1 -5
  634. package/server/applications/users/utils/avatar.js.map +1 -1
  635. package/server/applications/users/utils/test.js +1 -5
  636. package/server/applications/users/utils/test.js.map +1 -1
  637. package/server/applications/webdav/constants/routes.js +1 -5
  638. package/server/applications/webdav/constants/routes.js.map +1 -1
  639. package/server/applications/webdav/constants/webdav.js +1 -5
  640. package/server/applications/webdav/constants/webdav.js.map +1 -1
  641. package/server/applications/webdav/decorators/if-header.decorator.js +1 -5
  642. package/server/applications/webdav/decorators/if-header.decorator.js.map +1 -1
  643. package/server/applications/webdav/decorators/webdav-context.decorator.js +1 -5
  644. package/server/applications/webdav/decorators/webdav-context.decorator.js.map +1 -1
  645. package/server/applications/webdav/filters/webdav.filter.js +1 -5
  646. package/server/applications/webdav/filters/webdav.filter.js.map +1 -1
  647. package/server/applications/webdav/filters/webdav.filter.spec.js +1 -5
  648. package/server/applications/webdav/filters/webdav.filter.spec.js.map +1 -1
  649. package/server/applications/webdav/guards/webdav-protocol.guard.js +54 -20
  650. package/server/applications/webdav/guards/webdav-protocol.guard.js.map +1 -1
  651. package/server/applications/webdav/guards/webdav-protocol.guard.spec.js +54 -0
  652. package/server/applications/webdav/guards/webdav-protocol.guard.spec.js.map +1 -1
  653. package/server/applications/webdav/interfaces/if-header.interface.js +1 -5
  654. package/server/applications/webdav/interfaces/if-header.interface.js.map +1 -1
  655. package/server/applications/webdav/interfaces/webdav.interface.js +1 -5
  656. package/server/applications/webdav/interfaces/webdav.interface.js.map +1 -1
  657. package/server/applications/webdav/models/webdav-file.model.js +1 -5
  658. package/server/applications/webdav/models/webdav-file.model.js.map +1 -1
  659. package/server/applications/webdav/services/webdav-methods.service.js +74 -26
  660. package/server/applications/webdav/services/webdav-methods.service.js.map +1 -1
  661. package/server/applications/webdav/services/webdav-methods.service.spec.js +15 -18
  662. package/server/applications/webdav/services/webdav-methods.service.spec.js.map +1 -1
  663. package/server/applications/webdav/services/webdav-spaces.service.js +17 -9
  664. package/server/applications/webdav/services/webdav-spaces.service.js.map +1 -1
  665. package/server/applications/webdav/services/webdav-spaces.service.spec.js +1 -5
  666. package/server/applications/webdav/services/webdav-spaces.service.spec.js.map +1 -1
  667. package/server/applications/webdav/utils/bootstrap.js +1 -5
  668. package/server/applications/webdav/utils/bootstrap.js.map +1 -1
  669. package/server/applications/webdav/utils/if-header.js +1 -5
  670. package/server/applications/webdav/utils/if-header.js.map +1 -1
  671. package/server/applications/webdav/utils/routes.js +1 -5
  672. package/server/applications/webdav/utils/routes.js.map +1 -1
  673. package/server/applications/webdav/utils/webdav.js +1 -5
  674. package/server/applications/webdav/utils/webdav.js.map +1 -1
  675. package/server/applications/webdav/utils/xml.js +1 -5
  676. package/server/applications/webdav/utils/xml.js.map +1 -1
  677. package/server/applications/webdav/webdav.controller.js +1 -5
  678. package/server/applications/webdav/webdav.controller.js.map +1 -1
  679. package/server/applications/webdav/webdav.controller.spec.js +1 -5
  680. package/server/applications/webdav/webdav.controller.spec.js.map +1 -1
  681. package/server/applications/webdav/webdav.e2e-spec.js +1 -5
  682. package/server/applications/webdav/webdav.e2e-spec.js.map +1 -1
  683. package/server/applications/webdav/webdav.module.js +1 -5
  684. package/server/applications/webdav/webdav.module.js.map +1 -1
  685. package/server/authentication/auth.config.js +23 -123
  686. package/server/authentication/auth.config.js.map +1 -1
  687. package/server/authentication/auth.controller.js +27 -21
  688. package/server/authentication/auth.controller.js.map +1 -1
  689. package/server/authentication/auth.controller.spec.js +6 -10
  690. package/server/authentication/auth.controller.spec.js.map +1 -1
  691. package/server/authentication/auth.e2e-spec.js +1 -5
  692. package/server/authentication/auth.e2e-spec.js.map +1 -1
  693. package/server/authentication/auth.module.js +17 -20
  694. package/server/authentication/auth.module.js.map +1 -1
  695. package/server/authentication/{services/auth-manager.service.js → auth.service.js} +41 -18
  696. package/server/authentication/auth.service.js.map +1 -0
  697. package/server/authentication/{services/auth-manager.service.spec.js → auth.service.spec.js} +6 -10
  698. package/server/authentication/auth.service.spec.js.map +1 -0
  699. package/server/authentication/constants/auth.js +1 -5
  700. package/server/authentication/constants/auth.js.map +1 -1
  701. package/server/authentication/constants/routes.js +41 -30
  702. package/server/authentication/constants/routes.js.map +1 -1
  703. package/server/authentication/constants/scope.js +2 -5
  704. package/server/authentication/constants/scope.js.map +1 -1
  705. package/server/authentication/decorators/auth-token-optional.decorator.js +1 -5
  706. package/server/authentication/decorators/auth-token-optional.decorator.js.map +1 -1
  707. package/server/authentication/decorators/auth-token-skip.decorator.js +1 -5
  708. package/server/authentication/decorators/auth-token-skip.decorator.js.map +1 -1
  709. package/server/authentication/dto/login-response.dto.js +1 -10
  710. package/server/authentication/dto/login-response.dto.js.map +1 -1
  711. package/server/authentication/dto/token-response.dto.js +1 -5
  712. package/server/authentication/dto/token-response.dto.js.map +1 -1
  713. package/server/authentication/guards/auth-anonymous.guard.js +1 -5
  714. package/server/authentication/guards/auth-anonymous.guard.js.map +1 -1
  715. package/server/authentication/guards/auth-anonymous.guard.spec.js +1 -5
  716. package/server/authentication/guards/auth-anonymous.guard.spec.js.map +1 -1
  717. package/server/authentication/guards/auth-anonymous.strategy.js +1 -5
  718. package/server/authentication/guards/auth-anonymous.strategy.js.map +1 -1
  719. package/server/authentication/guards/auth-basic.guard.js +1 -5
  720. package/server/authentication/guards/auth-basic.guard.js.map +1 -1
  721. package/server/authentication/guards/auth-basic.guard.spec.js +13 -14
  722. package/server/authentication/guards/auth-basic.guard.spec.js.map +1 -1
  723. package/server/authentication/guards/auth-basic.strategy.js +10 -11
  724. package/server/authentication/guards/auth-basic.strategy.js.map +1 -1
  725. package/server/authentication/guards/auth-digest.guard.js +1 -5
  726. package/server/authentication/guards/auth-digest.guard.js.map +1 -1
  727. package/server/authentication/guards/auth-digest.strategy.js +1 -5
  728. package/server/authentication/guards/auth-digest.strategy.js.map +1 -1
  729. package/server/authentication/guards/auth-local.guard.js +1 -5
  730. package/server/authentication/guards/auth-local.guard.js.map +1 -1
  731. package/server/authentication/guards/auth-local.guard.spec.js +9 -13
  732. package/server/authentication/guards/auth-local.guard.spec.js.map +1 -1
  733. package/server/authentication/guards/auth-local.strategy.js +6 -10
  734. package/server/authentication/guards/auth-local.strategy.js.map +1 -1
  735. package/server/authentication/guards/auth-token-access.guard.js +1 -5
  736. package/server/authentication/guards/auth-token-access.guard.js.map +1 -1
  737. package/server/authentication/guards/auth-token-access.guard.spec.js +3 -7
  738. package/server/authentication/guards/auth-token-access.guard.spec.js.map +1 -1
  739. package/server/authentication/guards/auth-token-access.strategy.js +3 -7
  740. package/server/authentication/guards/auth-token-access.strategy.js.map +1 -1
  741. package/server/authentication/guards/auth-token-refresh.guard.js +1 -5
  742. package/server/authentication/guards/auth-token-refresh.guard.js.map +1 -1
  743. package/server/authentication/guards/auth-token-refresh.guard.spec.js +3 -7
  744. package/server/authentication/guards/auth-token-refresh.guard.spec.js.map +1 -1
  745. package/server/authentication/guards/auth-token-refresh.strategy.js +3 -7
  746. package/server/authentication/guards/auth-token-refresh.strategy.js.map +1 -1
  747. package/server/authentication/guards/implementations/http-basic.strategy.js +1 -5
  748. package/server/authentication/guards/implementations/http-basic.strategy.js.map +1 -1
  749. package/server/authentication/guards/implementations/http-digest.strategy.js +1 -5
  750. package/server/authentication/guards/implementations/http-digest.strategy.js.map +1 -1
  751. package/server/authentication/interfaces/auth-request.interface.js +1 -5
  752. package/server/authentication/interfaces/auth-request.interface.js.map +1 -1
  753. package/server/authentication/interfaces/jwt-payload.interface.js +1 -5
  754. package/server/authentication/interfaces/jwt-payload.interface.js.map +1 -1
  755. package/server/authentication/interfaces/token.interface.js +1 -5
  756. package/server/authentication/interfaces/token.interface.js.map +1 -1
  757. package/server/authentication/providers/auth-providers.constants.js +18 -0
  758. package/server/authentication/providers/auth-providers.constants.js.map +1 -0
  759. package/server/authentication/providers/auth-providers.models.js +14 -0
  760. package/server/authentication/providers/auth-providers.models.js.map +1 -0
  761. package/server/authentication/providers/auth-providers.utils.js +42 -0
  762. package/server/authentication/providers/auth-providers.utils.js.map +1 -0
  763. package/server/authentication/providers/ldap/auth-ldap.config.js +143 -0
  764. package/server/authentication/providers/ldap/auth-ldap.config.js.map +1 -0
  765. package/server/authentication/{constants/auth-ldap.js → providers/ldap/auth-ldap.constants.js} +12 -6
  766. package/server/authentication/providers/ldap/auth-ldap.constants.js.map +1 -0
  767. package/server/authentication/providers/ldap/auth-provider-ldap.service.js +506 -0
  768. package/server/authentication/providers/ldap/auth-provider-ldap.service.js.map +1 -0
  769. package/server/authentication/providers/ldap/auth-provider-ldap.service.spec.js +674 -0
  770. package/server/authentication/providers/ldap/auth-provider-ldap.service.spec.js.map +1 -0
  771. package/server/authentication/{services/auth-methods/auth-method-database.service.js → providers/mysql/auth-provider-mysql.service.js} +16 -14
  772. package/server/authentication/providers/mysql/auth-provider-mysql.service.js.map +1 -0
  773. package/server/authentication/{services/auth-methods/auth-method-database.service.spec.js → providers/mysql/auth-provider-mysql.service.spec.js} +15 -19
  774. package/server/authentication/providers/mysql/auth-provider-mysql.service.spec.js.map +1 -0
  775. package/server/authentication/providers/oidc/auth-oidc-desktop.constants.js +30 -0
  776. package/server/authentication/providers/oidc/auth-oidc-desktop.constants.js.map +1 -0
  777. package/server/authentication/providers/oidc/auth-oidc.config.js +149 -0
  778. package/server/authentication/providers/oidc/auth-oidc.config.js.map +1 -0
  779. package/server/authentication/providers/oidc/auth-oidc.constants.js +39 -0
  780. package/server/authentication/providers/oidc/auth-oidc.constants.js.map +1 -0
  781. package/server/authentication/providers/oidc/auth-oidc.controller.js +83 -0
  782. package/server/authentication/providers/oidc/auth-oidc.controller.js.map +1 -0
  783. package/server/authentication/providers/oidc/auth-oidc.interfaces.js +6 -0
  784. package/server/authentication/providers/oidc/auth-oidc.interfaces.js.map +1 -0
  785. package/server/authentication/providers/oidc/auth-provider-oidc.module.js +36 -0
  786. package/server/authentication/providers/oidc/auth-provider-oidc.module.js.map +1 -0
  787. package/server/authentication/providers/oidc/auth-provider-oidc.service.js +373 -0
  788. package/server/authentication/providers/oidc/auth-provider-oidc.service.js.map +1 -0
  789. package/server/authentication/providers/oidc/auth-provider-oidc.service.spec.js +270 -0
  790. package/server/authentication/providers/oidc/auth-provider-oidc.service.spec.js.map +1 -0
  791. package/server/authentication/{services/auth-methods/auth-method-two-fa.service.js → providers/two-fa/auth-provider-two-fa.service.js} +56 -38
  792. package/server/authentication/providers/two-fa/auth-provider-two-fa.service.js.map +1 -0
  793. package/server/authentication/{services/auth-methods/auth-method-two-fa.service.spec.js → providers/two-fa/auth-provider-two-fa.service.spec.js} +6 -10
  794. package/server/authentication/providers/two-fa/auth-provider-two-fa.service.spec.js.map +1 -0
  795. package/server/authentication/{guards → providers/two-fa}/auth-two-fa-guard.js +10 -14
  796. package/server/authentication/providers/two-fa/auth-two-fa-guard.js.map +1 -0
  797. package/server/authentication/providers/two-fa/auth-two-fa.config.js +57 -0
  798. package/server/authentication/providers/two-fa/auth-two-fa.config.js.map +1 -0
  799. package/server/authentication/{dto/two-fa-verify.dto.js → providers/two-fa/auth-two-fa.dtos.js} +8 -6
  800. package/server/authentication/providers/two-fa/auth-two-fa.dtos.js.map +1 -0
  801. package/server/authentication/providers/two-fa/auth-two-fa.interfaces.js +6 -0
  802. package/server/authentication/providers/two-fa/auth-two-fa.interfaces.js.map +1 -0
  803. package/server/authentication/utils/crypt-secret.js +1 -5
  804. package/server/authentication/utils/crypt-secret.js.map +1 -1
  805. package/server/common/constants.js +1 -5
  806. package/server/common/constants.js.map +1 -1
  807. package/server/common/decorators.js +1 -5
  808. package/server/common/decorators.js.map +1 -1
  809. package/server/common/functions.js +25 -9
  810. package/server/common/functions.js.map +1 -1
  811. package/server/common/i18n.js +1 -5
  812. package/server/common/i18n.js.map +1 -1
  813. package/server/common/image.js +1 -5
  814. package/server/common/image.js.map +1 -1
  815. package/server/common/interfaces.js +1 -5
  816. package/server/common/interfaces.js.map +1 -1
  817. package/server/common/qrcode.js +1 -5
  818. package/server/common/qrcode.js.map +1 -1
  819. package/server/common/shared.js +6 -6
  820. package/server/common/shared.js.map +1 -1
  821. package/server/configuration/config.constants.js +1 -5
  822. package/server/configuration/config.constants.js.map +1 -1
  823. package/server/configuration/config.environment.js +2 -6
  824. package/server/configuration/config.environment.js.map +1 -1
  825. package/server/configuration/config.interfaces.js +1 -5
  826. package/server/configuration/config.interfaces.js.map +1 -1
  827. package/server/configuration/config.loader.js +1 -5
  828. package/server/configuration/config.loader.js.map +1 -1
  829. package/server/configuration/config.logger.js +4 -8
  830. package/server/configuration/config.logger.js.map +1 -1
  831. package/server/configuration/config.validation.js +7 -5
  832. package/server/configuration/config.validation.js.map +1 -1
  833. package/server/infrastructure/cache/adapters/mysql-cache.adapter.js +9 -7
  834. package/server/infrastructure/cache/adapters/mysql-cache.adapter.js.map +1 -1
  835. package/server/infrastructure/cache/adapters/redis-cache.adapter.js +1 -5
  836. package/server/infrastructure/cache/adapters/redis-cache.adapter.js.map +1 -1
  837. package/server/infrastructure/cache/cache.config.js +1 -5
  838. package/server/infrastructure/cache/cache.config.js.map +1 -1
  839. package/server/infrastructure/cache/cache.decorator.js +9 -7
  840. package/server/infrastructure/cache/cache.decorator.js.map +1 -1
  841. package/server/infrastructure/cache/cache.e2e-spec.js +1 -5
  842. package/server/infrastructure/cache/cache.e2e-spec.js.map +1 -1
  843. package/server/infrastructure/cache/cache.module.js +1 -5
  844. package/server/infrastructure/cache/cache.module.js.map +1 -1
  845. package/server/infrastructure/cache/schemas/mysql-cache.interface.js +1 -5
  846. package/server/infrastructure/cache/schemas/mysql-cache.interface.js.map +1 -1
  847. package/server/infrastructure/cache/schemas/mysql-cache.schema.js +1 -5
  848. package/server/infrastructure/cache/schemas/mysql-cache.schema.js.map +1 -1
  849. package/server/infrastructure/cache/services/cache.service.js +1 -5
  850. package/server/infrastructure/cache/services/cache.service.js.map +1 -1
  851. package/server/infrastructure/context/context.module.js +1 -5
  852. package/server/infrastructure/context/context.module.js.map +1 -1
  853. package/server/infrastructure/context/interceptors/context.interceptor.js +1 -5
  854. package/server/infrastructure/context/interceptors/context.interceptor.js.map +1 -1
  855. package/server/infrastructure/context/interceptors/context.interceptor.spec.js +2 -6
  856. package/server/infrastructure/context/interceptors/context.interceptor.spec.js.map +1 -1
  857. package/server/infrastructure/context/interfaces/context-store.interface.js +1 -5
  858. package/server/infrastructure/context/interfaces/context-store.interface.js.map +1 -1
  859. package/server/infrastructure/context/services/context-manager.service.js +1 -5
  860. package/server/infrastructure/context/services/context-manager.service.js.map +1 -1
  861. package/server/infrastructure/context/services/context-manager.service.spec.js +1 -5
  862. package/server/infrastructure/context/services/context-manager.service.spec.js.map +1 -1
  863. package/server/infrastructure/database/columns.js +1 -5
  864. package/server/infrastructure/database/columns.js.map +1 -1
  865. package/server/infrastructure/database/configuration.js +1 -5
  866. package/server/infrastructure/database/configuration.js.map +1 -1
  867. package/server/infrastructure/database/constants.js +2 -6
  868. package/server/infrastructure/database/constants.js.map +1 -1
  869. package/server/infrastructure/database/database.config.js +1 -5
  870. package/server/infrastructure/database/database.config.js.map +1 -1
  871. package/server/infrastructure/database/database.logger.js +1 -5
  872. package/server/infrastructure/database/database.logger.js.map +1 -1
  873. package/server/infrastructure/database/database.module.js +1 -5
  874. package/server/infrastructure/database/database.module.js.map +1 -1
  875. package/server/infrastructure/database/interfaces/database.interface.js +1 -5
  876. package/server/infrastructure/database/interfaces/database.interface.js.map +1 -1
  877. package/server/infrastructure/database/schema.js +1 -5
  878. package/server/infrastructure/database/schema.js.map +1 -1
  879. package/server/infrastructure/database/scripts/create-user.js +1 -5
  880. package/server/infrastructure/database/scripts/create-user.js.map +1 -1
  881. package/server/infrastructure/database/scripts/db.js +1 -5
  882. package/server/infrastructure/database/scripts/db.js.map +1 -1
  883. package/server/infrastructure/database/scripts/seed/main.js +1 -5
  884. package/server/infrastructure/database/scripts/seed/main.js.map +1 -1
  885. package/server/infrastructure/database/scripts/seed/usersgroups.js +1 -5
  886. package/server/infrastructure/database/scripts/seed/usersgroups.js.map +1 -1
  887. package/server/infrastructure/database/utils.js +1 -5
  888. package/server/infrastructure/database/utils.js.map +1 -1
  889. package/server/infrastructure/mailer/interfaces/mail.interface.js +1 -5
  890. package/server/infrastructure/mailer/interfaces/mail.interface.js.map +1 -1
  891. package/server/infrastructure/mailer/mailer.config.js +1 -5
  892. package/server/infrastructure/mailer/mailer.config.js.map +1 -1
  893. package/server/infrastructure/mailer/mailer.module.js +1 -5
  894. package/server/infrastructure/mailer/mailer.module.js.map +1 -1
  895. package/server/infrastructure/mailer/mailer.service.js +1 -5
  896. package/server/infrastructure/mailer/mailer.service.js.map +1 -1
  897. package/server/infrastructure/mailer/mailer.service.spec.js +2 -6
  898. package/server/infrastructure/mailer/mailer.service.spec.js.map +1 -1
  899. package/server/infrastructure/scheduler/scheduler.constants.js +1 -5
  900. package/server/infrastructure/scheduler/scheduler.constants.js.map +1 -1
  901. package/server/infrastructure/scheduler/scheduler.module.js +1 -5
  902. package/server/infrastructure/scheduler/scheduler.module.js.map +1 -1
  903. package/server/infrastructure/websocket/adapters/cluster.adapter.js +1 -5
  904. package/server/infrastructure/websocket/adapters/cluster.adapter.js.map +1 -1
  905. package/server/infrastructure/websocket/adapters/redis.adapter.js +1 -5
  906. package/server/infrastructure/websocket/adapters/redis.adapter.js.map +1 -1
  907. package/server/infrastructure/websocket/adapters/web-socket.adapter.js +1 -5
  908. package/server/infrastructure/websocket/adapters/web-socket.adapter.js.map +1 -1
  909. package/server/infrastructure/websocket/decorators/web-socket-user.decorator.js +1 -5
  910. package/server/infrastructure/websocket/decorators/web-socket-user.decorator.js.map +1 -1
  911. package/server/infrastructure/websocket/interfaces/auth-socket-io.interface.js +1 -5
  912. package/server/infrastructure/websocket/interfaces/auth-socket-io.interface.js.map +1 -1
  913. package/server/infrastructure/websocket/utils.js +1 -5
  914. package/server/infrastructure/websocket/utils.js.map +1 -1
  915. package/server/infrastructure/websocket/web-socket.config.js +1 -5
  916. package/server/infrastructure/websocket/web-socket.config.js.map +1 -1
  917. package/server/main.js +5 -0
  918. package/server/main.js.map +1 -1
  919. package/static/assets/pdfjs/build/pdf.mjs +724 -745
  920. package/static/assets/pdfjs/build/pdf.mjs.map +1 -1
  921. package/static/assets/pdfjs/build/pdf.sandbox.mjs +2 -2
  922. package/static/assets/pdfjs/build/pdf.worker.mjs +706 -193
  923. package/static/assets/pdfjs/build/pdf.worker.mjs.map +1 -1
  924. package/static/assets/pdfjs/version +1 -1
  925. package/static/assets/pdfjs/web/locale/dsb/viewer.ftl +5 -5
  926. package/static/assets/pdfjs/web/locale/en-US/viewer.ftl +1 -0
  927. package/static/assets/pdfjs/web/locale/fur/viewer.ftl +5 -0
  928. package/static/assets/pdfjs/web/locale/kk/viewer.ftl +28 -0
  929. package/static/assets/pdfjs/web/locale/ml/viewer.ftl +4 -0
  930. package/static/assets/pdfjs/web/locale/ru/viewer.ftl +3 -3
  931. package/static/assets/pdfjs/web/viewer.css +207 -65
  932. package/static/assets/pdfjs/web/viewer.html +11 -10
  933. package/static/assets/pdfjs/web/viewer.mjs +850 -270
  934. package/static/assets/pdfjs/web/viewer.mjs.map +1 -1
  935. package/static/assets/pdfjs/web/wasm/LICENSE_JBIG2 +196 -0
  936. package/static/assets/pdfjs/web/wasm/LICENSE_PDFJS_JBIG2 +13 -0
  937. package/static/assets/pdfjs/web/wasm/jbig2.wasm +0 -0
  938. package/static/chunk-22TZP6HW.js +1 -0
  939. package/static/{chunk-G7TLKY5X.js → chunk-27ATUHBH.js} +1 -1
  940. package/static/{chunk-CQOQXVYG.js → chunk-2CKLZ3FM.js} +1 -1
  941. package/static/{chunk-FVFOX6OP.js → chunk-2QZPX7LO.js} +1 -1
  942. package/static/{chunk-32AVRWC3.js → chunk-2R6IBBPZ.js} +1 -1
  943. package/static/{chunk-76JDXKD7.js → chunk-4FIGEBNL.js} +1 -1
  944. package/static/{chunk-ACCGBDUZ.js → chunk-4P3JABAP.js} +4 -4
  945. package/static/chunk-5CZOSAMZ.js +1 -0
  946. package/static/{chunk-2PDTP6N4.js → chunk-677WUBCT.js} +1 -1
  947. package/static/{chunk-K5VO5XTG.js → chunk-74CAHBFM.js} +1 -1
  948. package/static/{chunk-WTWGBCFO.js → chunk-7GWW6MJO.js} +1 -1
  949. package/static/{chunk-JXZOYX4N.js → chunk-A4UGPSWX.js} +1 -1
  950. package/static/{chunk-44D7RWET.js → chunk-AHO37FKW.js} +1 -1
  951. package/static/{chunk-WB2DECOA.js → chunk-AQCXMKP3.js} +1 -1
  952. package/static/chunk-B6PDYCRO.js +3 -0
  953. package/static/{chunk-JVGN5V5E.js → chunk-CU76ATCF.js} +1 -1
  954. package/static/{chunk-Q5K4ZUHK.js → chunk-CWYHOPOP.js} +1 -1
  955. package/static/{chunk-IOX3ANJR.js → chunk-E5WI5725.js} +1 -1
  956. package/static/{chunk-NUG54Y65.js → chunk-FC5HTKVM.js} +1 -1
  957. package/static/{chunk-LRK6RNPR.js → chunk-FOSM7EYI.js} +1 -1
  958. package/static/{chunk-B4UP2EQM.js → chunk-GAZO25PI.js} +1 -1
  959. package/static/{chunk-3WBCGTYW.js → chunk-GB7ABR5N.js} +1 -1
  960. package/static/{chunk-XFZ37WVK.js → chunk-GEHFKZQ5.js} +1 -1
  961. package/static/{chunk-4CQLN5HL.js → chunk-GQFMWVFD.js} +1 -1
  962. package/static/{chunk-YBEH442D.js → chunk-GVNTC564.js} +1 -1
  963. package/static/{chunk-WO6GBHBZ.js → chunk-HGL3NYP2.js} +2 -2
  964. package/static/{chunk-IAWRRL6J.js → chunk-HLIWPWRA.js} +1 -1
  965. package/static/{chunk-6LHJBXUE.js → chunk-HNYB3M4S.js} +1 -1
  966. package/static/{chunk-5WTIUYFF.js → chunk-HUXAUQMN.js} +1 -1
  967. package/static/{chunk-VBH3Y2M5.js → chunk-I2XA6PPK.js} +1 -1
  968. package/static/{chunk-I3XI72AV.js → chunk-ISV3BO6R.js} +1 -1
  969. package/static/{chunk-P7X53PEP.js → chunk-JV3AGU5B.js} +1 -1
  970. package/static/{chunk-ZFAXICUH.js → chunk-K25E7YGG.js} +1 -1
  971. package/static/{chunk-CAD3RHAY.js → chunk-K46PUTZB.js} +1 -1
  972. package/static/{chunk-GYFLVCFN.js → chunk-KERFLJ56.js} +1 -7
  973. package/static/{chunk-WSTGWBVW.js → chunk-KJD3KFF3.js} +1 -1
  974. package/static/{chunk-R4P4NBUL.js → chunk-KPKSI23S.js} +1 -1
  975. package/static/{chunk-M7IFVC5D.js → chunk-KZS7CTNR.js} +1 -1
  976. package/static/{chunk-P2IJCGWD.js → chunk-L5IHUVXL.js} +1 -1
  977. package/static/{chunk-DXESTGOH.js → chunk-L7RRX2M3.js} +1 -1
  978. package/static/{chunk-WE3ISL7O.js → chunk-LGWJ2WKU.js} +1 -1
  979. package/static/{chunk-OKI3N5AI.js → chunk-MLC7JK2H.js} +2 -2
  980. package/static/{chunk-NG7QWUFM.js → chunk-MOHNYW2A.js} +1 -1
  981. package/static/{chunk-SQYWQUL4.js → chunk-NCDUOVMW.js} +1 -1
  982. package/static/chunk-NGUAJIGI.js +1 -0
  983. package/static/{chunk-OYPJUVD6.js → chunk-NIPP6JDI.js} +1 -1
  984. package/static/{chunk-Y433XOAJ.js → chunk-NMTBMHUL.js} +1 -1
  985. package/static/chunk-O4XXMZFX.js +4 -0
  986. package/static/{chunk-IOP3ON2H.js → chunk-OANZITPM.js} +1 -1
  987. package/static/{chunk-WJFKUJJX.js → chunk-OGE4SAHU.js} +1 -1
  988. package/static/{chunk-7EHP6HO3.js → chunk-OI3ME22C.js} +1 -1
  989. package/static/{chunk-D4XDSS6P.js → chunk-Q3EGCMF5.js} +1 -1
  990. package/static/{chunk-TQBCGNFG.js → chunk-QF2NSHZA.js} +1 -1
  991. package/static/{chunk-RBBMH2FM.js → chunk-QKN6LAAA.js} +1 -1
  992. package/static/{chunk-J45SD6RC.js → chunk-QRFESU5O.js} +2 -2
  993. package/static/chunk-QVRVFYJH.js +1 -0
  994. package/static/{chunk-BAHNSFET.js → chunk-RFJIPIOK.js} +1 -1
  995. package/static/{chunk-IZ7TCHUW.js → chunk-RLL634K4.js} +1 -1
  996. package/static/{chunk-MOWL3ILT.js → chunk-RS2OFKWP.js} +1 -1
  997. package/static/{chunk-WM56LPJ3.js → chunk-RWAAC3A4.js} +1 -1
  998. package/static/{chunk-F3GMI6OL.js → chunk-S5Y64DDS.js} +1 -1
  999. package/static/{chunk-VNNLMUK7.js → chunk-SLG5KDU6.js} +1 -1
  1000. package/static/chunk-TJ4CVFEL.js +1 -0
  1001. package/static/{chunk-SAN35XTD.js → chunk-TWCGKSYE.js} +1 -1
  1002. package/static/{chunk-EUKVDBBK.js → chunk-UMDRE4S7.js} +1 -1
  1003. package/static/{chunk-YKCUUBZP.js → chunk-VRIOLRYR.js} +4 -4
  1004. package/static/chunk-VS4O2XDP.js +1 -0
  1005. package/static/{chunk-2MRTBCSV.js → chunk-VSBFNFOM.js} +1 -1
  1006. package/static/{chunk-CTPKDDVI.js → chunk-WN4WXCVK.js} +1 -1
  1007. package/static/{chunk-2AA3WMW5.js → chunk-WX7RXW7K.js} +1 -1
  1008. package/static/{chunk-J2BUPRCZ.js → chunk-XC4POKR3.js} +2 -2
  1009. package/static/{chunk-AXLDYLIO.js → chunk-Y4AUYQTG.js} +1 -1
  1010. package/static/{chunk-RPHWIW7S.js → chunk-YMIXHRJQ.js} +1 -7
  1011. package/static/{chunk-AFNUBQMD.js → chunk-ZUNKFAKP.js} +1 -1
  1012. package/static/index.html +3 -3
  1013. package/static/main-QN4UCOC5.js +5 -0
  1014. package/static/{styles-PD6764CP.css → styles-46GLIE7Y.css} +1 -1
  1015. package/server/authentication/constants/auth-ldap.js.map +0 -1
  1016. package/server/authentication/dto/two-fa-verify.dto.js.map +0 -1
  1017. package/server/authentication/guards/auth-two-fa-guard.js.map +0 -1
  1018. package/server/authentication/interfaces/two-fa-setup.interface.js +0 -10
  1019. package/server/authentication/interfaces/two-fa-setup.interface.js.map +0 -1
  1020. package/server/authentication/models/auth-method.js +0 -18
  1021. package/server/authentication/models/auth-method.js.map +0 -1
  1022. package/server/authentication/services/auth-manager.service.js.map +0 -1
  1023. package/server/authentication/services/auth-manager.service.spec.js.map +0 -1
  1024. package/server/authentication/services/auth-methods/auth-method-database.service.js.map +0 -1
  1025. package/server/authentication/services/auth-methods/auth-method-database.service.spec.js.map +0 -1
  1026. package/server/authentication/services/auth-methods/auth-method-ldap.service.js +0 -326
  1027. package/server/authentication/services/auth-methods/auth-method-ldap.service.js.map +0 -1
  1028. package/server/authentication/services/auth-methods/auth-method-ldap.service.spec.js +0 -534
  1029. package/server/authentication/services/auth-methods/auth-method-ldap.service.spec.js.map +0 -1
  1030. package/server/authentication/services/auth-methods/auth-method-two-fa.service.js.map +0 -1
  1031. package/server/authentication/services/auth-methods/auth-method-two-fa.service.spec.js.map +0 -1
  1032. package/static/chunk-3I6NPM62.js +0 -1
  1033. package/static/chunk-GCPX3EFC.js +0 -1
  1034. package/static/chunk-KBUIDMCK.js +0 -1
  1035. package/static/chunk-KY6MNZLC.js +0 -1
  1036. package/static/chunk-MPWD4VMY.js +0 -1
  1037. package/static/chunk-QQAF3MLL.js +0 -1
  1038. package/static/chunk-VHZKPUWE.js +0 -4
  1039. package/static/chunk-YWLMFOB4.js +0 -3
  1040. package/static/main-ZXEMCBMI.js +0 -11
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/applications/spaces/constants/cache.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\n// cache quota key = `(quota-user|quota-space)-${id}` => number\nexport const CACHE_QUOTA_USER_PREFIX = 'quota-user'\nexport const CACHE_QUOTA_SPACE_PREFIX = 'quota-space'\nexport const CACHE_QUOTA_SHARE_PREFIX = 'quota-share'\nexport const CACHE_QUOTA_TTL = 86400 // 1 day\n"],"names":["CACHE_QUOTA_SHARE_PREFIX","CACHE_QUOTA_SPACE_PREFIX","CACHE_QUOTA_TTL","CACHE_QUOTA_USER_PREFIX"],"mappings":"AAAA;;;;CAIC,GAED,+DAA+D;;;;;;;;;;;;QAGlDA;eAAAA;;QADAC;eAAAA;;QAEAC;eAAAA;;QAHAC;eAAAA;;;AAAN,MAAMA,0BAA0B;AAChC,MAAMF,2BAA2B;AACjC,MAAMD,2BAA2B;AACjC,MAAME,kBAAkB,MAAM,QAAQ"}
1
+ {"version":3,"sources":["../../../../../backend/src/applications/spaces/constants/cache.ts"],"sourcesContent":["// cache quota key = `(quota-user|quota-space)-${id}` => number\nexport const CACHE_QUOTA_USER_PREFIX = 'quota-user'\nexport const CACHE_QUOTA_SPACE_PREFIX = 'quota-space'\nexport const CACHE_QUOTA_SHARE_PREFIX = 'quota-share'\nexport const CACHE_QUOTA_TTL = 86400 // 1 day\n"],"names":["CACHE_QUOTA_SHARE_PREFIX","CACHE_QUOTA_SPACE_PREFIX","CACHE_QUOTA_TTL","CACHE_QUOTA_USER_PREFIX"],"mappings":"AAAA,+DAA+D;;;;;;;;;;;;QAGlDA;eAAAA;;QADAC;eAAAA;;QAEAC;eAAAA;;QAHAC;eAAAA;;;AAAN,MAAMA,0BAA0B;AAChC,MAAMF,2BAA2B;AACjC,MAAMD,2BAA2B;AACjC,MAAME,kBAAkB,MAAM,QAAQ"}
@@ -1,8 +1,4 @@
1
- /*
2
- * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
3
- * This file is part of Sync-in | The open source file sync and share solution
4
- * See the LICENSE file for licensing details
5
- */ "use strict";
1
+ "use strict";
6
2
  Object.defineProperty(exports, "__esModule", {
7
3
  value: true
8
4
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/applications/spaces/constants/routes.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport { APP_BASE_ROUTE } from '../../applications.constants'\nimport { SPACE_REPOSITORY } from './spaces'\n\nexport const SPACES_BASE_ROUTE = 'spaces'\nexport const SPACES_ROUTE = {\n BASE: `${APP_BASE_ROUTE}/${SPACES_BASE_ROUTE}`,\n BROWSE: 'browse',\n TREE: 'tree',\n LIST: 'list',\n ROOTS: 'roots',\n ROOT_CHECK: 'root/check',\n LINKS: 'links',\n TRASH: SPACE_REPOSITORY.TRASH,\n SHARES: SPACE_REPOSITORY.SHARES\n} as const\n\nexport const API_SPACES_BROWSE = `${SPACES_ROUTE.BASE}/${SPACES_ROUTE.BROWSE}`\nexport const API_SPACES_TREE = `${SPACES_ROUTE.BASE}/${SPACES_ROUTE.TREE}`\nexport const API_SPACES_LIST = `${SPACES_ROUTE.BASE}/${SPACES_ROUTE.LIST}`\nexport const API_SPACES_TRASH_BINS_LIST = `${SPACES_ROUTE.BASE}/${SPACES_ROUTE.TRASH}/${SPACES_ROUTE.LIST}`\nexport const API_SPACES_ROOT_CHECK = `${SPACES_ROUTE.BASE}/${SPACES_ROUTE.ROOT_CHECK}`\n"],"names":["API_SPACES_BROWSE","API_SPACES_LIST","API_SPACES_ROOT_CHECK","API_SPACES_TRASH_BINS_LIST","API_SPACES_TREE","SPACES_BASE_ROUTE","SPACES_ROUTE","BASE","APP_BASE_ROUTE","BROWSE","TREE","LIST","ROOTS","ROOT_CHECK","LINKS","TRASH","SPACE_REPOSITORY","SHARES"],"mappings":"AAAA;;;;CAIC;;;;;;;;;;;QAkBYA;eAAAA;;QAEAC;eAAAA;;QAEAC;eAAAA;;QADAC;eAAAA;;QAFAC;eAAAA;;QAdAC;eAAAA;;QACAC;eAAAA;;;uCAJkB;wBACE;AAE1B,MAAMD,oBAAoB;AAC1B,MAAMC,eAAe;IAC1BC,MAAM,GAAGC,qCAAc,CAAC,CAAC,EAAEH,mBAAmB;IAC9CI,QAAQ;IACRC,MAAM;IACNC,MAAM;IACNC,OAAO;IACPC,YAAY;IACZC,OAAO;IACPC,OAAOC,wBAAgB,CAACD,KAAK;IAC7BE,QAAQD,wBAAgB,CAACC,MAAM;AACjC;AAEO,MAAMjB,oBAAoB,GAAGM,aAAaC,IAAI,CAAC,CAAC,EAAED,aAAaG,MAAM,EAAE;AACvE,MAAML,kBAAkB,GAAGE,aAAaC,IAAI,CAAC,CAAC,EAAED,aAAaI,IAAI,EAAE;AACnE,MAAMT,kBAAkB,GAAGK,aAAaC,IAAI,CAAC,CAAC,EAAED,aAAaK,IAAI,EAAE;AACnE,MAAMR,6BAA6B,GAAGG,aAAaC,IAAI,CAAC,CAAC,EAAED,aAAaS,KAAK,CAAC,CAAC,EAAET,aAAaK,IAAI,EAAE;AACpG,MAAMT,wBAAwB,GAAGI,aAAaC,IAAI,CAAC,CAAC,EAAED,aAAaO,UAAU,EAAE"}
1
+ {"version":3,"sources":["../../../../../backend/src/applications/spaces/constants/routes.ts"],"sourcesContent":["import { APP_BASE_ROUTE } from '../../applications.constants'\nimport { SPACE_REPOSITORY } from './spaces'\n\nexport const SPACES_BASE_ROUTE = 'spaces'\nexport const SPACES_ROUTE = {\n BASE: `${APP_BASE_ROUTE}/${SPACES_BASE_ROUTE}`,\n BROWSE: 'browse',\n TREE: 'tree',\n LIST: 'list',\n ROOTS: 'roots',\n ROOT_CHECK: 'root/check',\n LINKS: 'links',\n TRASH: SPACE_REPOSITORY.TRASH,\n SHARES: SPACE_REPOSITORY.SHARES\n} as const\n\nexport const API_SPACES_BROWSE = `${SPACES_ROUTE.BASE}/${SPACES_ROUTE.BROWSE}`\nexport const API_SPACES_TREE = `${SPACES_ROUTE.BASE}/${SPACES_ROUTE.TREE}`\nexport const API_SPACES_LIST = `${SPACES_ROUTE.BASE}/${SPACES_ROUTE.LIST}`\nexport const API_SPACES_TRASH_BINS_LIST = `${SPACES_ROUTE.BASE}/${SPACES_ROUTE.TRASH}/${SPACES_ROUTE.LIST}`\nexport const API_SPACES_ROOT_CHECK = `${SPACES_ROUTE.BASE}/${SPACES_ROUTE.ROOT_CHECK}`\n"],"names":["API_SPACES_BROWSE","API_SPACES_LIST","API_SPACES_ROOT_CHECK","API_SPACES_TRASH_BINS_LIST","API_SPACES_TREE","SPACES_BASE_ROUTE","SPACES_ROUTE","BASE","APP_BASE_ROUTE","BROWSE","TREE","LIST","ROOTS","ROOT_CHECK","LINKS","TRASH","SPACE_REPOSITORY","SHARES"],"mappings":";;;;;;;;;;;QAgBaA;eAAAA;;QAEAC;eAAAA;;QAEAC;eAAAA;;QADAC;eAAAA;;QAFAC;eAAAA;;QAdAC;eAAAA;;QACAC;eAAAA;;;uCAJkB;wBACE;AAE1B,MAAMD,oBAAoB;AAC1B,MAAMC,eAAe;IAC1BC,MAAM,GAAGC,qCAAc,CAAC,CAAC,EAAEH,mBAAmB;IAC9CI,QAAQ;IACRC,MAAM;IACNC,MAAM;IACNC,OAAO;IACPC,YAAY;IACZC,OAAO;IACPC,OAAOC,wBAAgB,CAACD,KAAK;IAC7BE,QAAQD,wBAAgB,CAACC,MAAM;AACjC;AAEO,MAAMjB,oBAAoB,GAAGM,aAAaC,IAAI,CAAC,CAAC,EAAED,aAAaG,MAAM,EAAE;AACvE,MAAML,kBAAkB,GAAGE,aAAaC,IAAI,CAAC,CAAC,EAAED,aAAaI,IAAI,EAAE;AACnE,MAAMT,kBAAkB,GAAGK,aAAaC,IAAI,CAAC,CAAC,EAAED,aAAaK,IAAI,EAAE;AACnE,MAAMR,6BAA6B,GAAGG,aAAaC,IAAI,CAAC,CAAC,EAAED,aAAaS,KAAK,CAAC,CAAC,EAAET,aAAaK,IAAI,EAAE;AACpG,MAAMT,wBAAwB,GAAGI,aAAaC,IAAI,CAAC,CAAC,EAAED,aAAaO,UAAU,EAAE"}
@@ -1,8 +1,4 @@
1
- /*
2
- * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
3
- * This file is part of Sync-in | The open source file sync and share solution
4
- * See the LICENSE file for licensing details
5
- */ "use strict";
1
+ "use strict";
6
2
  Object.defineProperty(exports, "__esModule", {
7
3
  value: true
8
4
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/applications/spaces/constants/spaces.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nexport const SPACE_MAX_DISABLED_DAYS = 30 //days\n\nexport const SPACE_PERMS_SEP = ':'\n\nexport enum SPACE_OPERATION {\n ADD = 'a',\n MODIFY = 'm',\n DELETE = 'd', // MOVE is not allowed if no DELETE permission\n SHARE_INSIDE = 'si', // Inside a space (add a space root)\n SHARE_OUTSIDE = 'so' // Outside a space (create a share)\n}\n\nexport enum SPACE_REPOSITORY {\n FILES = 'files',\n TRASH = 'trash',\n SHARES = 'shares'\n}\n\nexport enum SPACE_ALIAS {\n PERSONAL = 'personal',\n SPACES = 'spaces',\n SHARES = SPACE_REPOSITORY.SHARES,\n TRASH = SPACE_REPOSITORY.TRASH\n}\n\nexport enum SPACE_ROLE {\n IS_MEMBER,\n IS_MANAGER\n}\n\nexport const SPACE_ALL_OPERATIONS: string = Object.values(SPACE_OPERATION).sort().join(SPACE_PERMS_SEP)\n\nexport const SPACE_HTTP_PERMISSION: Record<string, SPACE_OPERATION> = {\n GET: null,\n POST: SPACE_OPERATION.ADD,\n PUT: SPACE_OPERATION.ADD,\n MKCOL: SPACE_OPERATION.ADD,\n PATCH: SPACE_OPERATION.MODIFY,\n PROPPATCH: SPACE_OPERATION.MODIFY,\n DELETE: SPACE_OPERATION.DELETE,\n MOVE: SPACE_OPERATION.DELETE, // `DELETE` permission must be checked on the source, `ADD` permission must be checked on the destination\n COPY: null, // `ADD` permission must be checked on destination\n LOCK: SPACE_OPERATION.MODIFY,\n UNLOCK: SPACE_OPERATION.MODIFY\n} as const\n\nexport const SPACE_PERSONAL = {\n id: 0,\n alias: SPACE_ALIAS.PERSONAL,\n name: SPACE_ALIAS.PERSONAL,\n permissions: '' // by default, no rights are given on the space unless a resource is targeted\n} as const\n\nexport const SPACE_SHARES = {\n // this space lists the shares\n id: 0,\n alias: SPACE_REPOSITORY.SHARES,\n name: SPACE_REPOSITORY.SHARES,\n permissions: '' // by default, no rights are given on the share unless a resource is targeted\n} as const\n"],"names":["SPACE_ALIAS","SPACE_ALL_OPERATIONS","SPACE_HTTP_PERMISSION","SPACE_MAX_DISABLED_DAYS","SPACE_OPERATION","SPACE_PERMS_SEP","SPACE_PERSONAL","SPACE_REPOSITORY","SPACE_ROLE","SPACE_SHARES","Object","values","sort","join","GET","POST","PUT","MKCOL","PATCH","PROPPATCH","DELETE","MOVE","COPY","LOCK","UNLOCK","id","alias","name","permissions"],"mappings":"AAAA;;;;CAIC;;;;;;;;;;;QAoBWA;eAAAA;;QAYCC;eAAAA;;QAEAC;eAAAA;;QAhCAC;eAAAA;;QAIDC;eAAAA;;QAFCC;eAAAA;;QA4CAC;eAAAA;;QAlCDC;eAAAA;;QAaAC;eAAAA;;QA4BCC;eAAAA;;;AArDN,MAAMN,0BAA0B,GAAG,MAAM;;AAEzC,MAAME,kBAAkB;AAExB,IAAA,AAAKD,yCAAAA;;;;;6CAKW,mCAAmC;WAL9CA;;AAQL,IAAA,AAAKG,0CAAAA;;;;WAAAA;;AAML,IAAA,AAAKP,qCAAAA;;;;;WAAAA;;AAOL,IAAA,AAAKQ,oCAAAA;;;WAAAA;;AAKL,MAAMP,uBAA+BS,OAAOC,MAAM,CAACP,iBAAiBQ,IAAI,GAAGC,IAAI,CAACR;AAEhF,MAAMH,wBAAyD;IACpEY,KAAK;IACLC,IAAI;IACJC,GAAG;IACHC,KAAK;IACLC,KAAK;IACLC,SAAS;IACTC,MAAM;IACNC,IAAI;IACJC,MAAM;IACNC,IAAI;IACJC,MAAM;AACR;AAEO,MAAMlB,iBAAiB;IAC5BmB,IAAI;IACJC,KAAK;IACLC,IAAI;IACJC,aAAa,GAAG,6EAA6E;AAC/F;AAEO,MAAMnB,eAAe;IAC1B,8BAA8B;IAC9BgB,IAAI;IACJC,KAAK;IACLC,IAAI;IACJC,aAAa,GAAG,6EAA6E;AAC/F"}
1
+ {"version":3,"sources":["../../../../../backend/src/applications/spaces/constants/spaces.ts"],"sourcesContent":["export const SPACE_MAX_DISABLED_DAYS = 30 //days\n\nexport const SPACE_PERMS_SEP = ':'\n\nexport enum SPACE_OPERATION {\n ADD = 'a',\n MODIFY = 'm',\n DELETE = 'd', // MOVE is not allowed if no DELETE permission\n SHARE_INSIDE = 'si', // Inside a space (add a space root)\n SHARE_OUTSIDE = 'so' // Outside a space (create a share)\n}\n\nexport enum SPACE_REPOSITORY {\n FILES = 'files',\n TRASH = 'trash',\n SHARES = 'shares'\n}\n\nexport enum SPACE_ALIAS {\n PERSONAL = 'personal',\n SPACES = 'spaces',\n SHARES = SPACE_REPOSITORY.SHARES,\n TRASH = SPACE_REPOSITORY.TRASH\n}\n\nexport enum SPACE_ROLE {\n IS_MEMBER,\n IS_MANAGER\n}\n\nexport const SPACE_ALL_OPERATIONS: string = Object.values(SPACE_OPERATION).sort().join(SPACE_PERMS_SEP)\n\nexport const SPACE_HTTP_PERMISSION: Record<string, SPACE_OPERATION> = {\n GET: null,\n POST: SPACE_OPERATION.ADD,\n PUT: SPACE_OPERATION.ADD,\n MKCOL: SPACE_OPERATION.ADD,\n PATCH: SPACE_OPERATION.MODIFY,\n PROPPATCH: SPACE_OPERATION.MODIFY,\n DELETE: SPACE_OPERATION.DELETE,\n MOVE: SPACE_OPERATION.DELETE, // `DELETE` permission must be checked on the source, `ADD` permission must be checked on the destination\n COPY: null, // `ADD` permission must be checked on destination\n LOCK: SPACE_OPERATION.MODIFY,\n UNLOCK: SPACE_OPERATION.MODIFY\n} as const\n\nexport const SPACE_PERSONAL = {\n id: 0,\n alias: SPACE_ALIAS.PERSONAL,\n name: SPACE_ALIAS.PERSONAL,\n permissions: '' // by default, no rights are given on the space unless a resource is targeted\n} as const\n\nexport const SPACE_SHARES = {\n // this space lists the shares\n id: 0,\n alias: SPACE_REPOSITORY.SHARES,\n name: SPACE_REPOSITORY.SHARES,\n permissions: '' // by default, no rights are given on the share unless a resource is targeted\n} as const\n"],"names":["SPACE_ALIAS","SPACE_ALL_OPERATIONS","SPACE_HTTP_PERMISSION","SPACE_MAX_DISABLED_DAYS","SPACE_OPERATION","SPACE_PERMS_SEP","SPACE_PERSONAL","SPACE_REPOSITORY","SPACE_ROLE","SPACE_SHARES","Object","values","sort","join","GET","POST","PUT","MKCOL","PATCH","PROPPATCH","DELETE","MOVE","COPY","LOCK","UNLOCK","id","alias","name","permissions"],"mappings":";;;;;;;;;;;QAkBYA;eAAAA;;QAYCC;eAAAA;;QAEAC;eAAAA;;QAhCAC;eAAAA;;QAIDC;eAAAA;;QAFCC;eAAAA;;QA4CAC;eAAAA;;QAlCDC;eAAAA;;QAaAC;eAAAA;;QA4BCC;eAAAA;;;AArDN,MAAMN,0BAA0B,GAAG,MAAM;;AAEzC,MAAME,kBAAkB;AAExB,IAAA,AAAKD,yCAAAA;;;;;6CAKW,mCAAmC;WAL9CA;;AAQL,IAAA,AAAKG,0CAAAA;;;;WAAAA;;AAML,IAAA,AAAKP,qCAAAA;;;;;WAAAA;;AAOL,IAAA,AAAKQ,oCAAAA;;;WAAAA;;AAKL,MAAMP,uBAA+BS,OAAOC,MAAM,CAACP,iBAAiBQ,IAAI,GAAGC,IAAI,CAACR;AAEhF,MAAMH,wBAAyD;IACpEY,KAAK;IACLC,IAAI;IACJC,GAAG;IACHC,KAAK;IACLC,KAAK;IACLC,SAAS;IACTC,MAAM;IACNC,IAAI;IACJC,MAAM;IACNC,IAAI;IACJC,MAAM;AACR;AAEO,MAAMlB,iBAAiB;IAC5BmB,IAAI;IACJC,KAAK;IACLC,IAAI;IACJC,aAAa,GAAG,6EAA6E;AAC/F;AAEO,MAAMnB,eAAe;IAC1B,8BAA8B;IAC9BgB,IAAI;IACJC,KAAK;IACLC,IAAI;IACJC,aAAa,GAAG,6EAA6E;AAC/F"}
@@ -1,8 +1,4 @@
1
- /*
2
- * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
3
- * This file is part of Sync-in | The open source file sync and share solution
4
- * See the LICENSE file for licensing details
5
- */ "use strict";
1
+ "use strict";
6
2
  Object.defineProperty(exports, "__esModule", {
7
3
  value: true
8
4
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/applications/spaces/decorators/space-override-permission.decorator.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport { Reflector } from '@nestjs/core'\nimport { SPACE_OPERATION } from '../constants/spaces'\n\nexport const OverrideSpacePermission = Reflector.createDecorator<SPACE_OPERATION>()\n"],"names":["OverrideSpacePermission","Reflector","createDecorator"],"mappings":"AAAA;;;;CAIC;;;;+BAKYA;;;eAAAA;;;sBAHa;AAGnB,MAAMA,0BAA0BC,eAAS,CAACC,eAAe"}
1
+ {"version":3,"sources":["../../../../../backend/src/applications/spaces/decorators/space-override-permission.decorator.ts"],"sourcesContent":["import { Reflector } from '@nestjs/core'\nimport { SPACE_OPERATION } from '../constants/spaces'\n\nexport const OverrideSpacePermission = Reflector.createDecorator<SPACE_OPERATION>()\n"],"names":["OverrideSpacePermission","Reflector","createDecorator"],"mappings":";;;;+BAGaA;;;eAAAA;;;sBAHa;AAGnB,MAAMA,0BAA0BC,eAAS,CAACC,eAAe"}
@@ -1,8 +1,4 @@
1
- /*
2
- * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
3
- * This file is part of Sync-in | The open source file sync and share solution
4
- * See the LICENSE file for licensing details
5
- */ "use strict";
1
+ "use strict";
6
2
  Object.defineProperty(exports, "__esModule", {
7
3
  value: true
8
4
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/applications/spaces/decorators/space-skip-guard.decorator.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport { SetMetadata } from '@nestjs/common'\n\nexport const SKIP_SPACE_GUARD = 'skipSpaceGuard'\nexport const SkipSpaceGuard = () => SetMetadata(SKIP_SPACE_GUARD, true)\n"],"names":["SKIP_SPACE_GUARD","SkipSpaceGuard","SetMetadata"],"mappings":"AAAA;;;;CAIC;;;;;;;;;;;QAIYA;eAAAA;;QACAC;eAAAA;;;wBAHe;AAErB,MAAMD,mBAAmB;AACzB,MAAMC,iBAAiB,IAAMC,IAAAA,mBAAW,EAACF,kBAAkB"}
1
+ {"version":3,"sources":["../../../../../backend/src/applications/spaces/decorators/space-skip-guard.decorator.ts"],"sourcesContent":["import { SetMetadata } from '@nestjs/common'\n\nexport const SKIP_SPACE_GUARD = 'skipSpaceGuard'\nexport const SkipSpaceGuard = () => SetMetadata(SKIP_SPACE_GUARD, true)\n"],"names":["SKIP_SPACE_GUARD","SkipSpaceGuard","SetMetadata"],"mappings":";;;;;;;;;;;QAEaA;eAAAA;;QACAC;eAAAA;;;wBAHe;AAErB,MAAMD,mBAAmB;AACzB,MAAMC,iBAAiB,IAAMC,IAAAA,mBAAW,EAACF,kBAAkB"}
@@ -1,8 +1,4 @@
1
- /*
2
- * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
3
- * This file is part of Sync-in | The open source file sync and share solution
4
- * See the LICENSE file for licensing details
5
- */ "use strict";
1
+ "use strict";
6
2
  Object.defineProperty(exports, "__esModule", {
7
3
  value: true
8
4
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/applications/spaces/decorators/space-skip-permissions.decorator.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport { SetMetadata } from '@nestjs/common'\n\nexport const SKIP_SPACE_PERMISSIONS_CHECK = 'skipSpacePermissionsCheck'\nexport const SkipSpacePermissionsCheck = () => SetMetadata(SKIP_SPACE_PERMISSIONS_CHECK, true)\n"],"names":["SKIP_SPACE_PERMISSIONS_CHECK","SkipSpacePermissionsCheck","SetMetadata"],"mappings":"AAAA;;;;CAIC;;;;;;;;;;;QAIYA;eAAAA;;QACAC;eAAAA;;;wBAHe;AAErB,MAAMD,+BAA+B;AACrC,MAAMC,4BAA4B,IAAMC,IAAAA,mBAAW,EAACF,8BAA8B"}
1
+ {"version":3,"sources":["../../../../../backend/src/applications/spaces/decorators/space-skip-permissions.decorator.ts"],"sourcesContent":["import { SetMetadata } from '@nestjs/common'\n\nexport const SKIP_SPACE_PERMISSIONS_CHECK = 'skipSpacePermissionsCheck'\nexport const SkipSpacePermissionsCheck = () => SetMetadata(SKIP_SPACE_PERMISSIONS_CHECK, true)\n"],"names":["SKIP_SPACE_PERMISSIONS_CHECK","SkipSpacePermissionsCheck","SetMetadata"],"mappings":";;;;;;;;;;;QAEaA;eAAAA;;QACAC;eAAAA;;;wBAHe;AAErB,MAAMD,+BAA+B;AACrC,MAAMC,4BAA4B,IAAMC,IAAAA,mBAAW,EAACF,8BAA8B"}
@@ -1,8 +1,4 @@
1
- /*
2
- * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
3
- * This file is part of Sync-in | The open source file sync and share solution
4
- * See the LICENSE file for licensing details
5
- */ "use strict";
1
+ "use strict";
6
2
  Object.defineProperty(exports, "__esModule", {
7
3
  value: true
8
4
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/applications/spaces/decorators/space.decorator.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport { createParamDecorator, ExecutionContext } from '@nestjs/common'\nimport { SpaceEnv } from '../models/space-env.model'\n\nexport const GetSpace = createParamDecorator((_data: unknown, ctx: ExecutionContext): SpaceEnv => {\n return ctx.switchToHttp().getRequest().space\n})\n"],"names":["GetSpace","createParamDecorator","_data","ctx","switchToHttp","getRequest","space"],"mappings":"AAAA;;;;CAIC;;;;+BAKYA;;;eAAAA;;;wBAH0C;AAGhD,MAAMA,WAAWC,IAAAA,4BAAoB,EAAC,CAACC,OAAgBC;IAC5D,OAAOA,IAAIC,YAAY,GAAGC,UAAU,GAAGC,KAAK;AAC9C"}
1
+ {"version":3,"sources":["../../../../../backend/src/applications/spaces/decorators/space.decorator.ts"],"sourcesContent":["import { createParamDecorator, ExecutionContext } from '@nestjs/common'\nimport { SpaceEnv } from '../models/space-env.model'\n\nexport const GetSpace = createParamDecorator((_data: unknown, ctx: ExecutionContext): SpaceEnv => {\n return ctx.switchToHttp().getRequest().space\n})\n"],"names":["GetSpace","createParamDecorator","_data","ctx","switchToHttp","getRequest","space"],"mappings":";;;;+BAGaA;;;eAAAA;;;wBAH0C;AAGhD,MAAMA,WAAWC,IAAAA,4BAAoB,EAAC,CAACC,OAAgBC;IAC5D,OAAOA,IAAIC,YAAY,GAAGC,UAAU,GAAGC,KAAK;AAC9C"}
@@ -1,8 +1,4 @@
1
- /*
2
- * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
3
- * This file is part of Sync-in | The open source file sync and share solution
4
- * See the LICENSE file for licensing details
5
- */ "use strict";
1
+ "use strict";
6
2
  Object.defineProperty(exports, "__esModule", {
7
3
  value: true
8
4
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/applications/spaces/dto/create-or-update-space.dto.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport { Transform, Type } from 'class-transformer'\nimport { ArrayMinSize, IsArray, IsBoolean, IsInt, IsNotEmpty, IsOptional, IsString, ValidateNested } from 'class-validator'\nimport { sanitizeName } from '../../files/utils/files'\nimport { CreateOrUpdateLinkDto } from '../../links/dto/create-or-update-link.dto'\nimport { MEMBER_TYPE, MEMBER_TYPE_REVERSE } from '../../users/constants/member'\nimport { SPACE_ROLE } from '../constants/spaces'\nimport { SpaceRootDto } from './space-roots.dto'\n\nexport class SpaceMemberDto {\n @IsNotEmpty()\n @IsInt()\n id: number\n\n @IsNotEmpty()\n @IsString()\n @Transform(({ value }) => MEMBER_TYPE_REVERSE[value])\n type: MEMBER_TYPE\n\n @IsNotEmpty()\n @IsInt()\n spaceRole?: SPACE_ROLE = SPACE_ROLE.IS_MEMBER\n\n @IsOptional()\n @IsString()\n permissions?: string = ''\n\n @IsOptional()\n @IsInt()\n linkId?: number\n\n @IsOptional()\n @ValidateNested()\n @Type(() => CreateOrUpdateLinkDto)\n linkSettings?: CreateOrUpdateLinkDto = null\n}\n\nexport class CreateOrUpdateSpaceDto {\n @IsOptional()\n @IsInt()\n id?: number\n\n @IsNotEmpty()\n @IsString()\n @Transform(({ value }) => (value ? sanitizeName(value.trim()) : ''))\n name: string\n\n @IsOptional()\n @IsString()\n @Transform(({ value }) => (value ? sanitizeName(value.trim()) : ''))\n alias?: string\n\n @IsOptional()\n @IsString()\n description?: string\n\n @IsOptional()\n @IsBoolean()\n enabled?: boolean\n\n @IsOptional()\n @IsInt()\n storageQuota?: number = null\n\n @IsOptional()\n @IsBoolean()\n storageIndexing?: boolean\n\n @IsOptional()\n @IsArray()\n @ValidateNested({ each: true })\n @Type(() => SpaceRootDto)\n roots?: SpaceRootDto[]\n\n @IsArray()\n @ArrayMinSize(1)\n @Transform(({ value }) =>\n value.map((m: SpaceMemberDto) => {\n m.spaceRole = SPACE_ROLE.IS_MANAGER\n return m\n })\n )\n @ValidateNested({ each: true })\n @Type(() => SpaceMemberDto)\n // contains managers (users)\n managers: SpaceMemberDto[]\n\n @IsOptional()\n @IsArray()\n @Transform(({ value }) =>\n value.map((m: SpaceMemberDto) => {\n m.spaceRole = SPACE_ROLE.IS_MEMBER\n return m\n })\n )\n @ValidateNested({ each: true })\n @Type(() => SpaceMemberDto)\n // contains members (users, guests, groups, personal groups)\n members?: SpaceMemberDto[]\n\n @IsOptional()\n @IsArray()\n @Transform(({ value }) =>\n value.map((m: SpaceMemberDto) => {\n m.spaceRole = SPACE_ROLE.IS_MEMBER\n return m\n })\n )\n @ValidateNested({ each: true })\n @Type(() => SpaceMemberDto)\n // contains links\n links?: SpaceMemberDto[]\n}\n"],"names":["CreateOrUpdateSpaceDto","SpaceMemberDto","spaceRole","SPACE_ROLE","IS_MEMBER","permissions","linkSettings","value","MEMBER_TYPE_REVERSE","CreateOrUpdateLinkDto","storageQuota","sanitizeName","trim","each","SpaceRootDto","map","m","IS_MANAGER"],"mappings":"AAAA;;;;CAIC;;;;;;;;;;;QAsCYA;eAAAA;;QA5BAC;eAAAA;;;kCARmB;gCAC0E;uBAC7E;uCACS;wBACW;wBACtB;+BACE;;;;;;;;;;AAEtB,IAAA,AAAMA,iBAAN,MAAMA;;aAYXC,YAAyBC,kBAAU,CAACC,SAAS;aAI7CC,cAAuB;aASvBC,eAAuC;;AACzC;;;;;;;;;sCAnBc,EAAEC,KAAK,EAAE,GAAKC,2BAAmB,CAACD,MAAM;;;;;;;;;;;;;;;;;;;;;oCAiBxCE,4CAAqB;;;AAI5B,IAAA,AAAMT,yBAAN,MAAMA;;aAyBXU,eAAwB;;AAkD1B;;;;;;;;;sCApEc,EAAEH,KAAK,EAAE,GAAMA,QAAQI,IAAAA,mBAAY,EAACJ,MAAMK,IAAI,MAAM;;;;;;sCAKpD,EAAEL,KAAK,EAAE,GAAMA,QAAQI,IAAAA,mBAAY,EAACJ,MAAMK,IAAI,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;QAqB9CC,MAAM;;oCACZC,2BAAY;;;;;;sCAKZ,EAAEP,KAAK,EAAE,GACnBA,MAAMQ,GAAG,CAAC,CAACC;YACTA,EAAEd,SAAS,GAAGC,kBAAU,CAACc,UAAU;YACnC,OAAOD;QACT;;QAEgBH,MAAM;;oCACZZ;;;;;;sCAMA,EAAEM,KAAK,EAAE,GACnBA,MAAMQ,GAAG,CAAC,CAACC;YACTA,EAAEd,SAAS,GAAGC,kBAAU,CAACC,SAAS;YAClC,OAAOY;QACT;;QAEgBH,MAAM;;oCACZZ;;;;;;sCAMA,EAAEM,KAAK,EAAE,GACnBA,MAAMQ,GAAG,CAAC,CAACC;YACTA,EAAEd,SAAS,GAAGC,kBAAU,CAACC,SAAS;YAClC,OAAOY;QACT;;QAEgBH,MAAM;;oCACZZ"}
1
+ {"version":3,"sources":["../../../../../backend/src/applications/spaces/dto/create-or-update-space.dto.ts"],"sourcesContent":["import { Transform, Type } from 'class-transformer'\nimport { ArrayMinSize, IsArray, IsBoolean, IsInt, IsNotEmpty, IsOptional, IsString, ValidateNested } from 'class-validator'\nimport { sanitizeName } from '../../files/utils/files'\nimport { CreateOrUpdateLinkDto } from '../../links/dto/create-or-update-link.dto'\nimport { MEMBER_TYPE, MEMBER_TYPE_REVERSE } from '../../users/constants/member'\nimport { SPACE_ROLE } from '../constants/spaces'\nimport { SpaceRootDto } from './space-roots.dto'\n\nexport class SpaceMemberDto {\n @IsNotEmpty()\n @IsInt()\n id: number\n\n @IsNotEmpty()\n @IsString()\n @Transform(({ value }) => MEMBER_TYPE_REVERSE[value])\n type: MEMBER_TYPE\n\n @IsNotEmpty()\n @IsInt()\n spaceRole?: SPACE_ROLE = SPACE_ROLE.IS_MEMBER\n\n @IsOptional()\n @IsString()\n permissions?: string = ''\n\n @IsOptional()\n @IsInt()\n linkId?: number\n\n @IsOptional()\n @ValidateNested()\n @Type(() => CreateOrUpdateLinkDto)\n linkSettings?: CreateOrUpdateLinkDto = null\n}\n\nexport class CreateOrUpdateSpaceDto {\n @IsOptional()\n @IsInt()\n id?: number\n\n @IsNotEmpty()\n @IsString()\n @Transform(({ value }) => (value ? sanitizeName(value.trim()) : ''))\n name: string\n\n @IsOptional()\n @IsString()\n @Transform(({ value }) => (value ? sanitizeName(value.trim()) : ''))\n alias?: string\n\n @IsOptional()\n @IsString()\n description?: string\n\n @IsOptional()\n @IsBoolean()\n enabled?: boolean\n\n @IsOptional()\n @IsInt()\n storageQuota?: number = null\n\n @IsOptional()\n @IsBoolean()\n storageIndexing?: boolean\n\n @IsOptional()\n @IsArray()\n @ValidateNested({ each: true })\n @Type(() => SpaceRootDto)\n roots?: SpaceRootDto[]\n\n @IsArray()\n @ArrayMinSize(1)\n @Transform(({ value }) =>\n value.map((m: SpaceMemberDto) => {\n m.spaceRole = SPACE_ROLE.IS_MANAGER\n return m\n })\n )\n @ValidateNested({ each: true })\n @Type(() => SpaceMemberDto)\n // contains managers (users)\n managers: SpaceMemberDto[]\n\n @IsOptional()\n @IsArray()\n @Transform(({ value }) =>\n value.map((m: SpaceMemberDto) => {\n m.spaceRole = SPACE_ROLE.IS_MEMBER\n return m\n })\n )\n @ValidateNested({ each: true })\n @Type(() => SpaceMemberDto)\n // contains members (users, guests, groups, personal groups)\n members?: SpaceMemberDto[]\n\n @IsOptional()\n @IsArray()\n @Transform(({ value }) =>\n value.map((m: SpaceMemberDto) => {\n m.spaceRole = SPACE_ROLE.IS_MEMBER\n return m\n })\n )\n @ValidateNested({ each: true })\n @Type(() => SpaceMemberDto)\n // contains links\n links?: SpaceMemberDto[]\n}\n"],"names":["CreateOrUpdateSpaceDto","SpaceMemberDto","spaceRole","SPACE_ROLE","IS_MEMBER","permissions","linkSettings","value","MEMBER_TYPE_REVERSE","CreateOrUpdateLinkDto","storageQuota","sanitizeName","trim","each","SpaceRootDto","map","m","IS_MANAGER"],"mappings":";;;;;;;;;;;QAoCaA;eAAAA;;QA5BAC;eAAAA;;;kCARmB;gCAC0E;uBAC7E;uCACS;wBACW;wBACtB;+BACE;;;;;;;;;;AAEtB,IAAA,AAAMA,iBAAN,MAAMA;;aAYXC,YAAyBC,kBAAU,CAACC,SAAS;aAI7CC,cAAuB;aASvBC,eAAuC;;AACzC;;;;;;;;;sCAnBc,EAAEC,KAAK,EAAE,GAAKC,2BAAmB,CAACD,MAAM;;;;;;;;;;;;;;;;;;;;;oCAiBxCE,4CAAqB;;;AAI5B,IAAA,AAAMT,yBAAN,MAAMA;;aAyBXU,eAAwB;;AAkD1B;;;;;;;;;sCApEc,EAAEH,KAAK,EAAE,GAAMA,QAAQI,IAAAA,mBAAY,EAACJ,MAAMK,IAAI,MAAM;;;;;;sCAKpD,EAAEL,KAAK,EAAE,GAAMA,QAAQI,IAAAA,mBAAY,EAACJ,MAAMK,IAAI,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;QAqB9CC,MAAM;;oCACZC,2BAAY;;;;;;sCAKZ,EAAEP,KAAK,EAAE,GACnBA,MAAMQ,GAAG,CAAC,CAACC;YACTA,EAAEd,SAAS,GAAGC,kBAAU,CAACc,UAAU;YACnC,OAAOD;QACT;;QAEgBH,MAAM;;oCACZZ;;;;;;sCAMA,EAAEM,KAAK,EAAE,GACnBA,MAAMQ,GAAG,CAAC,CAACC;YACTA,EAAEd,SAAS,GAAGC,kBAAU,CAACC,SAAS;YAClC,OAAOY;QACT;;QAEgBH,MAAM;;oCACZZ;;;;;;sCAMA,EAAEM,KAAK,EAAE,GACnBA,MAAMQ,GAAG,CAAC,CAACC;YACTA,EAAEd,SAAS,GAAGC,kBAAU,CAACC,SAAS;YAClC,OAAOY;QACT;;QAEgBH,MAAM;;oCACZZ"}
@@ -1,8 +1,4 @@
1
- /*
2
- * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
3
- * This file is part of Sync-in | The open source file sync and share solution
4
- * See the LICENSE file for licensing details
5
- */ "use strict";
1
+ "use strict";
6
2
  Object.defineProperty(exports, "__esModule", {
7
3
  value: true
8
4
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/applications/spaces/dto/delete-space.dto.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport { IsBoolean, IsOptional } from 'class-validator'\n\nexport class DeleteSpaceDto {\n @IsOptional()\n @IsBoolean()\n deleteNow: boolean\n}\n"],"names":["DeleteSpaceDto"],"mappings":"AAAA;;;;CAIC;;;;+BAIYA;;;eAAAA;;;gCAFyB;;;;;;;;;;AAE/B,IAAA,AAAMA,iBAAN,MAAMA;AAIb"}
1
+ {"version":3,"sources":["../../../../../backend/src/applications/spaces/dto/delete-space.dto.ts"],"sourcesContent":["import { IsBoolean, IsOptional } from 'class-validator'\n\nexport class DeleteSpaceDto {\n @IsOptional()\n @IsBoolean()\n deleteNow: boolean\n}\n"],"names":["DeleteSpaceDto"],"mappings":";;;;+BAEaA;;;eAAAA;;;gCAFyB;;;;;;;;;;AAE/B,IAAA,AAAMA,iBAAN,MAAMA;AAIb"}
@@ -1,8 +1,4 @@
1
- /*
2
- * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
3
- * This file is part of Sync-in | The open source file sync and share solution
4
- * See the LICENSE file for licensing details
5
- */ "use strict";
1
+ "use strict";
6
2
  Object.defineProperty(exports, "__esModule", {
7
3
  value: true
8
4
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/applications/spaces/dto/search-space.dto.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport { Transform } from 'class-transformer'\nimport { IsBoolean, IsInt, IsOptional, IsString } from 'class-validator'\n\nexport class SearchSpaceDto {\n @IsString()\n @Transform(({ value }) => value.trim().toLowerCase())\n search: string\n\n @IsOptional()\n @IsInt()\n limit?: number = 6\n\n @IsOptional()\n @IsBoolean()\n shareInsidePermission?: boolean\n}\n"],"names":["SearchSpaceDto","limit","value","trim","toLowerCase"],"mappings":"AAAA;;;;CAIC;;;;+BAKYA;;;eAAAA;;;kCAHa;gCAC6B;;;;;;;;;;AAEhD,IAAA,AAAMA,iBAAN,MAAMA;;aAOXC,QAAiB;;AAKnB;;;sCAVc,EAAEC,KAAK,EAAE,GAAKA,MAAMC,IAAI,GAAGC,WAAW"}
1
+ {"version":3,"sources":["../../../../../backend/src/applications/spaces/dto/search-space.dto.ts"],"sourcesContent":["import { Transform } from 'class-transformer'\nimport { IsBoolean, IsInt, IsOptional, IsString } from 'class-validator'\n\nexport class SearchSpaceDto {\n @IsString()\n @Transform(({ value }) => value.trim().toLowerCase())\n search: string\n\n @IsOptional()\n @IsInt()\n limit?: number = 6\n\n @IsOptional()\n @IsBoolean()\n shareInsidePermission?: boolean\n}\n"],"names":["SearchSpaceDto","limit","value","trim","toLowerCase"],"mappings":";;;;+BAGaA;;;eAAAA;;;kCAHa;gCAC6B;;;;;;;;;;AAEhD,IAAA,AAAMA,iBAAN,MAAMA;;aAOXC,QAAiB;;AAKnB;;;sCAVc,EAAEC,KAAK,EAAE,GAAKA,MAAMC,IAAI,GAAGC,WAAW"}
@@ -1,8 +1,4 @@
1
- /*
2
- * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
3
- * This file is part of Sync-in | The open source file sync and share solution
4
- * See the LICENSE file for licensing details
5
- */ "use strict";
1
+ "use strict";
6
2
  Object.defineProperty(exports, "__esModule", {
7
3
  value: true
8
4
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/applications/spaces/dto/space-roots.dto.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport { Transform, Type } from 'class-transformer'\nimport { IsDefined, IsInt, IsNotEmpty, IsNotEmptyObject, IsObject, IsOptional, IsString, ValidateIf, ValidateNested } from 'class-validator'\nimport { sanitizeName, sanitizePath } from '../../files/utils/files'\nimport { SPACE_ALIAS, SPACE_REPOSITORY } from '../constants/spaces'\nimport type { SpaceRootProps } from '../models/space-root-props.model'\n\nclass SpaceRootOwnerDto {\n @IsNotEmpty()\n @IsInt()\n id: number\n\n @IsNotEmpty()\n @IsString()\n login: string\n}\n\nexport class SpaceRootFileDto {\n @IsNotEmpty()\n @IsInt()\n id: number\n\n @IsNotEmpty()\n @IsString()\n @Transform(({ value }) => (value ? sanitizePath(value).replace(`${SPACE_REPOSITORY.FILES}/${SPACE_ALIAS.PERSONAL}/`, '') : ''))\n path: string\n}\n\nexport class SpaceRootDto implements SpaceRootProps {\n @IsNotEmpty()\n @IsInt()\n id: number\n\n @IsNotEmpty()\n @IsString()\n @Transform(({ value }) => (value ? sanitizeName(value.trim()) : ''))\n alias: string\n\n @IsNotEmpty()\n @IsString()\n @Transform(({ value }) => (value ? sanitizeName(value.trim()) : ''))\n name: string\n\n @IsDefined()\n @IsString()\n permissions: string\n\n @IsOptional()\n @IsString()\n externalPath?: string\n\n @IsOptional()\n @ValidateIf((_, owner) => !!owner?.id)\n @IsObject()\n @ValidateNested()\n @Type(() => SpaceRootOwnerDto)\n owner?: SpaceRootOwnerDto\n\n @ValidateIf((_, file) => !_.externalPath && file?.id)\n // we hide file.id & file.path if not owned by the current user\n @IsNotEmptyObject()\n @IsObject()\n @ValidateNested()\n @Type(() => SpaceRootFileDto)\n file: SpaceRootFileDto\n}\n\nexport class CheckRootExternalPathDto {\n @IsNotEmpty()\n @IsString()\n path: string\n}\n"],"names":["CheckRootExternalPathDto","SpaceRootDto","SpaceRootFileDto","SpaceRootOwnerDto","value","sanitizePath","replace","SPACE_REPOSITORY","FILES","SPACE_ALIAS","PERSONAL","sanitizeName","trim","_","owner","id","file","externalPath"],"mappings":"AAAA;;;;CAIC;;;;;;;;;;;QAoEYA;eAAAA;;QAvCAC;eAAAA;;QAXAC;eAAAA;;;kCAhBmB;gCAC2F;uBAChF;wBACG;;;;;;;;;;AAG9C,IAAA,AAAMC,oBAAN,MAAMA;AAQN;;;;;;;;;;;AAEO,IAAA,AAAMD,mBAAN,MAAMA;AASb;;;;;;;;;sCAFc,EAAEE,KAAK,EAAE,GAAMA,QAAQC,IAAAA,mBAAY,EAACD,OAAOE,OAAO,CAAC,GAAGC,wBAAgB,CAACC,KAAK,CAAC,CAAC,EAAEC,mBAAW,CAACC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM;;;AAItH,IAAA,AAAMT,eAAN,MAAMA;AAqCb;;;;;;;;;sCA9Bc,EAAEG,KAAK,EAAE,GAAMA,QAAQO,IAAAA,mBAAY,EAACP,MAAMQ,IAAI,MAAM;;;;;;sCAKpD,EAAER,KAAK,EAAE,GAAMA,QAAQO,IAAAA,mBAAY,EAACP,MAAMQ,IAAI,MAAM;;;;;;;;;;;;;;;qCAYnDC,GAAGC,QAAU,CAAC,CAACA,OAAOC;;;oCAGvBZ;;;;qCAGCU,GAAGG,OAAS,CAACH,EAAEI,YAAY,IAAID,MAAMD;;;;oCAKtCb;;;AAIP,IAAA,AAAMF,2BAAN,MAAMA;AAIb"}
1
+ {"version":3,"sources":["../../../../../backend/src/applications/spaces/dto/space-roots.dto.ts"],"sourcesContent":["import { Transform, Type } from 'class-transformer'\nimport { IsDefined, IsInt, IsNotEmpty, IsNotEmptyObject, IsObject, IsOptional, IsString, ValidateIf, ValidateNested } from 'class-validator'\nimport { sanitizeName, sanitizePath } from '../../files/utils/files'\nimport { SPACE_ALIAS, SPACE_REPOSITORY } from '../constants/spaces'\nimport type { SpaceRootProps } from '../models/space-root-props.model'\n\nclass SpaceRootOwnerDto {\n @IsNotEmpty()\n @IsInt()\n id: number\n\n @IsNotEmpty()\n @IsString()\n login: string\n}\n\nexport class SpaceRootFileDto {\n @IsNotEmpty()\n @IsInt()\n id: number\n\n @IsNotEmpty()\n @IsString()\n @Transform(({ value }) => (value ? sanitizePath(value).replace(`${SPACE_REPOSITORY.FILES}/${SPACE_ALIAS.PERSONAL}/`, '') : ''))\n path: string\n}\n\nexport class SpaceRootDto implements SpaceRootProps {\n @IsNotEmpty()\n @IsInt()\n id: number\n\n @IsNotEmpty()\n @IsString()\n @Transform(({ value }) => (value ? sanitizeName(value.trim()) : ''))\n alias: string\n\n @IsNotEmpty()\n @IsString()\n @Transform(({ value }) => (value ? sanitizeName(value.trim()) : ''))\n name: string\n\n @IsDefined()\n @IsString()\n permissions: string\n\n @IsOptional()\n @IsString()\n externalPath?: string\n\n @IsOptional()\n @ValidateIf((_, owner) => !!owner?.id)\n @IsObject()\n @ValidateNested()\n @Type(() => SpaceRootOwnerDto)\n owner?: SpaceRootOwnerDto\n\n @ValidateIf((_, file) => !_.externalPath && file?.id)\n // we hide file.id & file.path if not owned by the current user\n @IsNotEmptyObject()\n @IsObject()\n @ValidateNested()\n @Type(() => SpaceRootFileDto)\n file: SpaceRootFileDto\n}\n\nexport class CheckRootExternalPathDto {\n @IsNotEmpty()\n @IsString()\n path: string\n}\n"],"names":["CheckRootExternalPathDto","SpaceRootDto","SpaceRootFileDto","SpaceRootOwnerDto","value","sanitizePath","replace","SPACE_REPOSITORY","FILES","SPACE_ALIAS","PERSONAL","sanitizeName","trim","_","owner","id","file","externalPath"],"mappings":";;;;;;;;;;;QAkEaA;eAAAA;;QAvCAC;eAAAA;;QAXAC;eAAAA;;;kCAhBmB;gCAC2F;uBAChF;wBACG;;;;;;;;;;AAG9C,IAAA,AAAMC,oBAAN,MAAMA;AAQN;;;;;;;;;;;AAEO,IAAA,AAAMD,mBAAN,MAAMA;AASb;;;;;;;;;sCAFc,EAAEE,KAAK,EAAE,GAAMA,QAAQC,IAAAA,mBAAY,EAACD,OAAOE,OAAO,CAAC,GAAGC,wBAAgB,CAACC,KAAK,CAAC,CAAC,EAAEC,mBAAW,CAACC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM;;;AAItH,IAAA,AAAMT,eAAN,MAAMA;AAqCb;;;;;;;;;sCA9Bc,EAAEG,KAAK,EAAE,GAAMA,QAAQO,IAAAA,mBAAY,EAACP,MAAMQ,IAAI,MAAM;;;;;;sCAKpD,EAAER,KAAK,EAAE,GAAMA,QAAQO,IAAAA,mBAAY,EAACP,MAAMQ,IAAI,MAAM;;;;;;;;;;;;;;;qCAYnDC,GAAGC,QAAU,CAAC,CAACA,OAAOC;;;oCAGvBZ;;;;qCAGCU,GAAGG,OAAS,CAACH,EAAEI,YAAY,IAAID,MAAMD;;;;oCAKtCb;;;AAIP,IAAA,AAAMF,2BAAN,MAAMA;AAIb"}
@@ -1,8 +1,4 @@
1
- /*
2
- * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
3
- * This file is part of Sync-in | The open source file sync and share solution
4
- * See the LICENSE file for licensing details
5
- */ "use strict";
1
+ "use strict";
6
2
  Object.defineProperty(exports, "__esModule", {
7
3
  value: true
8
4
  });
@@ -94,11 +90,17 @@ let SpaceGuard = class SpaceGuard {
94
90
  try {
95
91
  space = await this.spacesManager.spaceEnv(req.user, urlSegments);
96
92
  } catch (e) {
97
- this.logger.warn(`${this.canActivate.name} - ${e}`);
93
+ this.logger.warn({
94
+ tag: this.canActivate.name,
95
+ msg: `${e}`
96
+ });
98
97
  throw new _common.HttpException('Space path is not valid', _common.HttpStatus.BAD_REQUEST);
99
98
  }
100
99
  if (!space) {
101
- this.logger.warn(`${this.canActivate.name} - space not authorized or not found : ${req.params['*']}`);
100
+ this.logger.warn({
101
+ tag: this.canActivate.name,
102
+ msg: `space not authorized or not found : ${req.params['*']}`
103
+ });
102
104
  throw new _common.HttpException('Space not found', _common.HttpStatus.NOT_FOUND);
103
105
  }
104
106
  if (!space.enabled) {
@@ -130,13 +132,19 @@ let SpaceGuard = class SpaceGuard {
130
132
  }
131
133
  return (0, _routes2.PATH_TO_SPACE_SEGMENTS)(req.params['*']);
132
134
  } catch (e) {
133
- this.logger.warn(`${this.canActivate.name} - ${e}`);
135
+ this.logger.warn({
136
+ tag: this.canActivate.name,
137
+ msg: `${e}`
138
+ });
134
139
  throw new _common.HttpException(e.message, _common.HttpStatus.NOT_FOUND);
135
140
  }
136
141
  }
137
142
  checkAccessToSpace(req, urlSegments) {
138
143
  if (!(0, _permissions.canAccessToSpaceUrl)(req.user, urlSegments)) {
139
- this.logger.warn(`is not allowed to access to this space repository : ${req.params['*']}`);
144
+ this.logger.warn({
145
+ tag: this.checkAccessToSpace.name,
146
+ msg: `is not allowed to access to this space repository : ${req.params['*']}`
147
+ });
140
148
  throw new _common.HttpException('You are not allowed to access to this repository', _common.HttpStatus.FORBIDDEN);
141
149
  }
142
150
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/applications/spaces/guards/space.guard.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport { CanActivate, ExecutionContext, HttpException, HttpStatus, Injectable, Logger } from '@nestjs/common'\nimport { Reflector } from '@nestjs/core'\nimport { HTTP_METHOD } from '../../applications.constants'\nimport { COLLABORA_CONTEXT } from '../../files/modules/collabora-online/collabora-online.constants'\nimport { COLLABORA_ONLINE_TO_SPACE_SEGMENTS } from '../../files/modules/collabora-online/collabora-online.utils'\nimport { isPathExists, isPathIsDir } from '../../files/utils/files'\nimport { SYNC_CONTEXT } from '../../sync/decorators/sync-context.decorator'\nimport { SYNC_PATH_TO_SPACE_SEGMENTS } from '../../sync/utils/routes'\nimport { WEB_DAV_CONTEXT } from '../../webdav/decorators/webdav-context.decorator'\nimport { WEBDAV_PATH_TO_SPACE_SEGMENTS } from '../../webdav/utils/routes'\nimport { SPACE_HTTP_PERMISSION, SPACE_OPERATION } from '../constants/spaces'\nimport { OverrideSpacePermission } from '../decorators/space-override-permission.decorator'\nimport { SKIP_SPACE_GUARD } from '../decorators/space-skip-guard.decorator'\nimport { SKIP_SPACE_PERMISSIONS_CHECK } from '../decorators/space-skip-permissions.decorator'\nimport { FastifySpaceRequest } from '../interfaces/space-request.interface'\nimport { SpaceEnv } from '../models/space-env.model'\nimport { SpacesManager } from '../services/spaces-manager.service'\nimport { canAccessToSpaceUrl, haveSpaceEnvPermissions } from '../utils/permissions'\nimport { PATH_TO_SPACE_SEGMENTS } from '../utils/routes'\n\n@Injectable()\nexport class SpaceGuard implements CanActivate {\n private readonly logger = new Logger(SpaceGuard.name)\n\n constructor(\n private readonly reflector: Reflector,\n private readonly spacesManager: SpacesManager\n ) {}\n\n static async checkPermissions(req: FastifySpaceRequest, logger: Logger, overrideSpacePermission?: SPACE_OPERATION) {\n let permission: SPACE_OPERATION\n if (req.method === HTTP_METHOD.PUT && (await isPathExists(req.space.realPath)) && !(await isPathIsDir(req.space.realPath))) {\n // PUT method may either create a new resource or replace an existing one.\n // Therefore, we must check whether the target resource already exists to apply the appropriate permission rules.\n permission = SPACE_OPERATION.MODIFY\n } else {\n // The override is applied for specific POST methods that update an existing file rather than creating it.\n permission = overrideSpacePermission || SPACE_HTTP_PERMISSION[req.method]\n }\n if (!haveSpaceEnvPermissions(req.space, permission)) {\n logger.warn(`is not allowed to ${req.method} on this space path : *${req.space.alias}* (${req.space.id}) : ${req.space.url}`)\n throw new HttpException('You are not allowed to do this action', HttpStatus.FORBIDDEN)\n }\n if ([SPACE_OPERATION.ADD, SPACE_OPERATION.MODIFY].indexOf(permission) > -1) {\n if (req.space.quotaIsExceeded) {\n logger.warn(`Storage quota exceeded for *${req.space.alias}* (${req.space.id})`)\n throw new HttpException('Storage quota exceeded', HttpStatus.INSUFFICIENT_STORAGE)\n } else if (req.space.storageQuota) {\n const contentLength = parseInt(req.headers['content-length'] || '0', 10) || 0\n if (req.space.willExceedQuota(contentLength)) {\n throw new HttpException('Storage quota will be exceeded', HttpStatus.INSUFFICIENT_STORAGE)\n }\n }\n }\n }\n\n async canActivate(ctx: ExecutionContext): Promise<boolean> {\n if (this.reflector.getAllAndOverride(SKIP_SPACE_GUARD, [ctx.getHandler(), ctx.getClass()])) {\n return true\n }\n\n const req: FastifySpaceRequest = ctx.switchToHttp().getRequest()\n const webDAVContext = this.reflector.getAllAndOverride(WEB_DAV_CONTEXT, [ctx.getHandler(), ctx.getClass()])\n const syncContext = this.reflector.getAllAndOverride(SYNC_CONTEXT, [ctx.getHandler(), ctx.getClass()])\n const collaboraOnlineContext = this.reflector.getAllAndOverride(COLLABORA_CONTEXT, [ctx.getHandler(), ctx.getClass()])\n\n const urlSegments = this.urlSegmentsFromContext(req, webDAVContext, syncContext, collaboraOnlineContext)\n this.checkAccessToSpace(req, urlSegments)\n let space: SpaceEnv\n try {\n space = await this.spacesManager.spaceEnv(req.user, urlSegments)\n } catch (e) {\n this.logger.warn(`${this.canActivate.name} - ${e}`)\n throw new HttpException('Space path is not valid', HttpStatus.BAD_REQUEST)\n }\n if (!space) {\n this.logger.warn(`${this.canActivate.name} - space not authorized or not found : ${req.params['*']}`)\n throw new HttpException('Space not found', HttpStatus.NOT_FOUND)\n }\n if (!space.enabled) {\n throw new HttpException('Space is disabled', HttpStatus.FORBIDDEN)\n }\n // assign space to request\n req.space = space\n const skipSpacePermissionsCheck = this.reflector.getAllAndOverride(SKIP_SPACE_PERMISSIONS_CHECK, [ctx.getHandler(), ctx.getClass()])\n if (skipSpacePermissionsCheck === undefined) {\n const overrideSpacePermission: SPACE_OPERATION = this.reflector.getAllAndOverride(OverrideSpacePermission, [ctx.getHandler(), ctx.getClass()])\n await SpaceGuard.checkPermissions(req, this.logger, overrideSpacePermission)\n }\n return true\n }\n\n private urlSegmentsFromContext(req: FastifySpaceRequest, webDAVContext: boolean, syncContext: boolean, collaboraOnlineContext: boolean): string[] {\n try {\n if (webDAVContext) {\n return WEBDAV_PATH_TO_SPACE_SEGMENTS(req.params['*'])\n } else if (syncContext) {\n return SYNC_PATH_TO_SPACE_SEGMENTS(req.params['*'])\n } else if (collaboraOnlineContext) {\n return COLLABORA_ONLINE_TO_SPACE_SEGMENTS(req)\n }\n return PATH_TO_SPACE_SEGMENTS(req.params['*'])\n } catch (e) {\n this.logger.warn(`${this.canActivate.name} - ${e}`)\n throw new HttpException(e.message, HttpStatus.NOT_FOUND)\n }\n }\n\n private checkAccessToSpace(req: FastifySpaceRequest, urlSegments: string[]) {\n if (!canAccessToSpaceUrl(req.user, urlSegments)) {\n this.logger.warn(`is not allowed to access to this space repository : ${req.params['*']}`)\n throw new HttpException('You are not allowed to access to this repository', HttpStatus.FORBIDDEN)\n }\n }\n}\n"],"names":["SpaceGuard","checkPermissions","req","logger","overrideSpacePermission","permission","method","HTTP_METHOD","PUT","isPathExists","space","realPath","isPathIsDir","SPACE_OPERATION","MODIFY","SPACE_HTTP_PERMISSION","haveSpaceEnvPermissions","warn","alias","id","url","HttpException","HttpStatus","FORBIDDEN","ADD","indexOf","quotaIsExceeded","INSUFFICIENT_STORAGE","storageQuota","contentLength","parseInt","headers","willExceedQuota","canActivate","ctx","reflector","getAllAndOverride","SKIP_SPACE_GUARD","getHandler","getClass","switchToHttp","getRequest","webDAVContext","WEB_DAV_CONTEXT","syncContext","SYNC_CONTEXT","collaboraOnlineContext","COLLABORA_CONTEXT","urlSegments","urlSegmentsFromContext","checkAccessToSpace","spacesManager","spaceEnv","user","e","name","BAD_REQUEST","params","NOT_FOUND","enabled","skipSpacePermissionsCheck","SKIP_SPACE_PERMISSIONS_CHECK","undefined","OverrideSpacePermission","WEBDAV_PATH_TO_SPACE_SEGMENTS","SYNC_PATH_TO_SPACE_SEGMENTS","COLLABORA_ONLINE_TO_SPACE_SEGMENTS","PATH_TO_SPACE_SEGMENTS","message","canAccessToSpaceUrl","Logger"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../backend/src/applications/spaces/guards/space.guard.ts"],"sourcesContent":["import { CanActivate, ExecutionContext, HttpException, HttpStatus, Injectable, Logger } from '@nestjs/common'\nimport { Reflector } from '@nestjs/core'\nimport { HTTP_METHOD } from '../../applications.constants'\nimport { COLLABORA_CONTEXT } from '../../files/modules/collabora-online/collabora-online.constants'\nimport { COLLABORA_ONLINE_TO_SPACE_SEGMENTS } from '../../files/modules/collabora-online/collabora-online.utils'\nimport { isPathExists, isPathIsDir } from '../../files/utils/files'\nimport { SYNC_CONTEXT } from '../../sync/decorators/sync-context.decorator'\nimport { SYNC_PATH_TO_SPACE_SEGMENTS } from '../../sync/utils/routes'\nimport { WEB_DAV_CONTEXT } from '../../webdav/decorators/webdav-context.decorator'\nimport { WEBDAV_PATH_TO_SPACE_SEGMENTS } from '../../webdav/utils/routes'\nimport { SPACE_HTTP_PERMISSION, SPACE_OPERATION } from '../constants/spaces'\nimport { OverrideSpacePermission } from '../decorators/space-override-permission.decorator'\nimport { SKIP_SPACE_GUARD } from '../decorators/space-skip-guard.decorator'\nimport { SKIP_SPACE_PERMISSIONS_CHECK } from '../decorators/space-skip-permissions.decorator'\nimport { FastifySpaceRequest } from '../interfaces/space-request.interface'\nimport { SpaceEnv } from '../models/space-env.model'\nimport { SpacesManager } from '../services/spaces-manager.service'\nimport { canAccessToSpaceUrl, haveSpaceEnvPermissions } from '../utils/permissions'\nimport { PATH_TO_SPACE_SEGMENTS } from '../utils/routes'\n\n@Injectable()\nexport class SpaceGuard implements CanActivate {\n private readonly logger = new Logger(SpaceGuard.name)\n\n constructor(\n private readonly reflector: Reflector,\n private readonly spacesManager: SpacesManager\n ) {}\n\n static async checkPermissions(req: FastifySpaceRequest, logger: Logger, overrideSpacePermission?: SPACE_OPERATION) {\n let permission: SPACE_OPERATION\n if (req.method === HTTP_METHOD.PUT && (await isPathExists(req.space.realPath)) && !(await isPathIsDir(req.space.realPath))) {\n // PUT method may either create a new resource or replace an existing one.\n // Therefore, we must check whether the target resource already exists to apply the appropriate permission rules.\n permission = SPACE_OPERATION.MODIFY\n } else {\n // The override is applied for specific POST methods that update an existing file rather than creating it.\n permission = overrideSpacePermission || SPACE_HTTP_PERMISSION[req.method]\n }\n if (!haveSpaceEnvPermissions(req.space, permission)) {\n logger.warn(`is not allowed to ${req.method} on this space path : *${req.space.alias}* (${req.space.id}) : ${req.space.url}`)\n throw new HttpException('You are not allowed to do this action', HttpStatus.FORBIDDEN)\n }\n if ([SPACE_OPERATION.ADD, SPACE_OPERATION.MODIFY].indexOf(permission) > -1) {\n if (req.space.quotaIsExceeded) {\n logger.warn(`Storage quota exceeded for *${req.space.alias}* (${req.space.id})`)\n throw new HttpException('Storage quota exceeded', HttpStatus.INSUFFICIENT_STORAGE)\n } else if (req.space.storageQuota) {\n const contentLength = parseInt(req.headers['content-length'] || '0', 10) || 0\n if (req.space.willExceedQuota(contentLength)) {\n throw new HttpException('Storage quota will be exceeded', HttpStatus.INSUFFICIENT_STORAGE)\n }\n }\n }\n }\n\n async canActivate(ctx: ExecutionContext): Promise<boolean> {\n if (this.reflector.getAllAndOverride(SKIP_SPACE_GUARD, [ctx.getHandler(), ctx.getClass()])) {\n return true\n }\n\n const req: FastifySpaceRequest = ctx.switchToHttp().getRequest()\n const webDAVContext = this.reflector.getAllAndOverride(WEB_DAV_CONTEXT, [ctx.getHandler(), ctx.getClass()])\n const syncContext = this.reflector.getAllAndOverride(SYNC_CONTEXT, [ctx.getHandler(), ctx.getClass()])\n const collaboraOnlineContext = this.reflector.getAllAndOverride(COLLABORA_CONTEXT, [ctx.getHandler(), ctx.getClass()])\n\n const urlSegments = this.urlSegmentsFromContext(req, webDAVContext, syncContext, collaboraOnlineContext)\n this.checkAccessToSpace(req, urlSegments)\n let space: SpaceEnv\n try {\n space = await this.spacesManager.spaceEnv(req.user, urlSegments)\n } catch (e) {\n this.logger.warn({ tag: this.canActivate.name, msg: `${e}` })\n throw new HttpException('Space path is not valid', HttpStatus.BAD_REQUEST)\n }\n if (!space) {\n this.logger.warn({ tag: this.canActivate.name, msg: `space not authorized or not found : ${req.params['*']}` })\n throw new HttpException('Space not found', HttpStatus.NOT_FOUND)\n }\n if (!space.enabled) {\n throw new HttpException('Space is disabled', HttpStatus.FORBIDDEN)\n }\n // assign space to request\n req.space = space\n const skipSpacePermissionsCheck = this.reflector.getAllAndOverride(SKIP_SPACE_PERMISSIONS_CHECK, [ctx.getHandler(), ctx.getClass()])\n if (skipSpacePermissionsCheck === undefined) {\n const overrideSpacePermission: SPACE_OPERATION = this.reflector.getAllAndOverride(OverrideSpacePermission, [ctx.getHandler(), ctx.getClass()])\n await SpaceGuard.checkPermissions(req, this.logger, overrideSpacePermission)\n }\n return true\n }\n\n private urlSegmentsFromContext(req: FastifySpaceRequest, webDAVContext: boolean, syncContext: boolean, collaboraOnlineContext: boolean): string[] {\n try {\n if (webDAVContext) {\n return WEBDAV_PATH_TO_SPACE_SEGMENTS(req.params['*'])\n } else if (syncContext) {\n return SYNC_PATH_TO_SPACE_SEGMENTS(req.params['*'])\n } else if (collaboraOnlineContext) {\n return COLLABORA_ONLINE_TO_SPACE_SEGMENTS(req)\n }\n return PATH_TO_SPACE_SEGMENTS(req.params['*'])\n } catch (e) {\n this.logger.warn({ tag: this.canActivate.name, msg: `${e}` })\n throw new HttpException(e.message, HttpStatus.NOT_FOUND)\n }\n }\n\n private checkAccessToSpace(req: FastifySpaceRequest, urlSegments: string[]) {\n if (!canAccessToSpaceUrl(req.user, urlSegments)) {\n this.logger.warn({ tag: this.checkAccessToSpace.name, msg: `is not allowed to access to this space repository : ${req.params['*']}` })\n throw new HttpException('You are not allowed to access to this repository', HttpStatus.FORBIDDEN)\n }\n }\n}\n"],"names":["SpaceGuard","checkPermissions","req","logger","overrideSpacePermission","permission","method","HTTP_METHOD","PUT","isPathExists","space","realPath","isPathIsDir","SPACE_OPERATION","MODIFY","SPACE_HTTP_PERMISSION","haveSpaceEnvPermissions","warn","alias","id","url","HttpException","HttpStatus","FORBIDDEN","ADD","indexOf","quotaIsExceeded","INSUFFICIENT_STORAGE","storageQuota","contentLength","parseInt","headers","willExceedQuota","canActivate","ctx","reflector","getAllAndOverride","SKIP_SPACE_GUARD","getHandler","getClass","switchToHttp","getRequest","webDAVContext","WEB_DAV_CONTEXT","syncContext","SYNC_CONTEXT","collaboraOnlineContext","COLLABORA_CONTEXT","urlSegments","urlSegmentsFromContext","checkAccessToSpace","spacesManager","spaceEnv","user","e","tag","name","msg","BAD_REQUEST","params","NOT_FOUND","enabled","skipSpacePermissionsCheck","SKIP_SPACE_PERMISSIONS_CHECK","undefined","OverrideSpacePermission","WEBDAV_PATH_TO_SPACE_SEGMENTS","SYNC_PATH_TO_SPACE_SEGMENTS","COLLABORA_ONLINE_TO_SPACE_SEGMENTS","PATH_TO_SPACE_SEGMENTS","message","canAccessToSpaceUrl","Logger"],"mappings":"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"}
@@ -1,8 +1,4 @@
1
- /*
2
- * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
3
- * This file is part of Sync-in | The open source file sync and share solution
4
- * See the LICENSE file for licensing details
5
- */ "use strict";
1
+ "use strict";
6
2
  Object.defineProperty(exports, "__esModule", {
7
3
  value: true
8
4
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/applications/spaces/guards/space.guard.spec.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport { createMock, DeepMocked } from '@golevelup/ts-jest'\nimport { ExecutionContext, HttpException, HttpStatus } from '@nestjs/common'\nimport { Test, TestingModule } from '@nestjs/testing'\nimport { intersectPermissions } from '../../../common/shared'\nimport { Cache } from '../../../infrastructure/cache/services/cache.service'\nimport { ContextManager } from '../../../infrastructure/context/services/context-manager.service'\nimport { DB_TOKEN_PROVIDER } from '../../../infrastructure/database/constants'\nimport { FilesQueries } from '../../files/services/files-queries.service'\nimport { LinksQueries } from '../../links/services/links-queries.service'\nimport { NotificationsManager } from '../../notifications/services/notifications-manager.service'\nimport { SHARE_ALL_OPERATIONS } from '../../shares/constants/shares'\nimport { SharesManager } from '../../shares/services/shares-manager.service'\nimport { SharesQueries } from '../../shares/services/shares-queries.service'\nimport { SyncContext } from '../../sync/decorators/sync-context.decorator'\nimport { USER_PERMISSION, USER_ROLE } from '../../users/constants/user'\nimport { UserModel } from '../../users/models/user.model'\nimport { UsersQueries } from '../../users/services/users-queries.service'\nimport { generateUserTest } from '../../users/utils/test'\nimport { WebDAVContext } from '../../webdav/decorators/webdav-context.decorator'\nimport { SPACE_ALIAS, SPACE_ALL_OPERATIONS, SPACE_OPERATION, SPACE_PERMS_SEP, SPACE_REPOSITORY } from '../constants/spaces'\nimport { OverrideSpacePermission } from '../decorators/space-override-permission.decorator'\nimport { SkipSpaceGuard } from '../decorators/space-skip-guard.decorator'\nimport { SkipSpacePermissionsCheck } from '../decorators/space-skip-permissions.decorator'\nimport { SpaceEnv } from '../models/space-env.model'\nimport { SpacesManager } from '../services/spaces-manager.service'\nimport { SpacesQueries } from '../services/spaces-queries.service'\nimport { SpaceGuard } from './space.guard'\n\ndescribe(SpaceGuard.name, () => {\n let spacesGuard: SpaceGuard\n let spacesManager: SpacesManager\n let spacesQueries: SpacesQueries\n let userTest: UserModel\n let context: DeepMocked<ExecutionContext>\n\n beforeAll(async () => {\n const module: TestingModule = await Test.createTestingModule({\n providers: [\n {\n provide: DB_TOKEN_PROVIDER,\n useValue: {}\n },\n {\n provide: Cache,\n useValue: {}\n },\n { provide: ContextManager, useValue: {} },\n {\n provide: NotificationsManager,\n useValue: {}\n },\n SpaceGuard,\n SpacesManager,\n SpacesQueries,\n SharesManager,\n SharesQueries,\n FilesQueries,\n UsersQueries,\n LinksQueries\n ]\n }).compile()\n\n spacesManager = module.get<SpacesManager>(SpacesManager)\n spacesQueries = module.get<SpacesQueries>(SpacesQueries)\n spacesGuard = module.get<SpaceGuard>(SpaceGuard)\n // mocks\n spacesManager['setQuotaExceeded'] = jest.fn()\n userTest = new UserModel(generateUserTest())\n })\n\n beforeEach(() => {\n context = createMock<ExecutionContext>()\n })\n\n it('should be defined', () => {\n expect(spacesGuard).toBeDefined()\n expect(spacesManager).toBeDefined()\n expect(userTest).toBeDefined()\n })\n\n it('should pass for a personal space', async () => {\n context.switchToHttp().getRequest.mockReturnValue({\n user: userTest,\n params: { '*': 'files/personal/root/foo/bar' }\n })\n expect(await spacesGuard.canActivate(context)).toBe(true)\n const req: any = context.switchToHttp().getRequest()\n expect(req.space.id).toBe(0)\n expect(req.space.repository).toBe(SPACE_REPOSITORY.FILES)\n expect(req.space.alias).toBe(SPACE_ALIAS.PERSONAL)\n expect(req.space.name).toBe(SPACE_ALIAS.PERSONAL)\n expect(req.space.enabled).toBe(true)\n expect(req.space.root).toBeUndefined()\n expect(req.space.dbFile).toMatchObject({ inTrash: false, ownerId: userTest.id, path: 'root/foo/bar' })\n expect(req.space.permissions).toBe(SPACE_ALL_OPERATIONS)\n expect(req.space.envPermissions).toBe(SPACE_ALL_OPERATIONS)\n expect(req.space.inFilesRepository).toBe(true)\n expect(req.space.inPersonalSpace).toBe(true)\n expect(req.space.inTrashRepository).toBe(false)\n expect(req.space.inSharesRepository).toBe(false)\n expect(req.space.inSharesList).toBe(false)\n expect(req.space.paths).toEqual(expect.arrayContaining(['root', 'foo', 'bar']))\n })\n\n it('should pass for a common space', async () => {\n const fakeSpace = {\n id: -1,\n alias: 'test',\n name: 'Test',\n enabled: true,\n permissions: ':a:d:m:so',\n role: 0\n }\n spacesQueries.permissions = jest.fn().mockReturnValueOnce(fakeSpace)\n context.switchToHttp().getRequest.mockReturnValue({\n user: userTest,\n params: { '*': 'files/test' }\n })\n expect(await spacesGuard.canActivate(context)).toBe(true)\n const req: any = context.switchToHttp().getRequest()\n expect(req.space.id).toBe(fakeSpace.id)\n expect(req.space.repository).toBe(SPACE_REPOSITORY.FILES)\n expect(req.space.alias).toBe(fakeSpace.alias)\n expect(req.space.name).toBe(fakeSpace.name)\n expect(req.space.enabled).toBe(true)\n expect(req.space.root).toMatchObject({ id: 0, alias: '', name: '', permissions: 'a:d:m:so' })\n expect(req.space.dbFile).toMatchObject({ inTrash: false, spaceId: fakeSpace.id, spaceExternalRootId: null, path: '.' })\n expect(req.space.permissions).toBe(SHARE_ALL_OPERATIONS)\n expect(req.space.envPermissions).not.toContain('d')\n expect(req.space.inFilesRepository).toBe(true)\n expect(req.space.inPersonalSpace).toBe(false)\n expect(req.space.inTrashRepository).toBe(false)\n expect(req.space.inSharesRepository).toBe(false)\n expect(req.space.inSharesList).toBe(false)\n expect(req.space.paths).toHaveLength(0)\n })\n\n it('should pass for a common space root', async () => {\n const fakeSpace = {\n id: -1,\n alias: 'test',\n name: 'Test',\n enabled: true,\n permissions: 'a:d:m:so',\n role: 1,\n root: {\n id: -2,\n alias: 'root',\n name: 'Root',\n permissions: 'a:d:so',\n owner: { id: -3, login: 'johaven' },\n file: { id: -4, path: 'code', inTrash: false },\n externalPath: null\n }\n }\n spacesQueries.permissions = jest.fn().mockReturnValueOnce(fakeSpace)\n context.switchToHttp().getRequest.mockReturnValue({\n user: userTest,\n params: { '*': 'files/test/root' }\n })\n expect(await spacesGuard.canActivate(context)).toBe(true)\n const req: any = context.switchToHttp().getRequest()\n expect(req.space.id).toBe(fakeSpace.id)\n expect(req.space.repository).toBe(SPACE_REPOSITORY.FILES)\n expect(req.space.alias).toBe(fakeSpace.alias)\n expect(req.space.name).toBe(fakeSpace.name)\n expect(req.space.enabled).toBe(true)\n expect(req.space.root).toMatchObject(fakeSpace.root)\n expect(req.space.dbFile).toMatchObject({ inTrash: false, ownerId: fakeSpace.root.owner.id, path: fakeSpace.root.file.path })\n expect(req.space.permissions).toBe(SPACE_ALL_OPERATIONS)\n expect(req.space.envPermissions).toBe(\n intersectPermissions(fakeSpace.permissions, fakeSpace.root.permissions)\n .split(SPACE_PERMS_SEP)\n .filter((p) => p !== SPACE_OPERATION.DELETE)\n .join(SPACE_PERMS_SEP)\n )\n expect(req.space.inFilesRepository).toBe(true)\n expect(req.space.inPersonalSpace).toBe(false)\n expect(req.space.inTrashRepository).toBe(false)\n expect(req.space.inSharesRepository).toBe(false)\n expect(req.space.inSharesList).toBe(false)\n expect(req.space.paths).toHaveLength(0)\n })\n\n it('should pass for a common space root with a path', async () => {\n const fakeSpace = {\n id: -1,\n alias: 'test',\n name: 'Test',\n enabled: true,\n permissions: 'a:d:m:so',\n role: 1,\n root: {\n id: -2,\n alias: 'root',\n name: 'Root',\n permissions: 'a:d:so',\n owner: { id: -3, login: 'johaven' },\n file: { id: -4, path: 'code', inTrash: false },\n externalPath: null\n }\n }\n spacesQueries.permissions = jest.fn().mockReturnValueOnce(fakeSpace)\n context.switchToHttp().getRequest.mockReturnValue({\n user: userTest,\n params: { '*': 'files/test/root/path' }\n })\n expect(await spacesGuard.canActivate(context)).toBe(true)\n const req: any = context.switchToHttp().getRequest()\n expect(req.space.id).toBe(fakeSpace.id)\n expect(req.space.repository).toBe(SPACE_REPOSITORY.FILES)\n expect(req.space.alias).toBe(fakeSpace.alias)\n expect(req.space.name).toBe(fakeSpace.name)\n expect(req.space.enabled).toBe(true)\n expect(req.space.root).toMatchObject(fakeSpace.root)\n expect(req.space.dbFile).toMatchObject({\n inTrash: false,\n ownerId: fakeSpace.root.owner.id,\n path: `${fakeSpace.root.file.path}/${req.space.paths[0]}`\n })\n expect(req.space.permissions).toBe(SPACE_ALL_OPERATIONS)\n expect(req.space.envPermissions).toBe(fakeSpace.root.permissions)\n expect(req.space.inFilesRepository).toBe(true)\n expect(req.space.inPersonalSpace).toBe(false)\n expect(req.space.inTrashRepository).toBe(false)\n expect(req.space.inSharesRepository).toBe(false)\n expect(req.space.inSharesList).toBe(false)\n expect(req.space.paths).toHaveLength(1)\n })\n\n it('should pass for a space in shares repository', async () => {\n context.switchToHttp().getRequest.mockReturnValue({\n user: userTest,\n params: { '*': 'shares' }\n })\n expect(await spacesGuard.canActivate(context)).toBe(true)\n const req: any = context.switchToHttp().getRequest()\n expect(req.space.id).toBe(0)\n expect(req.space.repository).toBe(SPACE_REPOSITORY.SHARES)\n expect(req.space.alias).toBe(SPACE_REPOSITORY.SHARES)\n expect(req.space.name).toBe(SPACE_REPOSITORY.SHARES)\n expect(req.space.enabled).toBe(true)\n expect(req.space.root).toBeUndefined()\n expect(req.space.dbFile).toBeUndefined()\n expect(req.space.permissions).toBe('')\n expect(req.space.envPermissions).toBe('')\n expect(req.space.inFilesRepository).toBe(false)\n expect(req.space.inPersonalSpace).toBe(false)\n expect(req.space.inTrashRepository).toBe(false)\n expect(req.space.inSharesRepository).toBe(true)\n expect(req.space.inSharesList).toBe(true)\n expect(req.space.paths).toHaveLength(0)\n })\n\n it('should not pass if the space is not found or not valid', async () => {\n const fakeSpace = null\n spacesQueries.permissions = jest.fn().mockReturnValueOnce(fakeSpace)\n context.switchToHttp().getRequest.mockReturnValue({\n user: userTest,\n params: { '*': 'files/foo' }\n })\n await expect(spacesGuard.canActivate(context)).rejects.toThrow(HttpException)\n })\n\n it('should validate (or not) the access to the space depending on the user permissions', async () => {\n // we only check the `spacesManager.checkAccessToSpace` function, ignores the `spacesManager.spaceEnv`\n userTest.applications = [USER_PERMISSION.PERSONAL_SPACE]\n for (const url of ['', 'shares/personal', 'shares/toto']) {\n context.switchToHttp().getRequest.mockReturnValue({\n user: userTest,\n params: { '*': url }\n })\n await expect(spacesGuard.canActivate(context)).rejects.toThrow(HttpException)\n }\n // should pass because it is a standard user\n // should not pass because user is a guest (and dot not have the permission to access to a personal space)\n spacesManager.spaceEnv = jest.fn().mockReturnValueOnce({ enabled: true }) // only for user role\n context.switchToHttp().getRequest.mockReturnValue({\n user: userTest,\n params: { '*': 'files/personal/root/foo/bar' }\n })\n for (const userRole of [USER_ROLE.USER, USER_ROLE.GUEST]) {\n userTest.role = userRole\n if (userRole === USER_ROLE.USER) {\n expect(await spacesGuard.canActivate(context)).toBe(true)\n } else {\n await expect(spacesGuard.canActivate(context)).rejects.toThrow(HttpException)\n }\n }\n })\n\n it('should check user permissions on route', async () => {\n userTest.role = USER_ROLE.USER\n spacesManager.spaceEnv = jest.fn().mockReturnValue({\n enabled: true,\n envPermissions: `${SPACE_OPERATION.MODIFY}`\n } as Partial<SpaceEnv>)\n // does not allow creation (only modify)\n context.switchToHttp().getRequest.mockReturnValueOnce({\n method: 'POST',\n user: userTest,\n params: { '*': 'files/personal' }\n })\n await expect(spacesGuard.canActivate(context)).rejects.toThrow(HttpException)\n\n // allows modification\n context.switchToHttp().getRequest.mockReturnValue({\n method: 'PATCH',\n user: userTest,\n params: { '*': 'files/personal' }\n })\n expect(await spacesGuard.canActivate(context)).toBe(true)\n\n // does not allow guest (on personal space)\n userTest.role = USER_ROLE.GUEST\n await expect(spacesGuard.canActivate(context)).rejects.toThrow(HttpException)\n\n // allow if SkipSpacePermissionsCheck is enabled\n userTest.role = USER_ROLE.USER\n SkipSpacePermissionsCheck()(context.getHandler())\n spacesManager.spaceEnv = jest.fn().mockReturnValue({\n enabled: true,\n envPermissions: `${SPACE_OPERATION.MODIFY}`\n } as Partial<SpaceEnv>)\n // does not allow creation but pass\n context.switchToHttp().getRequest.mockReturnValueOnce({\n method: 'POST',\n user: userTest,\n params: { '*': 'files/personal' }\n })\n expect(await spacesGuard.canActivate(context)).toBe(true)\n })\n\n it('should fail with quota exceeded', async () => {\n userTest.role = USER_ROLE.USER\n spacesManager.spaceEnv = jest.fn().mockReturnValueOnce({\n enabled: true,\n envPermissions: `${SPACE_OPERATION.ADD}`,\n quotaIsExceeded: true\n } as Partial<SpaceEnv>)\n context.switchToHttp().getRequest.mockReturnValueOnce({\n method: 'POST',\n user: userTest,\n params: { '*': 'files/personal' }\n })\n await expect(spacesGuard.canActivate(context)).rejects.toEqual(expect.objectContaining({ status: HttpStatus.INSUFFICIENT_STORAGE }))\n })\n\n it('should fail if request content-length header exceed the quota', async () => {\n userTest.role = USER_ROLE.USER\n const storageQuota = 12\n const storageUsage = 11\n spacesManager.spaceEnv = jest.fn().mockReturnValue({\n enabled: true,\n envPermissions: `${SPACE_OPERATION.ADD}`,\n storageQuota: storageQuota,\n storageUsage: storageUsage,\n willExceedQuota: (contentLength: number) => contentLength > storageQuota - storageUsage\n } as Partial<SpaceEnv>)\n context.switchToHttp().getRequest.mockReturnValueOnce({\n method: 'POST',\n headers: { 'content-length': 13 },\n user: userTest,\n params: { '*': 'files/personal' }\n })\n await expect(spacesGuard.canActivate(context)).rejects.toEqual(expect.objectContaining({ status: HttpStatus.INSUFFICIENT_STORAGE }))\n context.switchToHttp().getRequest.mockReturnValueOnce({\n method: 'POST',\n user: userTest,\n headers: {},\n params: { '*': 'files/personal' }\n })\n expect(await spacesGuard.canActivate(context)).toBe(true)\n })\n\n it('should fail with space disabled', async () => {\n userTest.role = USER_ROLE.USER\n spacesManager.spaceEnv = jest.fn().mockReturnValueOnce({\n enabled: false\n } as Partial<SpaceEnv>)\n context.switchToHttp().getRequest.mockReturnValueOnce({\n method: 'POST',\n user: userTest,\n params: { '*': 'files/personal' }\n })\n await expect(spacesGuard.canActivate(context)).rejects.toMatchObject({ status: HttpStatus.FORBIDDEN })\n })\n\n it('should validate (or not) the webdav routes', async () => {\n userTest.role = USER_ROLE.USER\n spacesManager.spaceEnv = jest.fn().mockReturnValue({ enabled: true })\n const spyUrlSegment = jest.spyOn(spacesGuard as any, 'urlSegmentsFromContext')\n WebDAVContext()(context.getHandler())\n context.switchToHttp().getRequest.mockReturnValueOnce({\n user: userTest,\n params: { '*': 'webdav/personal' }\n })\n expect(await spacesGuard.canActivate(context)).toBe(true)\n expect(spyUrlSegment.mock.results[0].value).toEqual(['files', 'personal'])\n context.switchToHttp().getRequest.mockReturnValueOnce({\n user: userTest,\n params: { '*': 'webdav/files' }\n })\n await expect(spacesGuard.canActivate(context)).rejects.toThrow(HttpException)\n // reset mock\n spyUrlSegment.mockRestore()\n })\n\n it('should validate (or not) the sync routes', async () => {\n userTest.role = USER_ROLE.USER\n spacesManager.spaceEnv = jest.fn().mockReturnValue({ enabled: true })\n const spyUrlSegment = jest.spyOn(spacesGuard as any, 'urlSegmentsFromContext')\n SyncContext()(context.getHandler())\n context.switchToHttp().getRequest.mockReturnValueOnce({\n user: userTest,\n params: { '*': 'personal/foo' }\n })\n expect(await spacesGuard.canActivate(context)).toBe(true)\n expect(spyUrlSegment.mock.results[0].value).toEqual(['files', 'personal', 'foo'])\n context.switchToHttp().getRequest.mockReturnValueOnce({\n user: userTest,\n params: { '*': 'sync/files' }\n })\n await expect(spacesGuard.canActivate(context)).rejects.toThrow(HttpException)\n // reset context\n spyUrlSegment.mockRestore()\n })\n\n it('should allow the modify permission when using the POST method with override space permission decorator', async () => {\n userTest.role = USER_ROLE.USER\n spacesManager.spaceEnv = jest.fn().mockReturnValue({ enabled: true, envPermissions: `${SPACE_OPERATION.MODIFY}` })\n OverrideSpacePermission(SPACE_OPERATION.MODIFY)(context.getHandler())\n context.switchToHttp().getRequest.mockReturnValue({\n method: 'POST',\n user: userTest,\n originalUrl: '1',\n params: { '*': 'files/personal/root' }\n })\n expect(await spacesGuard.canActivate(context)).toBe(true)\n // reset context\n context = createMock<ExecutionContext>()\n spacesManager.spaceEnv = jest.fn().mockReturnValue({ enabled: true, envPermissions: `${SPACE_OPERATION.ADD}` })\n await expect(spacesGuard.canActivate(context)).rejects.toThrow(HttpException)\n context.switchToHttp().getRequest.mockReturnValue({\n method: 'POST',\n user: userTest,\n originalUrl: '2',\n params: { '*': 'files/personal/root' }\n })\n expect(await spacesGuard.canActivate(context)).toBe(true)\n })\n\n it('should pass if skipSpaceGuard context is enabled', async () => {\n userTest.role = USER_ROLE.USER\n userTest.applications = [USER_PERMISSION.PERSONAL_SPACE]\n spacesManager.spaceEnv = jest.fn().mockReturnValue({ enabled: true })\n context.switchToHttp().getRequest.mockReturnValue({\n user: userTest,\n params: { '*': 'shares/personal' }\n })\n await expect(spacesGuard.canActivate(context)).rejects.toMatchObject({ status: HttpStatus.FORBIDDEN })\n SkipSpaceGuard()(context.getHandler())\n expect(await spacesGuard.canActivate(context)).toBe(true)\n })\n\n it('coverage only', async () => {\n userTest.role = USER_ROLE.USER\n userTest.applications = [USER_PERMISSION.PERSONAL_SPACE]\n spacesManager.spaceEnv = jest.fn().mockRejectedValueOnce(new Error('error'))\n context.switchToHttp().getRequest.mockReturnValue({\n user: userTest,\n params: { '*': 'files/personal' }\n })\n await expect(spacesGuard.canActivate(context)).rejects.toMatchObject({ status: HttpStatus.BAD_REQUEST })\n })\n})\n"],"names":["describe","SpaceGuard","name","spacesGuard","spacesManager","spacesQueries","userTest","context","beforeAll","module","Test","createTestingModule","providers","provide","DB_TOKEN_PROVIDER","useValue","Cache","ContextManager","NotificationsManager","SpacesManager","SpacesQueries","SharesManager","SharesQueries","FilesQueries","UsersQueries","LinksQueries","compile","get","jest","fn","UserModel","generateUserTest","beforeEach","createMock","it","expect","toBeDefined","switchToHttp","getRequest","mockReturnValue","user","params","canActivate","toBe","req","space","id","repository","SPACE_REPOSITORY","FILES","alias","SPACE_ALIAS","PERSONAL","enabled","root","toBeUndefined","dbFile","toMatchObject","inTrash","ownerId","path","permissions","SPACE_ALL_OPERATIONS","envPermissions","inFilesRepository","inPersonalSpace","inTrashRepository","inSharesRepository","inSharesList","paths","toEqual","arrayContaining","fakeSpace","role","mockReturnValueOnce","spaceId","spaceExternalRootId","SHARE_ALL_OPERATIONS","not","toContain","toHaveLength","owner","login","file","externalPath","intersectPermissions","split","SPACE_PERMS_SEP","filter","p","SPACE_OPERATION","DELETE","join","SHARES","rejects","toThrow","HttpException","applications","USER_PERMISSION","PERSONAL_SPACE","url","spaceEnv","userRole","USER_ROLE","USER","GUEST","MODIFY","method","SkipSpacePermissionsCheck","getHandler","ADD","quotaIsExceeded","objectContaining","status","HttpStatus","INSUFFICIENT_STORAGE","storageQuota","storageUsage","willExceedQuota","contentLength","headers","FORBIDDEN","spyUrlSegment","spyOn","WebDAVContext","mock","results","value","mockRestore","SyncContext","OverrideSpacePermission","originalUrl","SkipSpaceGuard","mockRejectedValueOnce","Error","BAD_REQUEST"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../backend/src/applications/spaces/guards/space.guard.spec.ts"],"sourcesContent":["import { createMock, DeepMocked } from '@golevelup/ts-jest'\nimport { ExecutionContext, HttpException, HttpStatus } from '@nestjs/common'\nimport { Test, TestingModule } from '@nestjs/testing'\nimport { intersectPermissions } from '../../../common/shared'\nimport { Cache } from '../../../infrastructure/cache/services/cache.service'\nimport { ContextManager } from '../../../infrastructure/context/services/context-manager.service'\nimport { DB_TOKEN_PROVIDER } from '../../../infrastructure/database/constants'\nimport { FilesQueries } from '../../files/services/files-queries.service'\nimport { LinksQueries } from '../../links/services/links-queries.service'\nimport { NotificationsManager } from '../../notifications/services/notifications-manager.service'\nimport { SHARE_ALL_OPERATIONS } from '../../shares/constants/shares'\nimport { SharesManager } from '../../shares/services/shares-manager.service'\nimport { SharesQueries } from '../../shares/services/shares-queries.service'\nimport { SyncContext } from '../../sync/decorators/sync-context.decorator'\nimport { USER_PERMISSION, USER_ROLE } from '../../users/constants/user'\nimport { UserModel } from '../../users/models/user.model'\nimport { UsersQueries } from '../../users/services/users-queries.service'\nimport { generateUserTest } from '../../users/utils/test'\nimport { WebDAVContext } from '../../webdav/decorators/webdav-context.decorator'\nimport { SPACE_ALIAS, SPACE_ALL_OPERATIONS, SPACE_OPERATION, SPACE_PERMS_SEP, SPACE_REPOSITORY } from '../constants/spaces'\nimport { OverrideSpacePermission } from '../decorators/space-override-permission.decorator'\nimport { SkipSpaceGuard } from '../decorators/space-skip-guard.decorator'\nimport { SkipSpacePermissionsCheck } from '../decorators/space-skip-permissions.decorator'\nimport { SpaceEnv } from '../models/space-env.model'\nimport { SpacesManager } from '../services/spaces-manager.service'\nimport { SpacesQueries } from '../services/spaces-queries.service'\nimport { SpaceGuard } from './space.guard'\n\ndescribe(SpaceGuard.name, () => {\n let spacesGuard: SpaceGuard\n let spacesManager: SpacesManager\n let spacesQueries: SpacesQueries\n let userTest: UserModel\n let context: DeepMocked<ExecutionContext>\n\n beforeAll(async () => {\n const module: TestingModule = await Test.createTestingModule({\n providers: [\n {\n provide: DB_TOKEN_PROVIDER,\n useValue: {}\n },\n {\n provide: Cache,\n useValue: {}\n },\n { provide: ContextManager, useValue: {} },\n {\n provide: NotificationsManager,\n useValue: {}\n },\n SpaceGuard,\n SpacesManager,\n SpacesQueries,\n SharesManager,\n SharesQueries,\n FilesQueries,\n UsersQueries,\n LinksQueries\n ]\n }).compile()\n\n spacesManager = module.get<SpacesManager>(SpacesManager)\n spacesQueries = module.get<SpacesQueries>(SpacesQueries)\n spacesGuard = module.get<SpaceGuard>(SpaceGuard)\n // mocks\n spacesManager['setQuotaExceeded'] = jest.fn()\n userTest = new UserModel(generateUserTest())\n })\n\n beforeEach(() => {\n context = createMock<ExecutionContext>()\n })\n\n it('should be defined', () => {\n expect(spacesGuard).toBeDefined()\n expect(spacesManager).toBeDefined()\n expect(userTest).toBeDefined()\n })\n\n it('should pass for a personal space', async () => {\n context.switchToHttp().getRequest.mockReturnValue({\n user: userTest,\n params: { '*': 'files/personal/root/foo/bar' }\n })\n expect(await spacesGuard.canActivate(context)).toBe(true)\n const req: any = context.switchToHttp().getRequest()\n expect(req.space.id).toBe(0)\n expect(req.space.repository).toBe(SPACE_REPOSITORY.FILES)\n expect(req.space.alias).toBe(SPACE_ALIAS.PERSONAL)\n expect(req.space.name).toBe(SPACE_ALIAS.PERSONAL)\n expect(req.space.enabled).toBe(true)\n expect(req.space.root).toBeUndefined()\n expect(req.space.dbFile).toMatchObject({ inTrash: false, ownerId: userTest.id, path: 'root/foo/bar' })\n expect(req.space.permissions).toBe(SPACE_ALL_OPERATIONS)\n expect(req.space.envPermissions).toBe(SPACE_ALL_OPERATIONS)\n expect(req.space.inFilesRepository).toBe(true)\n expect(req.space.inPersonalSpace).toBe(true)\n expect(req.space.inTrashRepository).toBe(false)\n expect(req.space.inSharesRepository).toBe(false)\n expect(req.space.inSharesList).toBe(false)\n expect(req.space.paths).toEqual(expect.arrayContaining(['root', 'foo', 'bar']))\n })\n\n it('should pass for a common space', async () => {\n const fakeSpace = {\n id: -1,\n alias: 'test',\n name: 'Test',\n enabled: true,\n permissions: ':a:d:m:so',\n role: 0\n }\n spacesQueries.permissions = jest.fn().mockReturnValueOnce(fakeSpace)\n context.switchToHttp().getRequest.mockReturnValue({\n user: userTest,\n params: { '*': 'files/test' }\n })\n expect(await spacesGuard.canActivate(context)).toBe(true)\n const req: any = context.switchToHttp().getRequest()\n expect(req.space.id).toBe(fakeSpace.id)\n expect(req.space.repository).toBe(SPACE_REPOSITORY.FILES)\n expect(req.space.alias).toBe(fakeSpace.alias)\n expect(req.space.name).toBe(fakeSpace.name)\n expect(req.space.enabled).toBe(true)\n expect(req.space.root).toMatchObject({ id: 0, alias: '', name: '', permissions: 'a:d:m:so' })\n expect(req.space.dbFile).toMatchObject({ inTrash: false, spaceId: fakeSpace.id, spaceExternalRootId: null, path: '.' })\n expect(req.space.permissions).toBe(SHARE_ALL_OPERATIONS)\n expect(req.space.envPermissions).not.toContain('d')\n expect(req.space.inFilesRepository).toBe(true)\n expect(req.space.inPersonalSpace).toBe(false)\n expect(req.space.inTrashRepository).toBe(false)\n expect(req.space.inSharesRepository).toBe(false)\n expect(req.space.inSharesList).toBe(false)\n expect(req.space.paths).toHaveLength(0)\n })\n\n it('should pass for a common space root', async () => {\n const fakeSpace = {\n id: -1,\n alias: 'test',\n name: 'Test',\n enabled: true,\n permissions: 'a:d:m:so',\n role: 1,\n root: {\n id: -2,\n alias: 'root',\n name: 'Root',\n permissions: 'a:d:so',\n owner: { id: -3, login: 'johaven' },\n file: { id: -4, path: 'code', inTrash: false },\n externalPath: null\n }\n }\n spacesQueries.permissions = jest.fn().mockReturnValueOnce(fakeSpace)\n context.switchToHttp().getRequest.mockReturnValue({\n user: userTest,\n params: { '*': 'files/test/root' }\n })\n expect(await spacesGuard.canActivate(context)).toBe(true)\n const req: any = context.switchToHttp().getRequest()\n expect(req.space.id).toBe(fakeSpace.id)\n expect(req.space.repository).toBe(SPACE_REPOSITORY.FILES)\n expect(req.space.alias).toBe(fakeSpace.alias)\n expect(req.space.name).toBe(fakeSpace.name)\n expect(req.space.enabled).toBe(true)\n expect(req.space.root).toMatchObject(fakeSpace.root)\n expect(req.space.dbFile).toMatchObject({ inTrash: false, ownerId: fakeSpace.root.owner.id, path: fakeSpace.root.file.path })\n expect(req.space.permissions).toBe(SPACE_ALL_OPERATIONS)\n expect(req.space.envPermissions).toBe(\n intersectPermissions(fakeSpace.permissions, fakeSpace.root.permissions)\n .split(SPACE_PERMS_SEP)\n .filter((p) => p !== SPACE_OPERATION.DELETE)\n .join(SPACE_PERMS_SEP)\n )\n expect(req.space.inFilesRepository).toBe(true)\n expect(req.space.inPersonalSpace).toBe(false)\n expect(req.space.inTrashRepository).toBe(false)\n expect(req.space.inSharesRepository).toBe(false)\n expect(req.space.inSharesList).toBe(false)\n expect(req.space.paths).toHaveLength(0)\n })\n\n it('should pass for a common space root with a path', async () => {\n const fakeSpace = {\n id: -1,\n alias: 'test',\n name: 'Test',\n enabled: true,\n permissions: 'a:d:m:so',\n role: 1,\n root: {\n id: -2,\n alias: 'root',\n name: 'Root',\n permissions: 'a:d:so',\n owner: { id: -3, login: 'johaven' },\n file: { id: -4, path: 'code', inTrash: false },\n externalPath: null\n }\n }\n spacesQueries.permissions = jest.fn().mockReturnValueOnce(fakeSpace)\n context.switchToHttp().getRequest.mockReturnValue({\n user: userTest,\n params: { '*': 'files/test/root/path' }\n })\n expect(await spacesGuard.canActivate(context)).toBe(true)\n const req: any = context.switchToHttp().getRequest()\n expect(req.space.id).toBe(fakeSpace.id)\n expect(req.space.repository).toBe(SPACE_REPOSITORY.FILES)\n expect(req.space.alias).toBe(fakeSpace.alias)\n expect(req.space.name).toBe(fakeSpace.name)\n expect(req.space.enabled).toBe(true)\n expect(req.space.root).toMatchObject(fakeSpace.root)\n expect(req.space.dbFile).toMatchObject({\n inTrash: false,\n ownerId: fakeSpace.root.owner.id,\n path: `${fakeSpace.root.file.path}/${req.space.paths[0]}`\n })\n expect(req.space.permissions).toBe(SPACE_ALL_OPERATIONS)\n expect(req.space.envPermissions).toBe(fakeSpace.root.permissions)\n expect(req.space.inFilesRepository).toBe(true)\n expect(req.space.inPersonalSpace).toBe(false)\n expect(req.space.inTrashRepository).toBe(false)\n expect(req.space.inSharesRepository).toBe(false)\n expect(req.space.inSharesList).toBe(false)\n expect(req.space.paths).toHaveLength(1)\n })\n\n it('should pass for a space in shares repository', async () => {\n context.switchToHttp().getRequest.mockReturnValue({\n user: userTest,\n params: { '*': 'shares' }\n })\n expect(await spacesGuard.canActivate(context)).toBe(true)\n const req: any = context.switchToHttp().getRequest()\n expect(req.space.id).toBe(0)\n expect(req.space.repository).toBe(SPACE_REPOSITORY.SHARES)\n expect(req.space.alias).toBe(SPACE_REPOSITORY.SHARES)\n expect(req.space.name).toBe(SPACE_REPOSITORY.SHARES)\n expect(req.space.enabled).toBe(true)\n expect(req.space.root).toBeUndefined()\n expect(req.space.dbFile).toBeUndefined()\n expect(req.space.permissions).toBe('')\n expect(req.space.envPermissions).toBe('')\n expect(req.space.inFilesRepository).toBe(false)\n expect(req.space.inPersonalSpace).toBe(false)\n expect(req.space.inTrashRepository).toBe(false)\n expect(req.space.inSharesRepository).toBe(true)\n expect(req.space.inSharesList).toBe(true)\n expect(req.space.paths).toHaveLength(0)\n })\n\n it('should not pass if the space is not found or not valid', async () => {\n const fakeSpace = null\n spacesQueries.permissions = jest.fn().mockReturnValueOnce(fakeSpace)\n context.switchToHttp().getRequest.mockReturnValue({\n user: userTest,\n params: { '*': 'files/foo' }\n })\n await expect(spacesGuard.canActivate(context)).rejects.toThrow(HttpException)\n })\n\n it('should validate (or not) the access to the space depending on the user permissions', async () => {\n // we only check the `spacesManager.checkAccessToSpace` function, ignores the `spacesManager.spaceEnv`\n userTest.applications = [USER_PERMISSION.PERSONAL_SPACE]\n for (const url of ['', 'shares/personal', 'shares/toto']) {\n context.switchToHttp().getRequest.mockReturnValue({\n user: userTest,\n params: { '*': url }\n })\n await expect(spacesGuard.canActivate(context)).rejects.toThrow(HttpException)\n }\n // should pass because it is a standard user\n // should not pass because user is a guest (and dot not have the permission to access to a personal space)\n spacesManager.spaceEnv = jest.fn().mockReturnValueOnce({ enabled: true }) // only for user role\n context.switchToHttp().getRequest.mockReturnValue({\n user: userTest,\n params: { '*': 'files/personal/root/foo/bar' }\n })\n for (const userRole of [USER_ROLE.USER, USER_ROLE.GUEST]) {\n userTest.role = userRole\n if (userRole === USER_ROLE.USER) {\n expect(await spacesGuard.canActivate(context)).toBe(true)\n } else {\n await expect(spacesGuard.canActivate(context)).rejects.toThrow(HttpException)\n }\n }\n })\n\n it('should check user permissions on route', async () => {\n userTest.role = USER_ROLE.USER\n spacesManager.spaceEnv = jest.fn().mockReturnValue({\n enabled: true,\n envPermissions: `${SPACE_OPERATION.MODIFY}`\n } as Partial<SpaceEnv>)\n // does not allow creation (only modify)\n context.switchToHttp().getRequest.mockReturnValueOnce({\n method: 'POST',\n user: userTest,\n params: { '*': 'files/personal' }\n })\n await expect(spacesGuard.canActivate(context)).rejects.toThrow(HttpException)\n\n // allows modification\n context.switchToHttp().getRequest.mockReturnValue({\n method: 'PATCH',\n user: userTest,\n params: { '*': 'files/personal' }\n })\n expect(await spacesGuard.canActivate(context)).toBe(true)\n\n // does not allow guest (on personal space)\n userTest.role = USER_ROLE.GUEST\n await expect(spacesGuard.canActivate(context)).rejects.toThrow(HttpException)\n\n // allow if SkipSpacePermissionsCheck is enabled\n userTest.role = USER_ROLE.USER\n SkipSpacePermissionsCheck()(context.getHandler())\n spacesManager.spaceEnv = jest.fn().mockReturnValue({\n enabled: true,\n envPermissions: `${SPACE_OPERATION.MODIFY}`\n } as Partial<SpaceEnv>)\n // does not allow creation but pass\n context.switchToHttp().getRequest.mockReturnValueOnce({\n method: 'POST',\n user: userTest,\n params: { '*': 'files/personal' }\n })\n expect(await spacesGuard.canActivate(context)).toBe(true)\n })\n\n it('should fail with quota exceeded', async () => {\n userTest.role = USER_ROLE.USER\n spacesManager.spaceEnv = jest.fn().mockReturnValueOnce({\n enabled: true,\n envPermissions: `${SPACE_OPERATION.ADD}`,\n quotaIsExceeded: true\n } as Partial<SpaceEnv>)\n context.switchToHttp().getRequest.mockReturnValueOnce({\n method: 'POST',\n user: userTest,\n params: { '*': 'files/personal' }\n })\n await expect(spacesGuard.canActivate(context)).rejects.toEqual(expect.objectContaining({ status: HttpStatus.INSUFFICIENT_STORAGE }))\n })\n\n it('should fail if request content-length header exceed the quota', async () => {\n userTest.role = USER_ROLE.USER\n const storageQuota = 12\n const storageUsage = 11\n spacesManager.spaceEnv = jest.fn().mockReturnValue({\n enabled: true,\n envPermissions: `${SPACE_OPERATION.ADD}`,\n storageQuota: storageQuota,\n storageUsage: storageUsage,\n willExceedQuota: (contentLength: number) => contentLength > storageQuota - storageUsage\n } as Partial<SpaceEnv>)\n context.switchToHttp().getRequest.mockReturnValueOnce({\n method: 'POST',\n headers: { 'content-length': 13 },\n user: userTest,\n params: { '*': 'files/personal' }\n })\n await expect(spacesGuard.canActivate(context)).rejects.toEqual(expect.objectContaining({ status: HttpStatus.INSUFFICIENT_STORAGE }))\n context.switchToHttp().getRequest.mockReturnValueOnce({\n method: 'POST',\n user: userTest,\n headers: {},\n params: { '*': 'files/personal' }\n })\n expect(await spacesGuard.canActivate(context)).toBe(true)\n })\n\n it('should fail with space disabled', async () => {\n userTest.role = USER_ROLE.USER\n spacesManager.spaceEnv = jest.fn().mockReturnValueOnce({\n enabled: false\n } as Partial<SpaceEnv>)\n context.switchToHttp().getRequest.mockReturnValueOnce({\n method: 'POST',\n user: userTest,\n params: { '*': 'files/personal' }\n })\n await expect(spacesGuard.canActivate(context)).rejects.toMatchObject({ status: HttpStatus.FORBIDDEN })\n })\n\n it('should validate (or not) the webdav routes', async () => {\n userTest.role = USER_ROLE.USER\n spacesManager.spaceEnv = jest.fn().mockReturnValue({ enabled: true })\n const spyUrlSegment = jest.spyOn(spacesGuard as any, 'urlSegmentsFromContext')\n WebDAVContext()(context.getHandler())\n context.switchToHttp().getRequest.mockReturnValueOnce({\n user: userTest,\n params: { '*': 'webdav/personal' }\n })\n expect(await spacesGuard.canActivate(context)).toBe(true)\n expect(spyUrlSegment.mock.results[0].value).toEqual(['files', 'personal'])\n context.switchToHttp().getRequest.mockReturnValueOnce({\n user: userTest,\n params: { '*': 'webdav/files' }\n })\n await expect(spacesGuard.canActivate(context)).rejects.toThrow(HttpException)\n // reset mock\n spyUrlSegment.mockRestore()\n })\n\n it('should validate (or not) the sync routes', async () => {\n userTest.role = USER_ROLE.USER\n spacesManager.spaceEnv = jest.fn().mockReturnValue({ enabled: true })\n const spyUrlSegment = jest.spyOn(spacesGuard as any, 'urlSegmentsFromContext')\n SyncContext()(context.getHandler())\n context.switchToHttp().getRequest.mockReturnValueOnce({\n user: userTest,\n params: { '*': 'personal/foo' }\n })\n expect(await spacesGuard.canActivate(context)).toBe(true)\n expect(spyUrlSegment.mock.results[0].value).toEqual(['files', 'personal', 'foo'])\n context.switchToHttp().getRequest.mockReturnValueOnce({\n user: userTest,\n params: { '*': 'sync/files' }\n })\n await expect(spacesGuard.canActivate(context)).rejects.toThrow(HttpException)\n // reset context\n spyUrlSegment.mockRestore()\n })\n\n it('should allow the modify permission when using the POST method with override space permission decorator', async () => {\n userTest.role = USER_ROLE.USER\n spacesManager.spaceEnv = jest.fn().mockReturnValue({ enabled: true, envPermissions: `${SPACE_OPERATION.MODIFY}` })\n OverrideSpacePermission(SPACE_OPERATION.MODIFY)(context.getHandler())\n context.switchToHttp().getRequest.mockReturnValue({\n method: 'POST',\n user: userTest,\n originalUrl: '1',\n params: { '*': 'files/personal/root' }\n })\n expect(await spacesGuard.canActivate(context)).toBe(true)\n // reset context\n context = createMock<ExecutionContext>()\n spacesManager.spaceEnv = jest.fn().mockReturnValue({ enabled: true, envPermissions: `${SPACE_OPERATION.ADD}` })\n await expect(spacesGuard.canActivate(context)).rejects.toThrow(HttpException)\n context.switchToHttp().getRequest.mockReturnValue({\n method: 'POST',\n user: userTest,\n originalUrl: '2',\n params: { '*': 'files/personal/root' }\n })\n expect(await spacesGuard.canActivate(context)).toBe(true)\n })\n\n it('should pass if skipSpaceGuard context is enabled', async () => {\n userTest.role = USER_ROLE.USER\n userTest.applications = [USER_PERMISSION.PERSONAL_SPACE]\n spacesManager.spaceEnv = jest.fn().mockReturnValue({ enabled: true })\n context.switchToHttp().getRequest.mockReturnValue({\n user: userTest,\n params: { '*': 'shares/personal' }\n })\n await expect(spacesGuard.canActivate(context)).rejects.toMatchObject({ status: HttpStatus.FORBIDDEN })\n SkipSpaceGuard()(context.getHandler())\n expect(await spacesGuard.canActivate(context)).toBe(true)\n })\n\n it('coverage only', async () => {\n userTest.role = USER_ROLE.USER\n userTest.applications = [USER_PERMISSION.PERSONAL_SPACE]\n spacesManager.spaceEnv = jest.fn().mockRejectedValueOnce(new Error('error'))\n context.switchToHttp().getRequest.mockReturnValue({\n user: userTest,\n params: { '*': 'files/personal' }\n })\n await expect(spacesGuard.canActivate(context)).rejects.toMatchObject({ status: HttpStatus.BAD_REQUEST })\n })\n})\n"],"names":["describe","SpaceGuard","name","spacesGuard","spacesManager","spacesQueries","userTest","context","beforeAll","module","Test","createTestingModule","providers","provide","DB_TOKEN_PROVIDER","useValue","Cache","ContextManager","NotificationsManager","SpacesManager","SpacesQueries","SharesManager","SharesQueries","FilesQueries","UsersQueries","LinksQueries","compile","get","jest","fn","UserModel","generateUserTest","beforeEach","createMock","it","expect","toBeDefined","switchToHttp","getRequest","mockReturnValue","user","params","canActivate","toBe","req","space","id","repository","SPACE_REPOSITORY","FILES","alias","SPACE_ALIAS","PERSONAL","enabled","root","toBeUndefined","dbFile","toMatchObject","inTrash","ownerId","path","permissions","SPACE_ALL_OPERATIONS","envPermissions","inFilesRepository","inPersonalSpace","inTrashRepository","inSharesRepository","inSharesList","paths","toEqual","arrayContaining","fakeSpace","role","mockReturnValueOnce","spaceId","spaceExternalRootId","SHARE_ALL_OPERATIONS","not","toContain","toHaveLength","owner","login","file","externalPath","intersectPermissions","split","SPACE_PERMS_SEP","filter","p","SPACE_OPERATION","DELETE","join","SHARES","rejects","toThrow","HttpException","applications","USER_PERMISSION","PERSONAL_SPACE","url","spaceEnv","userRole","USER_ROLE","USER","GUEST","MODIFY","method","SkipSpacePermissionsCheck","getHandler","ADD","quotaIsExceeded","objectContaining","status","HttpStatus","INSUFFICIENT_STORAGE","storageQuota","storageUsage","willExceedQuota","contentLength","headers","FORBIDDEN","spyUrlSegment","spyOn","WebDAVContext","mock","results","value","mockRestore","SyncContext","OverrideSpacePermission","originalUrl","SkipSpaceGuard","mockRejectedValueOnce","Error","BAD_REQUEST"],"mappings":"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"}
@@ -1,8 +1,4 @@
1
- /*
2
- * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
3
- * This file is part of Sync-in | The open source file sync and share solution
4
- * See the LICENSE file for licensing details
5
- */ "use strict";
1
+ "use strict";
6
2
  Object.defineProperty(exports, "__esModule", {
7
3
  value: true
8
4
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/applications/spaces/interfaces/space-diff.interface.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport { SyncDiffDto } from '../../sync/dtos/sync-operations.dto'\n\nexport interface ParseDiffContext {\n regexBasePath: RegExp\n syncDiff: SyncDiffDto\n}\n"],"names":[],"mappings":"AAAA;;;;CAIC"}
1
+ {"version":3,"sources":["../../../../../backend/src/applications/spaces/interfaces/space-diff.interface.ts"],"names":[],"mappings":""}
@@ -1,8 +1,4 @@
1
- /*
2
- * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
3
- * This file is part of Sync-in | The open source file sync and share solution
4
- * See the LICENSE file for licensing details
5
- */ "use strict";
1
+ "use strict";
6
2
  Object.defineProperty(exports, "__esModule", {
7
3
  value: true
8
4
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/applications/spaces/interfaces/space-files.interface.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport type { FileProps } from '../../files/interfaces/file-props.interface'\n\nexport interface SpaceFiles {\n files: FileProps[]\n hasRoots: boolean\n permissions: string\n}\n"],"names":[],"mappings":"AAAA;;;;CAIC"}
1
+ {"version":3,"sources":["../../../../../backend/src/applications/spaces/interfaces/space-files.interface.ts"],"names":[],"mappings":""}