UNPKG

@sync-in/server

Version:

The secure, open-source platform for file storage, sharing, collaboration, and sync

388 lines (387 loc) 18.5 kB
/* * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com> * This file is part of Sync-in | The open source file sync and share solution * See the LICENSE file for licensing details */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "SpacesController", { enumerable: true, get: function() { return SpacesController; } }); const _common = require("@nestjs/common"); const _contextinterceptor = require("../../infrastructure/context/interceptors/context.interceptor"); const _fileerror = require("../files/models/file-error"); const _files = require("../files/utils/files"); const _filestree = require("../files/utils/files-tree"); const _createorupdatesharedto = require("../shares/dto/create-or-update-share.dto"); const _user = require("../users/constants/user"); const _permissionsdecorator = require("../users/decorators/permissions.decorator"); const _rolesdecorator = require("../users/decorators/roles.decorator"); const _userdecorator = require("../users/decorators/user.decorator"); const _permissionsguard = require("../users/guards/permissions.guard"); const _rolesguard = require("../users/guards/roles.guard"); const _usermodel = require("../users/models/user.model"); const _routes = require("./constants/routes"); const _spacedecorator = require("./decorators/space.decorator"); const _createorupdatespacedto = require("./dto/create-or-update-space.dto"); const _deletespacedto = require("./dto/delete-space.dto"); const _searchspacedto = require("./dto/search-space.dto"); const _spacerootsdto = require("./dto/space-roots.dto"); const _spaceguard = require("./guards/space.guard"); const _spaceenvmodel = require("./models/space-env.model"); const _spacesbrowserservice = require("./services/spaces-browser.service"); const _spacesmanagerservice = require("./services/spaces-manager.service"); function _ts_decorate(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; } function _ts_metadata(k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); } function _ts_param(paramIndex, decorator) { return function(target, key) { decorator(target, key, paramIndex); }; } let SpacesController = class SpacesController { async browseSpace(user, space) { return this.spacesBrowser.browse(user, space, { withLocks: true, withSpacesAndShares: true, withSyncs: true, withHasComments: true }); } async treeSpaces(user) { const spaces = await this.spacesManager.listSpacesWithPermissions(user); return (0, _filestree.convertToSpacesTree)(spaces); } async treeFiles(user, space, showFiles) { const spaceFiles = await this.spacesBrowser.browse(user, space); return (0, _filestree.convertToFilesTree)(space, spaceFiles.files, !showFiles); } listSpaces(user) { return this.spacesManager.spacesWithDetails(user.id); } listTrashes(user) { return this.spacesManager.listTrashes(user); } /* MANAGE SPACES */ searchSpaces(user, searchSpaceDto) { return this.spacesManager.searchSpaces(user.id, searchSpaceDto); } getSpace(user, spaceId) { return this.spacesManager.getSpace(user, spaceId); } createSpace(user, createOrUpdateSpaceDto) { return this.spacesManager.createSpace(user, createOrUpdateSpaceDto); } // can be used by space managers updateSpace(user, spaceId, createOrUpdateSpaceDto) { return this.spacesManager.updateSpace(user, spaceId, createOrUpdateSpaceDto); } // can be used by space managers deleteSpace(user, spaceId, deleteSpaceDto) { return this.spacesManager.deleteSpace(user, spaceId, deleteSpaceDto); } /* MANAGE SPACE ROOTS */ getUserRoots(user, spaceId) { return this.spacesManager.getUserRoots(user, spaceId); } createUserRoots(user, spaceId, roots) { return this.spacesManager.updateUserRoots(user, spaceId, roots, true); } updateUserRoots(user, spaceId, roots) { return this.spacesManager.updateUserRoots(user, spaceId, roots); } // Check admin root external path async checkRootExternalPath(checkRootExternalPathDto) { /* reserved to admins */ try { await (0, _files.checkExternalPath)(checkRootExternalPathDto.path); } catch (e) { if (e instanceof _fileerror.FileError) { throw new _common.HttpException(e.message, e.httpCode); } else { throw new _common.HttpException(e.message, _common.HttpStatus.INTERNAL_SERVER_ERROR); } } } /* MANAGE SPACE SHARES */ listSpaceShares(user, spaceId) { return this.spacesManager.listSpaceShares(user, spaceId); } getSpaceShare(user, spaceId, shareId) { return this.spacesManager.getSpaceShare(user, spaceId, shareId); } updateSpaceShare(user, spaceId, shareId, createOrUpdateShareDto) { return this.spacesManager.updateSpaceShare(user, spaceId, shareId, createOrUpdateShareDto); } deleteSpaceShare(user, spaceId, shareId) { return this.spacesManager.deleteSpaceShare(user, spaceId, shareId); } getSpaceShareLink(user, spaceId, shareId) { return this.spacesManager.getSpaceShareLink(user, spaceId, shareId); } constructor(spacesManager, spacesBrowser){ this.spacesManager = spacesManager; this.spacesBrowser = spacesBrowser; } }; _ts_decorate([ (0, _common.Get)(`${_routes.SPACES_ROUTE.BROWSE}/*`), (0, _rolesdecorator.UserHaveRole)(), (0, _permissionsdecorator.UserHavePermission)(), (0, _common.UseGuards)(_spaceguard.SpaceGuard), _ts_param(0, (0, _userdecorator.GetUser)()), _ts_param(1, (0, _spacedecorator.GetSpace)()), _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", [ typeof _usermodel.UserModel === "undefined" ? Object : _usermodel.UserModel, typeof _spaceenvmodel.SpaceEnv === "undefined" ? Object : _spaceenvmodel.SpaceEnv ]), _ts_metadata("design:returntype", Promise) ], SpacesController.prototype, "browseSpace", null); _ts_decorate([ (0, _common.Get)(`${_routes.SPACES_ROUTE.TREE}/${_routes.SPACES_BASE_ROUTE}`), (0, _rolesdecorator.UserHaveRole)(), _ts_param(0, (0, _userdecorator.GetUser)()), _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", [ typeof _usermodel.UserModel === "undefined" ? Object : _usermodel.UserModel ]), _ts_metadata("design:returntype", Promise) ], SpacesController.prototype, "treeSpaces", null); _ts_decorate([ (0, _common.Get)(`${_routes.SPACES_ROUTE.TREE}/*`), (0, _rolesdecorator.UserHaveRole)(), (0, _permissionsdecorator.UserHavePermission)(), (0, _common.UseGuards)(_spaceguard.SpaceGuard), _ts_param(0, (0, _userdecorator.GetUser)()), _ts_param(1, (0, _spacedecorator.GetSpace)()), _ts_param(2, (0, _common.Query)('showFiles', new _common.DefaultValuePipe(false), _common.ParseBoolPipe)), _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", [ typeof _usermodel.UserModel === "undefined" ? Object : _usermodel.UserModel, typeof _spaceenvmodel.SpaceEnv === "undefined" ? Object : _spaceenvmodel.SpaceEnv, Boolean ]), _ts_metadata("design:returntype", Promise) ], SpacesController.prototype, "treeFiles", null); _ts_decorate([ (0, _common.Get)(_routes.SPACES_ROUTE.LIST), (0, _rolesdecorator.UserHaveRole)(), _ts_param(0, (0, _userdecorator.GetUser)()), _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", [ typeof _usermodel.UserModel === "undefined" ? Object : _usermodel.UserModel ]), _ts_metadata("design:returntype", typeof Promise === "undefined" ? Object : Promise) ], SpacesController.prototype, "listSpaces", null); _ts_decorate([ (0, _permissionsdecorator.UserHavePermission)([ _user.USER_PERMISSION.PERSONAL_SPACE, _user.USER_PERMISSION.SPACES ]), (0, _common.Get)(`${_routes.SPACES_ROUTE.TRASH}/${_routes.SPACES_ROUTE.LIST}`), _ts_param(0, (0, _userdecorator.GetUser)()), _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", [ typeof _usermodel.UserModel === "undefined" ? Object : _usermodel.UserModel ]), _ts_metadata("design:returntype", typeof Promise === "undefined" ? Object : Promise) ], SpacesController.prototype, "listTrashes", null); _ts_decorate([ (0, _common.Search)(), _ts_param(0, (0, _userdecorator.GetUser)()), _ts_param(1, (0, _common.Body)()), _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", [ typeof _usermodel.UserModel === "undefined" ? Object : _usermodel.UserModel, typeof _searchspacedto.SearchSpaceDto === "undefined" ? Object : _searchspacedto.SearchSpaceDto ]), _ts_metadata("design:returntype", typeof Promise === "undefined" ? Object : Promise) ], SpacesController.prototype, "searchSpaces", null); _ts_decorate([ (0, _common.Get)(':id'), _ts_param(0, (0, _userdecorator.GetUser)()), _ts_param(1, (0, _common.Param)('id', _common.ParseIntPipe)), _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", [ typeof _usermodel.UserModel === "undefined" ? Object : _usermodel.UserModel, Number ]), _ts_metadata("design:returntype", typeof Promise === "undefined" ? Object : Promise) ], SpacesController.prototype, "getSpace", null); _ts_decorate([ (0, _common.Post)(), (0, _permissionsdecorator.UserHavePermission)(_user.USER_PERMISSION.SPACES_ADMIN), _ts_param(0, (0, _userdecorator.GetUser)()), _ts_param(1, (0, _common.Body)()), _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", [ typeof _usermodel.UserModel === "undefined" ? Object : _usermodel.UserModel, typeof _createorupdatespacedto.CreateOrUpdateSpaceDto === "undefined" ? Object : _createorupdatespacedto.CreateOrUpdateSpaceDto ]), _ts_metadata("design:returntype", typeof Promise === "undefined" ? Object : Promise) ], SpacesController.prototype, "createSpace", null); _ts_decorate([ (0, _common.Put)(':id'), _ts_param(0, (0, _userdecorator.GetUser)()), _ts_param(1, (0, _common.Param)('id', _common.ParseIntPipe)), _ts_param(2, (0, _common.Body)()), _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", [ typeof _usermodel.UserModel === "undefined" ? Object : _usermodel.UserModel, Number, typeof _createorupdatespacedto.CreateOrUpdateSpaceDto === "undefined" ? Object : _createorupdatespacedto.CreateOrUpdateSpaceDto ]), _ts_metadata("design:returntype", typeof Promise === "undefined" ? Object : Promise) ], SpacesController.prototype, "updateSpace", null); _ts_decorate([ (0, _common.Delete)(':id'), _ts_param(0, (0, _userdecorator.GetUser)()), _ts_param(1, (0, _common.Param)('id', _common.ParseIntPipe)), _ts_param(2, (0, _common.Body)()), _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", [ typeof _usermodel.UserModel === "undefined" ? Object : _usermodel.UserModel, Number, typeof _deletespacedto.DeleteSpaceDto === "undefined" ? Object : _deletespacedto.DeleteSpaceDto ]), _ts_metadata("design:returntype", void 0) ], SpacesController.prototype, "deleteSpace", null); _ts_decorate([ (0, _common.Get)(`:id/${_routes.SPACES_ROUTE.ROOTS}`), _ts_param(0, (0, _userdecorator.GetUser)()), _ts_param(1, (0, _common.Param)('id', _common.ParseIntPipe)), _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", [ typeof _usermodel.UserModel === "undefined" ? Object : _usermodel.UserModel, Number ]), _ts_metadata("design:returntype", typeof Promise === "undefined" ? Object : Promise) ], SpacesController.prototype, "getUserRoots", null); _ts_decorate([ (0, _common.Post)(`:id/${_routes.SPACES_ROUTE.ROOTS}`), _ts_param(0, (0, _userdecorator.GetUser)()), _ts_param(1, (0, _common.Param)('id', _common.ParseIntPipe)), _ts_param(2, (0, _common.Body)(new _common.ParseArrayPipe({ items: _spacerootsdto.SpaceRootDto, whitelist: true }))), _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", [ typeof _usermodel.UserModel === "undefined" ? Object : _usermodel.UserModel, Number, Array ]), _ts_metadata("design:returntype", typeof Promise === "undefined" ? Object : Promise) ], SpacesController.prototype, "createUserRoots", null); _ts_decorate([ (0, _common.Put)(`:id/${_routes.SPACES_ROUTE.ROOTS}`), _ts_param(0, (0, _userdecorator.GetUser)()), _ts_param(1, (0, _common.Param)('id', _common.ParseIntPipe)), _ts_param(2, (0, _common.Body)(new _common.ParseArrayPipe({ items: _spacerootsdto.SpaceRootDto, whitelist: true }))), _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", [ typeof _usermodel.UserModel === "undefined" ? Object : _usermodel.UserModel, Number, Array ]), _ts_metadata("design:returntype", typeof Promise === "undefined" ? Object : Promise) ], SpacesController.prototype, "updateUserRoots", null); _ts_decorate([ (0, _common.Post)(_routes.SPACES_ROUTE.ROOT_CHECK), (0, _permissionsdecorator.UserHavePermission)(_user.USER_PERMISSION.SPACES_ADMIN), (0, _rolesdecorator.UserHaveRole)(_user.USER_ROLE.ADMINISTRATOR), _ts_param(0, (0, _common.Body)()), _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", [ typeof _spacerootsdto.CheckRootExternalPathDto === "undefined" ? Object : _spacerootsdto.CheckRootExternalPathDto ]), _ts_metadata("design:returntype", Promise) ], SpacesController.prototype, "checkRootExternalPath", null); _ts_decorate([ (0, _common.Get)(`:id/${_routes.SPACES_ROUTE.SHARES}`), _ts_param(0, (0, _userdecorator.GetUser)()), _ts_param(1, (0, _common.Param)('id', _common.ParseIntPipe)), _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", [ typeof _usermodel.UserModel === "undefined" ? Object : _usermodel.UserModel, Number ]), _ts_metadata("design:returntype", typeof Promise === "undefined" ? Object : Promise) ], SpacesController.prototype, "listSpaceShares", null); _ts_decorate([ (0, _common.Get)(`:id/${_routes.SPACES_ROUTE.SHARES}/:sid`), _ts_param(0, (0, _userdecorator.GetUser)()), _ts_param(1, (0, _common.Param)('id', _common.ParseIntPipe)), _ts_param(2, (0, _common.Param)('sid', _common.ParseIntPipe)), _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", [ typeof _usermodel.UserModel === "undefined" ? Object : _usermodel.UserModel, Number, Number ]), _ts_metadata("design:returntype", typeof Promise === "undefined" ? Object : Promise) ], SpacesController.prototype, "getSpaceShare", null); _ts_decorate([ (0, _common.Put)(`:id/${_routes.SPACES_ROUTE.SHARES}/:sid`), _ts_param(0, (0, _userdecorator.GetUser)()), _ts_param(1, (0, _common.Param)('id', _common.ParseIntPipe)), _ts_param(2, (0, _common.Param)('sid', _common.ParseIntPipe)), _ts_param(3, (0, _common.Body)()), _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", [ typeof _usermodel.UserModel === "undefined" ? Object : _usermodel.UserModel, Number, Number, typeof _createorupdatesharedto.CreateOrUpdateShareDto === "undefined" ? Object : _createorupdatesharedto.CreateOrUpdateShareDto ]), _ts_metadata("design:returntype", typeof Promise === "undefined" ? Object : Promise) ], SpacesController.prototype, "updateSpaceShare", null); _ts_decorate([ (0, _common.Delete)(`:id/${_routes.SPACES_ROUTE.SHARES}/:sid`), _ts_param(0, (0, _userdecorator.GetUser)()), _ts_param(1, (0, _common.Param)('id', _common.ParseIntPipe)), _ts_param(2, (0, _common.Param)('sid', _common.ParseIntPipe)), _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", [ typeof _usermodel.UserModel === "undefined" ? Object : _usermodel.UserModel, Number, Number ]), _ts_metadata("design:returntype", typeof Promise === "undefined" ? Object : Promise) ], SpacesController.prototype, "deleteSpaceShare", null); _ts_decorate([ (0, _common.Get)(`:id/${_routes.SPACES_ROUTE.LINKS}/:sid`), _ts_param(0, (0, _userdecorator.GetUser)()), _ts_param(1, (0, _common.Param)('id', _common.ParseIntPipe)), _ts_param(2, (0, _common.Param)('sid', _common.ParseIntPipe)), _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", [ typeof _usermodel.UserModel === "undefined" ? Object : _usermodel.UserModel, Number, Number ]), _ts_metadata("design:returntype", typeof Promise === "undefined" ? Object : Promise) ], SpacesController.prototype, "getSpaceShareLink", null); SpacesController = _ts_decorate([ (0, _common.Controller)(_routes.SPACES_ROUTE.BASE), (0, _rolesdecorator.UserHaveRole)(_user.USER_ROLE.USER), (0, _permissionsdecorator.UserHavePermission)(_user.USER_PERMISSION.SPACES), (0, _common.UseGuards)(_rolesguard.UserRolesGuard, _permissionsguard.UserPermissionsGuard), (0, _common.UseInterceptors)(_contextinterceptor.ContextInterceptor), _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", [ typeof _spacesmanagerservice.SpacesManager === "undefined" ? Object : _spacesmanagerservice.SpacesManager, typeof _spacesbrowserservice.SpacesBrowser === "undefined" ? Object : _spacesbrowserservice.SpacesBrowser ]) ], SpacesController); //# sourceMappingURL=spaces.controller.js.map