diff --git a/Workflow.md b/Workflow.md index e0c53c4..a3ac2cd 100644 --- a/Workflow.md +++ b/Workflow.md @@ -83,20 +83,20 @@ npm start ### Переменные окружения Проект использует переменные окружения для конфигурации. Создайте файл `.env` в корне проекта на основе `.env.example`. -`PORT` -- Порт HTTP-сервера. По умолчанию - `3000` -`SALT` -- Соль для хеширования паролей -`ME_USER` -- имя пользователя для входа в интерфейс Mongo Express -`ME_PASSWORD` -- пароль для входа в интерфейс Mongo Express. -`MONGO_EXPRESS_PORT` -- порт, на котором доступен Mongo Express -`DB_USER` -- Пользователь для подключения к БД -`DB_PASSWORD` -- Пароль пользователя БД -`DB_HOST` -- Адрес сервера базы данных -`DB_PORT` -- Порт базы данных -`DB_NAME` -- Имя базы данных -`JWT_SECRET` -- Секретный ключ для подписи JWT -`UPLOAD_FILE_DIRECTORY` - Путь для загрузки файлов пользователями -`HOST` -- Хост сервера -`STATIC_DIRECTORY_PATH` -- Путь к директории со статикой +`PORT`=3000 — Порт HTTP-сервера. +`SALT`=some_salt — Соль для хеширования паролей. +`ME_USER`=admin — Имя пользователя для входа в интерфейс Mongo Express. +`ME_PASSWORD`=admin — Пароль для входа в интерфейс Mongo Express. +`MONGO_EXPRESS_PORT`=8081 — Порт, на котором доступен Mongo Express. +`DB_USER`=app — Пользователь для подключения к базе данных. +`DB_PASSWORD`=secret — Пароль пользователя базы данных. +`DB_HOST`=localhost — Адрес сервера базы данных. +`DB_PORT`=27017 — Порт базы данных. +`DB_NAME`=six-cities — Имя базы данных. +`JWT_SECRET`=super_secret_key — Секретный ключ для подписи JWT. +`UPLOAD_FILE_DIRECTORY`=uploads — Путь для загрузки файлов пользователями. +`HOST`=localhost — Хост сервера. +`STATIC_DIRECTORY_PATH`=public — Путь к директории со статикой. ### Остальное Все остальные файлы в проекте являются служебными. Пожалуйста, не удаляйте и не изменяйте их самовольно. Только если того требует задание или наставник. diff --git a/specification/specification.yml b/specification/specification.yml index b1d91dd..b594fb0 100644 --- a/specification/specification.yml +++ b/specification/specification.yml @@ -135,6 +135,12 @@ paths: application/json: schema: $ref: '#/components/schemas/UserFavoriteOffers' + '400': + description: Некорректные данные + content: + application/json: + schema: + $ref: '#/components/schemas/ValidationErrorResponse' '401': description: Пользователь не авторизован content: @@ -475,18 +481,19 @@ paths: schema: $ref: '#/components/schemas/ServerError' - /offers/premium/{city}: + /offers/premium: get: summary: Получить список премиум предложений operationId: getPremiumOffers security: [] tags: [Offers] parameters: - - in: path - name: city + - name: city + in: query required: true schema: type: string + example: 'Paris' responses: '200': description: Предложения успешно получены diff --git a/src/shared/modules/user/user-controller.ts b/src/shared/modules/user/user-controller.ts index 2fde466..c3a3aec 100644 --- a/src/shared/modules/user/user-controller.ts +++ b/src/shared/modules/user/user-controller.ts @@ -19,6 +19,7 @@ import { CreateUserDto, LoginUserDTO } from './dto/user-dto.js'; import { AuthServiceInterface, UserNotFoundException } from '../auth/index.js'; import { PrivateRouteMiddleware } from '../../libs/rest/middleware/private-route.middleware.js'; import { UploadFileMiddleware } from '../../libs/rest/middleware/upload-file.middleware.js'; +import { ValidateObjectIdMiddleware } from '../../libs/rest/middleware/validate-objectid.middleware.js'; export class UserController extends BaseController { constructor( @@ -48,7 +49,10 @@ export class UserController extends BaseController { path: '/:userId/favorite', method: HttpMethod.Get, handler: this.getFavorites, - middlewares: [new PrivateRouteMiddleware()], + middlewares: [ + new PrivateRouteMiddleware(), + new ValidateObjectIdMiddleware('userId'), + ], }); this.addRoute({ @@ -60,6 +64,8 @@ export class UserController extends BaseController { this.config.get('UPLOAD_FILE_DIRECTORY'), 'avatar', ), + new PrivateRouteMiddleware(), + new ValidateObjectIdMiddleware('userId'), ], });