UNPKG

@sync-in/server

Version:

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

436 lines (435 loc) 21.9 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, "UsersController", { enumerable: true, get: function() { return UsersController; } }); const _common = require("@nestjs/common"); const _fs = require("fs"); const _authtwofaguard = require("../../authentication/guards/auth-two-fa-guard"); const _authrequestinterface = require("../../authentication/interfaces/auth-request.interface"); const _sendfile = require("../files/utils/send-file"); const _routes = require("./constants/routes"); const _user = require("./constants/user"); const _permissionsdecorator = require("./decorators/permissions.decorator"); const _rolesdecorator = require("./decorators/roles.decorator"); const _userdecorator = require("./decorators/user.decorator"); const _createorupdategroupdto = require("./dto/create-or-update-group.dto"); const _createorupdateuserdto = require("./dto/create-or-update-user.dto"); const _searchmembersdto = require("./dto/search-members.dto"); const _userpropertiesdto = require("./dto/user-properties.dto"); const _permissionsguard = require("./guards/permissions.guard"); const _rolesguard = require("./guards/roles.guard"); const _usermodel = require("./models/user.model"); const _usersmanagerservice = require("./services/users-manager.service"); const _avatar = require("./utils/avatar"); 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 UsersController = class UsersController { me(user) { return this.usersManager.me(user); } listAppPasswords(user) { return this.usersManager.listAppPasswords(user); } generateAppPassword(user, userAppPasswordDto) { return this.usersManager.generateAppPassword(user, userAppPasswordDto); } deleteAppPassword(user, name) { return this.usersManager.deleteAppPassword(user, name); } updateLanguage(user, userLanguageDto) { return this.usersManager.updateLanguage(user, userLanguageDto); } updatePassword(user, userPasswordDto) { return this.usersManager.updatePassword(user, userPasswordDto); } updateNotification(user, userNotificationDto) { return this.usersManager.updateNotification(user, userNotificationDto); } updateStorageIndexing(user, userStorageIndexingDto) { return this.usersManager.updateStorageIndexing(user, userStorageIndexingDto); } async avatar(user, login) { const isMe = login === 'me'; const [path, mime] = await this.usersManager.getAvatar(isMe ? user.login : login, false, isMe && user.role <= _user.USER_ROLE.USER); return new _common.StreamableFile((0, _fs.createReadStream)(path), { type: mime, disposition: (0, _sendfile.makeContentDispositionAttachment)(_avatar.USER_AVATAR_FILE_NAME) }); } updateAvatar(req) { return this.usersManager.updateAvatar(req); } genAvatar(user) { return this.usersManager.getAvatar(user.login, true); } searchMembers(user, searchMembersDto) { return this.usersManager.searchMembers(user, searchMembersDto); } browseGroups(user, name) { return this.usersManager.browseGroups(user, name); } createPersonalGroup(user, userCreateOrUpdateGroupDto) { return this.usersManager.createPersonalGroup(user, userCreateOrUpdateGroupDto); } updatePersonalGroup(user, groupId, userCreateOrUpdateGroupDto) { return this.usersManager.updatePersonalGroup(user, groupId, userCreateOrUpdateGroupDto); } deletePersonalGroup(user, groupId) { return this.usersManager.deletePersonalGroup(user, groupId); } leavePersonalGroup(user, groupId) { return this.usersManager.leavePersonalGroup(user, groupId); } addUsersToGroup(user, groupId, userIds) { return this.usersManager.addUsersToGroup(user, groupId, userIds); } removeUserFromGroup(user, groupId, userId) { return this.usersManager.removeUserFromGroup(user, groupId, userId); } updateUserFromPersonalGroup(user, groupId, userId, updateUserFromGroupDto) { return this.usersManager.updateUserFromPersonalGroup(user, groupId, userId, updateUserFromGroupDto); } listGuests(user) { return this.usersManager.listGuests(user); } getGuest(user, guestId) { return this.usersManager.getGuest(user, guestId); } createGuest(user, createGuestDto) { return this.usersManager.createGuest(user, createGuestDto); } updateGuest(user, guestId, updateGuestDto) { return this.usersManager.updateGuest(user, guestId, updateGuestDto); } deleteGuest(user, guestId) { return this.usersManager.deleteGuest(user, guestId); } constructor(usersManager){ this.usersManager = usersManager; } }; _ts_decorate([ (0, _common.Get)(_routes.USERS_ROUTE.ME), (0, _rolesdecorator.UserHaveRole)(_user.USER_ROLE.LINK), _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) ], UsersController.prototype, "me", null); _ts_decorate([ (0, _common.Get)(`${_routes.USERS_ROUTE.ME}/${_routes.USERS_ROUTE.APP_PASSWORDS}`), (0, _rolesdecorator.UserHaveRole)(_user.USER_ROLE.USER), (0, _common.UseGuards)(_authtwofaguard.AuthTwoFaGuardWithoutPassword), _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) ], UsersController.prototype, "listAppPasswords", null); _ts_decorate([ (0, _common.Post)(`${_routes.USERS_ROUTE.ME}/${_routes.USERS_ROUTE.APP_PASSWORDS}`), (0, _rolesdecorator.UserHaveRole)(_user.USER_ROLE.USER), (0, _common.UseGuards)(_authtwofaguard.AuthTwoFaGuardWithoutPassword), _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 _userpropertiesdto.UserAppPasswordDto === "undefined" ? Object : _userpropertiesdto.UserAppPasswordDto ]), _ts_metadata("design:returntype", typeof Promise === "undefined" ? Object : Promise) ], UsersController.prototype, "generateAppPassword", null); _ts_decorate([ (0, _common.Delete)(`${_routes.USERS_ROUTE.ME}/${_routes.USERS_ROUTE.APP_PASSWORDS}/:name`), (0, _rolesdecorator.UserHaveRole)(_user.USER_ROLE.USER), _ts_param(0, (0, _userdecorator.GetUser)()), _ts_param(1, (0, _common.Param)('name')), _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", [ typeof _usermodel.UserModel === "undefined" ? Object : _usermodel.UserModel, String ]), _ts_metadata("design:returntype", typeof Promise === "undefined" ? Object : Promise) ], UsersController.prototype, "deleteAppPassword", null); _ts_decorate([ (0, _common.Put)(`${_routes.USERS_ROUTE.ME}/${_routes.USERS_ROUTE.LANGUAGE}`), (0, _rolesdecorator.UserHaveRole)(_user.USER_ROLE.GUEST), _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 _userpropertiesdto.UserLanguageDto === "undefined" ? Object : _userpropertiesdto.UserLanguageDto ]), _ts_metadata("design:returntype", void 0) ], UsersController.prototype, "updateLanguage", null); _ts_decorate([ (0, _common.Put)(`${_routes.USERS_ROUTE.ME}/${_routes.USERS_ROUTE.PASSWORD}`), (0, _common.UseGuards)(_authtwofaguard.AuthTwoFaGuardWithoutPassword), _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 _userpropertiesdto.UserUpdatePasswordDto === "undefined" ? Object : _userpropertiesdto.UserUpdatePasswordDto ]), _ts_metadata("design:returntype", void 0) ], UsersController.prototype, "updatePassword", null); _ts_decorate([ (0, _common.Put)(`${_routes.USERS_ROUTE.ME}/${_routes.USERS_ROUTE.NOTIFICATION}`), (0, _rolesdecorator.UserHaveRole)(_user.USER_ROLE.GUEST), _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 _userpropertiesdto.UserNotificationDto === "undefined" ? Object : _userpropertiesdto.UserNotificationDto ]), _ts_metadata("design:returntype", void 0) ], UsersController.prototype, "updateNotification", null); _ts_decorate([ (0, _common.Put)(`${_routes.USERS_ROUTE.ME}/${_routes.USERS_ROUTE.STORAGE_INDEXING}`), (0, _rolesdecorator.UserHaveRole)(_user.USER_ROLE.USER), _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 _userpropertiesdto.UserStorageIndexingDto === "undefined" ? Object : _userpropertiesdto.UserStorageIndexingDto ]), _ts_metadata("design:returntype", void 0) ], UsersController.prototype, "updateStorageIndexing", null); _ts_decorate([ (0, _common.Get)(`${_routes.USERS_ROUTE.AVATAR}/:login`), (0, _rolesdecorator.UserHaveRole)(_user.USER_ROLE.LINK), (0, _common.Header)('cache-control', 'public,max-age=86400'), _ts_param(0, (0, _userdecorator.GetUser)()), _ts_param(1, (0, _common.Param)('login')), _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", [ typeof _usermodel.UserModel === "undefined" ? Object : _usermodel.UserModel, String ]), _ts_metadata("design:returntype", Promise) ], UsersController.prototype, "avatar", null); _ts_decorate([ (0, _common.Put)(`${_routes.USERS_ROUTE.ME}/${_routes.USERS_ROUTE.AVATAR}`), _ts_param(0, (0, _common.Req)()), _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", [ typeof _authrequestinterface.FastifyAuthenticatedRequest === "undefined" ? Object : _authrequestinterface.FastifyAuthenticatedRequest ]), _ts_metadata("design:returntype", void 0) ], UsersController.prototype, "updateAvatar", null); _ts_decorate([ (0, _common.Patch)(`${_routes.USERS_ROUTE.ME}/${_routes.USERS_ROUTE.AVATAR}`), _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", void 0) ], UsersController.prototype, "genAvatar", 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 _searchmembersdto.SearchMembersDto === "undefined" ? Object : _searchmembersdto.SearchMembersDto ]), _ts_metadata("design:returntype", typeof Promise === "undefined" ? Object : Promise) ], UsersController.prototype, "searchMembers", null); _ts_decorate([ (0, _common.Get)(`${_routes.USERS_ROUTE.ME}/${_routes.USERS_ROUTE.GROUPS}/${_routes.USERS_ROUTE.BROWSE}/:name?`), _ts_param(0, (0, _userdecorator.GetUser)()), _ts_param(1, (0, _common.Param)('name')), _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", [ typeof _usermodel.UserModel === "undefined" ? Object : _usermodel.UserModel, String ]), _ts_metadata("design:returntype", typeof Promise === "undefined" ? Object : Promise) ], UsersController.prototype, "browseGroups", null); _ts_decorate([ (0, _common.Post)(`${_routes.USERS_ROUTE.ME}/${_routes.USERS_ROUTE.GROUPS}`), (0, _permissionsdecorator.UserHavePermission)(_user.USER_PERMISSION.PERSONAL_GROUPS_ADMIN), (0, _common.UseGuards)(_permissionsguard.UserPermissionsGuard), _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 _createorupdategroupdto.UserCreateOrUpdateGroupDto === "undefined" ? Object : _createorupdategroupdto.UserCreateOrUpdateGroupDto ]), _ts_metadata("design:returntype", typeof Promise === "undefined" ? Object : Promise) ], UsersController.prototype, "createPersonalGroup", null); _ts_decorate([ (0, _common.Put)(`${_routes.USERS_ROUTE.ME}/${_routes.USERS_ROUTE.GROUPS}/: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 _createorupdategroupdto.UserCreateOrUpdateGroupDto === "undefined" ? Object : _createorupdategroupdto.UserCreateOrUpdateGroupDto ]), _ts_metadata("design:returntype", typeof Promise === "undefined" ? Object : Promise) ], UsersController.prototype, "updatePersonalGroup", null); _ts_decorate([ (0, _common.Delete)(`${_routes.USERS_ROUTE.ME}/${_routes.USERS_ROUTE.GROUPS}/: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) ], UsersController.prototype, "deletePersonalGroup", null); _ts_decorate([ (0, _common.Delete)(`${_routes.USERS_ROUTE.ME}/${_routes.USERS_ROUTE.GROUPS}/${_routes.USERS_ROUTE.GROUPS_LEAVE}/: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) ], UsersController.prototype, "leavePersonalGroup", null); _ts_decorate([ (0, _common.Patch)(`${_routes.USERS_ROUTE.ME}/${_routes.USERS_ROUTE.GROUPS}/:groupId/${_routes.USERS_ROUTE.USERS}`), _ts_param(0, (0, _userdecorator.GetUser)()), _ts_param(1, (0, _common.Param)('groupId', _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, Array ]), _ts_metadata("design:returntype", typeof Promise === "undefined" ? Object : Promise) ], UsersController.prototype, "addUsersToGroup", null); _ts_decorate([ (0, _common.Delete)(`${_routes.USERS_ROUTE.ME}/${_routes.USERS_ROUTE.GROUPS}/:groupId/${_routes.USERS_ROUTE.USERS}/:userId`), _ts_param(0, (0, _userdecorator.GetUser)()), _ts_param(1, (0, _common.Param)('groupId', _common.ParseIntPipe)), _ts_param(2, (0, _common.Param)('userId', _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) ], UsersController.prototype, "removeUserFromGroup", null); _ts_decorate([ (0, _common.Patch)(`${_routes.USERS_ROUTE.ME}/${_routes.USERS_ROUTE.GROUPS}/:groupId/${_routes.USERS_ROUTE.USERS}/:userId`), _ts_param(0, (0, _userdecorator.GetUser)()), _ts_param(1, (0, _common.Param)('groupId', _common.ParseIntPipe)), _ts_param(2, (0, _common.Param)('userId', _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 _createorupdateuserdto.UpdateUserFromGroupDto === "undefined" ? Object : _createorupdateuserdto.UpdateUserFromGroupDto ]), _ts_metadata("design:returntype", typeof Promise === "undefined" ? Object : Promise) ], UsersController.prototype, "updateUserFromPersonalGroup", null); _ts_decorate([ (0, _common.Get)(`${_routes.USERS_ROUTE.ME}/${_routes.USERS_ROUTE.GUESTS}`), _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) ], UsersController.prototype, "listGuests", null); _ts_decorate([ (0, _common.Get)(`${_routes.USERS_ROUTE.ME}/${_routes.USERS_ROUTE.GUESTS}/: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) ], UsersController.prototype, "getGuest", null); _ts_decorate([ (0, _common.Post)(`${_routes.USERS_ROUTE.ME}/${_routes.USERS_ROUTE.GUESTS}`), (0, _permissionsdecorator.UserHavePermission)(_user.USER_PERMISSION.GUESTS_ADMIN), (0, _common.UseGuards)(_permissionsguard.UserPermissionsGuard), _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 _createorupdateuserdto.CreateUserDto === "undefined" ? Object : _createorupdateuserdto.CreateUserDto ]), _ts_metadata("design:returntype", typeof Promise === "undefined" ? Object : Promise) ], UsersController.prototype, "createGuest", null); _ts_decorate([ (0, _common.Put)(`${_routes.USERS_ROUTE.ME}/${_routes.USERS_ROUTE.GUESTS}/: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 _createorupdateuserdto.UpdateUserDto === "undefined" ? Object : _createorupdateuserdto.UpdateUserDto ]), _ts_metadata("design:returntype", typeof Promise === "undefined" ? Object : Promise) ], UsersController.prototype, "updateGuest", null); _ts_decorate([ (0, _common.Delete)(`${_routes.USERS_ROUTE.ME}/${_routes.USERS_ROUTE.GUESTS}/: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) ], UsersController.prototype, "deleteGuest", null); UsersController = _ts_decorate([ (0, _common.Controller)(_routes.USERS_ROUTE.BASE), (0, _common.UseGuards)(_rolesguard.UserRolesGuard), (0, _rolesdecorator.UserHaveRole)(_user.USER_ROLE.USER), _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", [ typeof _usersmanagerservice.UsersManager === "undefined" ? Object : _usersmanagerservice.UsersManager ]) ], UsersController); //# sourceMappingURL=users.controller.js.map