first step

This commit is contained in:
Alex Ant
2024-12-10 00:47:28 +05:00
commit 4965aa4729
503 changed files with 46117 additions and 0 deletions
Vendored
BIN
View File
Binary file not shown.
+1
View File
@@ -0,0 +1 @@
node_modules/
+124
View File
@@ -0,0 +1,124 @@
# Change Log
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [2.1.6](https://github.com/coopenomics/monocoop/compare/v2.1.5...v2.1.6) (2024-10-30)
**Note:** Version bump only for package monocoop
## [2.1.5](https://github.com/coopenomics/monocoop/compare/v2.1.4...v2.1.5) (2024-10-28)
**Note:** Version bump only for package monocoop
## [2.1.4](https://github.com/coopenomics/monocoop/compare/v2.1.4-alpha.2...v2.1.4) (2024-10-28)
**Note:** Version bump only for package monocoop
## [2.1.3](https://github.com/coopenomics/monocoop/compare/v2.1.2-alpha.10...v2.1.3) (2024-10-26)
## [2.1.2](https://github.com/coopenomics/monocoop/compare/v2.1.1...v2.1.2) (2024-10-19)
**Note:** Version bump only for package monocoop
## [2.1.2](https://github.com/coopenomics/monocoop/compare/v2.1.1...v2.1.2) (2024-10-19)
**Note:** Version bump only for package monocoop
# [2.1.0](https://github.com/coopenomics/monocoop/compare/v2.0.10-alpha.3...v2.1.0) (2024-10-13)
### Features
* запрос соглашений ([9a6a72f](https://github.com/coopenomics/monocoop/commit/9a6a72f605ba52eef2ed6f18ccee6fbed287ea00))
## [2.0.9](https://github.com/coopenomics/monocoop/compare/v2.0.8...v2.0.9) (2024-10-10)
**Note:** Version bump only for package monocoop
## [2.0.8](https://github.com/coopenomics/monocoop/compare/v2.0.7...v2.0.8) (2024-10-09)
**Note:** Version bump only for package monocoop
## [2.0.7](https://github.com/coopenomics/monocoop/compare/v2.0.6...v2.0.7) (2024-09-30)
**Note:** Version bump only for package monocoop
## [2.0.6](https://github.com/coopenomics/monocoop/compare/v2.0.5...v2.0.6) (2024-09-30)
**Note:** Version bump only for package monocoop
## [2.0.5](https://github.com/coopenomics/monocoop/compare/v2.0.5-alpha.0...v2.0.5) (2024-09-30)
**Note:** Version bump only for package monocoop
## [2.0.2](https://github.com/coopenomics/monocoop/compare/v2.0.2-alpha.1...v2.0.2) (2024-09-29)
**Note:** Version bump only for package monocoop
# 2.1.0 (2024-09-29)
### Bug Fixes
* **importers:** исправлена ошибка в импорте модуля @wharfkit/contract ([bf89032](https://github.com/coopenomics/monocoop/commit/bf89032d8f66444804a2521f4eb96ffc75b0f605))
* **terminal:** исправлен шрифт в README ([889447a](https://github.com/coopenomics/monocoop/commit/889447a93ceadb577613ddb5b1cb2ef1cc3d54b6))
* **terminal:** исправлено описание проекта ([989b318](https://github.com/coopenomics/monocoop/commit/989b3180ded99a871e018cf26e6c493449223c01))
* **terminal:** fix typo in README.md ([fdf9996](https://github.com/coopenomics/monocoop/commit/fdf999619d2d69e960b062fe6815f5b057c95f48))
### Features
* добавлен docker-compose.yaml ([6a46697](https://github.com/coopenomics/monocoop/commit/6a46697c9d6cc3cde14dbce8f70997c00f9850de))
* **package:** добавлен скрипт gpt-commit для удобного коммита ([e0b5107](https://github.com/coopenomics/monocoop/commit/e0b510799bb0ac68890d572deb652beefd0651c4))
* **terminal:** добавлена поддержка новых команд ([73e4ca2](https://github.com/coopenomics/monocoop/commit/73e4ca226acebcbea3ae59a62def99d86efb1353))
+39
View File
@@ -0,0 +1,39 @@
k# Conventional Commits
### Основные типы коммитов:
- **`feat`**: Добавление новой функциональности (feature).
- Пример: `feat: добавлена возможность загрузки файлов`
- **`fix`**: Исправление бага.
- Пример: `fix: исправлена ошибка отображения кнопки на мобильных устройствах`
- **`chore`**: Изменения, не влияющие на исходный код (например, обновление зависимостей или инструментария).
- Пример: `chore: обновление зависимостей`
- **`docs`**: Изменения в документации.
- Пример: `docs: обновлено руководство пользователя`
- **`style`**: Изменения стиля кода, не влияющие на его функциональность (форматирование, пробелы, и т.д.).
- Пример: `style: исправлены отступы в коде`
- **`refactor`**: Изменения в коде, которые не исправляют баги и не добавляют новую функциональность.
- Пример: `refactor: улучшена структура класса`
- **`perf`**: Изменения, направленные на улучшение производительности.
- Пример: `perf: оптимизирована работа с массивами`
- **`test`**: Добавление или изменение тестов.
- Пример: `test: добавлен тест для проверки функции отправки сообщений`
### Дополнительные типы коммитов:
- **`build`**: Изменения, связанные с процессом сборки или зависимостями.
- Пример: `build: обновление конфигурации Webpack`
- **`ci`**: Изменения, касающиеся настроек непрерывной интеграции (например, Travis, Jenkins).
- Пример: `ci: настройка Travis для автоматических сборок`
- **`revert`**: Откат на предыдущие изменения.
- Пример: `revert: откат коммита e0b5107`
+10
View File
@@ -0,0 +1,10 @@
FROM node:18-alpine
WORKDIR /app
COPY . .
RUN npm install -g pnpm lerna
RUN pnpm install
RUN lerna run build
+8
View File
@@ -0,0 +1,8 @@
# CARDCOOP
## Лицензия
Продукт Потребительского Кооператива "ВОСХОД" распространяется по лицензии BY-NC-SA 4.0.
Разрешено делиться, копировать и распространять материал на любом носителе и форме, адаптировать, делать ремиксы, видоизменять и создавать новое, опираясь на этот материал. При использовании, Вы должны обеспечить указание авторства, предоставить ссылку, и обозначить изменения, если таковые были сделаны. Если вы перерабатываете, преобразовываете материал или берёте его за основу для производного произведения, вы должны распространять переделанные вами части материала на условиях той же лицензии , в соответствии с которой распространяется оригинал. Запрещено коммерческое использование материала. Использование в коммерческих целях – это использование, в первую очередь направленное на получение коммерческого преимущества или денежного вознаграждения.
Юридический текст лицензии: https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.ru
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+25
View File
@@ -0,0 +1,25 @@
module.exports = {
parser: '@typescript-eslint/parser',
parserOptions: {
project: 'tsconfig.json',
tsconfigRootDir: __dirname,
sourceType: 'module',
},
plugins: ['@typescript-eslint/eslint-plugin'],
extends: [
'plugin:@typescript-eslint/recommended',
'plugin:prettier/recommended',
],
root: true,
env: {
node: true,
jest: true,
},
ignorePatterns: ['.eslintrc.js'],
rules: {
'@typescript-eslint/interface-name-prefix': 'off',
'@typescript-eslint/explicit-function-return-type': 'off',
'@typescript-eslint/explicit-module-boundary-types': 'off',
'@typescript-eslint/no-explicit-any': 'off',
},
};
+2
View File
@@ -0,0 +1,2 @@
.env
node_modules/
+4
View File
@@ -0,0 +1,4 @@
{
"singleQuote": true,
"trailingComma": "all"
}
+23
View File
@@ -0,0 +1,23 @@
# Используем официальный образ Node.js
FROM node:14
# Создаем рабочую директорию
WORKDIR /usr/src/app
# Копируем package.json и package-lock.json
COPY package*.json ./
# Устанавливаем зависимости
RUN npm install
# Копируем остальной код приложения
COPY . .
# Собираем приложение (если используется TypeScript)
RUN npm run build
# Открываем порт
EXPOSE 3000
# Запускаем приложение
CMD ["npm", "run", "start:prod"]
+99
View File
@@ -0,0 +1,99 @@
<p align="center">
<a href="http://nestjs.com/" target="blank"><img src="https://nestjs.com/img/logo-small.svg" width="120" alt="Nest Logo" /></a>
</p>
[circleci-image]: https://img.shields.io/circleci/build/github/nestjs/nest/master?token=abc123def456
[circleci-url]: https://circleci.com/gh/nestjs/nest
<p align="center">A progressive <a href="http://nodejs.org" target="_blank">Node.js</a> framework for building efficient and scalable server-side applications.</p>
<p align="center">
<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/v/@nestjs/core.svg" alt="NPM Version" /></a>
<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/l/@nestjs/core.svg" alt="Package License" /></a>
<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/dm/@nestjs/common.svg" alt="NPM Downloads" /></a>
<a href="https://circleci.com/gh/nestjs/nest" target="_blank"><img src="https://img.shields.io/circleci/build/github/nestjs/nest/master" alt="CircleCI" /></a>
<a href="https://coveralls.io/github/nestjs/nest?branch=master" target="_blank"><img src="https://coveralls.io/repos/github/nestjs/nest/badge.svg?branch=master#9" alt="Coverage" /></a>
<a href="https://discord.gg/G7Qnnhy" target="_blank"><img src="https://img.shields.io/badge/discord-online-brightgreen.svg" alt="Discord"/></a>
<a href="https://opencollective.com/nest#backer" target="_blank"><img src="https://opencollective.com/nest/backers/badge.svg" alt="Backers on Open Collective" /></a>
<a href="https://opencollective.com/nest#sponsor" target="_blank"><img src="https://opencollective.com/nest/sponsors/badge.svg" alt="Sponsors on Open Collective" /></a>
<a href="https://paypal.me/kamilmysliwiec" target="_blank"><img src="https://img.shields.io/badge/Donate-PayPal-ff3f59.svg" alt="Donate us"/></a>
<a href="https://opencollective.com/nest#sponsor" target="_blank"><img src="https://img.shields.io/badge/Support%20us-Open%20Collective-41B883.svg" alt="Support us"></a>
<a href="https://twitter.com/nestframework" target="_blank"><img src="https://img.shields.io/twitter/follow/nestframework.svg?style=social&label=Follow" alt="Follow us on Twitter"></a>
</p>
<!--[![Backers on Open Collective](https://opencollective.com/nest/backers/badge.svg)](https://opencollective.com/nest#backer)
[![Sponsors on Open Collective](https://opencollective.com/nest/sponsors/badge.svg)](https://opencollective.com/nest#sponsor)-->
## Description
[Nest](https://github.com/nestjs/nest) framework TypeScript starter repository.
## Project setup
```bash
$ pnpm install
```
## Compile and run the project
```bash
# development
$ pnpm run start
# watch mode
$ pnpm run start:dev
# production mode
$ pnpm run start:prod
```
## Run tests
```bash
# unit tests
$ pnpm run test
# e2e tests
$ pnpm run test:e2e
# test coverage
$ pnpm run test:cov
```
## Deployment
When you're ready to deploy your NestJS application to production, there are some key steps you can take to ensure it runs as efficiently as possible. Check out the [deployment documentation](https://docs.nestjs.com/deployment) for more information.
If you are looking for a cloud-based platform to deploy your NestJS application, check out [Mau](https://mau.nestjs.com), our official platform for deploying NestJS applications on AWS. Mau makes deployment straightforward and fast, requiring just a few simple steps:
```bash
$ pnpm install -g mau
$ mau deploy
```
With Mau, you can deploy your application in just a few clicks, allowing you to focus on building features rather than managing infrastructure.
## Resources
Check out a few resources that may come in handy when working with NestJS:
- Visit the [NestJS Documentation](https://docs.nestjs.com) to learn more about the framework.
- For questions and support, please visit our [Discord channel](https://discord.gg/G7Qnnhy).
- To dive deeper and get more hands-on experience, check out our official video [courses](https://courses.nestjs.com/).
- Deploy your application to AWS with the help of [NestJS Mau](https://mau.nestjs.com) in just a few clicks.
- Visualize your application graph and interact with the NestJS application in real-time using [NestJS Devtools](https://devtools.nestjs.com).
- Need help with your project (part-time to full-time)? Check out our official [enterprise support](https://enterprise.nestjs.com).
- To stay in the loop and get updates, follow us on [X](https://x.com/nestframework) and [LinkedIn](https://linkedin.com/company/nestjs).
- Looking for a job, or have a job to offer? Check out our official [Jobs board](https://jobs.nestjs.com).
## Support
Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support).
## Stay in touch
- Author - [Kamil Myśliwiec](https://twitter.com/kammysliwiec)
- Website - [https://nestjs.com](https://nestjs.com/)
- Twitter - [@nestframework](https://twitter.com/nestframework)
## License
Nest is [MIT licensed](https://github.com/nestjs/nest/blob/master/LICENSE).
+2
View File
@@ -0,0 +1,2 @@
export declare class AppModule {
}
+57
View File
@@ -0,0 +1,57 @@
"use strict";
var __decorate = (this && this.__decorate) || function (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;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.AppModule = void 0;
const common_1 = require("@nestjs/common");
const passport_1 = require("@nestjs/passport");
const jwt_1 = require("@nestjs/jwt");
const auth_controller_1 = require("./infrastructure/auth.controller");
const card_controller_1 = require("./infrastructure/card.controller");
const access_controller_1 = require("./infrastructure/access.controller");
const auth_service_1 = require("./application/auth.service");
const card_service_1 = require("./application/card.service");
const access_service_1 = require("./application/access.service");
const jwt_strategy_1 = require("./infrastructure/strategies/jwt.strategy");
const jwt_auth_guard_1 = require("./infrastructure/guards/jwt-auth.guard");
const user_domain_service_1 = require("./domain/services/user.domain-service");
const card_domain_service_1 = require("./domain/services/card.domain-service");
const access_domain_service_1 = require("./domain/services/access.domain-service");
const coop_jwt_strategy_1 = require("./infrastructure/strategies/coop-jwt.strategy");
const coop_jwt_auth_guard_1 = require("./infrastructure/guards/coop-jwt-auth.guard");
const database_module_1 = require("./infrastructure/database.module");
let AppModule = class AppModule {
};
exports.AppModule = AppModule;
exports.AppModule = AppModule = __decorate([
(0, common_1.Module)({
imports: [
database_module_1.DatabaseModule,
passport_1.PassportModule,
jwt_1.JwtModule.register({
secret: 'access_secret',
signOptions: { expiresIn: '15m' },
}),
],
controllers: [
auth_controller_1.AuthController, card_controller_1.CardController, access_controller_1.AccessController
],
providers: [
auth_service_1.AuthService,
card_service_1.CardService,
access_service_1.AccessService,
jwt_strategy_1.JwtStrategy,
jwt_auth_guard_1.JwtAuthGuard,
user_domain_service_1.UserDomainService,
card_domain_service_1.CardDomainService,
access_domain_service_1.AccessDomainService,
coop_jwt_strategy_1.CoopJwtStrategy,
coop_jwt_auth_guard_1.CoopJwtAuthGuard,
],
})
], AppModule);
//# sourceMappingURL=app.module.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"app.module.js","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,+CAAkD;AAClD,qCAAwC;AACxC,sEAAkE;AAClE,sEAAkE;AAClE,0EAAsE;AACtE,6DAAyD;AACzD,6DAAyD;AACzD,iEAA6D;AAC7D,2EAAuE;AACvE,2EAAsE;AACtE,+EAA0E;AAC1E,+EAA0E;AAC1E,mFAA8E;AAC9E,qFAAgF;AAChF,qFAA+E;AAC/E,sEAAkE;AA2B3D,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,8BAAS;oBAAT,SAAS;IAzBrB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,gCAAc;YACd,yBAAc;YACd,eAAS,CAAC,QAAQ,CAAC;gBACjB,MAAM,EAAE,eAAe;gBACvB,WAAW,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;aAClC,CAAC;SACH;QACD,WAAW,EAAE;YACX,gCAAc,EAAE,gCAAc,EAAE,oCAAgB;SACjD;QACD,SAAS,EAAE;YACT,0BAAW;YACX,0BAAW;YACX,8BAAa;YACb,0BAAW;YACX,6BAAY;YACZ,uCAAiB;YACjB,uCAAiB;YACjB,2CAAmB;YACnB,mCAAe;YACf,sCAAgB;SACjB;KACF,CAAC;GACW,SAAS,CAAG"}
+12
View File
@@ -0,0 +1,12 @@
import { AccessDomainService } from '../domain/services/access.domain-service';
import { PrepareShareDataDto, CoopInfoResponseDto, ShareDataDto, ShareDataResponseDto, CoopExchangeTicketDto, CoopJwtResponseDto } from '../infrastructure/dto/access.dto';
import { CoopRepository } from 'src/domain/coop.repository';
export declare class AccessService {
private readonly accessDomainService;
private readonly coopRepository;
constructor(accessDomainService: AccessDomainService, coopRepository: CoopRepository);
prepareShareData(dto: PrepareShareDataDto): Promise<CoopInfoResponseDto>;
shareData(dto: ShareDataDto, username: string): Promise<ShareDataResponseDto>;
exchangeTicketForJwt(dto: CoopExchangeTicketDto): Promise<CoopJwtResponseDto>;
getEncryptedData(username: string, coopName: string): Promise<string>;
}
+66
View File
@@ -0,0 +1,66 @@
"use strict";
var __decorate = (this && this.__decorate) || function (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;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.AccessService = void 0;
const common_1 = require("@nestjs/common");
const access_domain_service_1 = require("../domain/services/access.domain-service");
const access_request_entity_1 = require("../domain/access-request.entity");
const coop_repository_1 = require("../domain/coop.repository");
const jwt = require("jsonwebtoken");
let AccessService = class AccessService {
constructor(accessDomainService, coopRepository) {
this.accessDomainService = accessDomainService;
this.coopRepository = coopRepository;
}
async prepareShareData(dto) {
const coop = await this.coopRepository.findByName(dto.coopName);
if (!coop) {
throw new common_1.BadRequestException('Cooperative not found');
}
return {
coopName: coop.name,
coopPublicKey: coop.publicKey,
};
}
async shareData(dto, username) {
const accessRequest = new access_request_entity_1.AccessRequest();
accessRequest.username = username;
accessRequest.coopName = dto.coopName;
accessRequest.encryptedData = dto.encryptedData;
const ticket = await this.accessDomainService.saveEncryptedData(accessRequest);
return { ticket };
}
async exchangeTicketForJwt(dto) {
const accessRequest = await this.accessDomainService.getAccessRequestByAccessId(dto.ticket);
if (!accessRequest) {
throw new common_1.BadRequestException('Invalid ticket');
}
const coopAccessToken = jwt.sign({ username: accessRequest.username, coopName: accessRequest.coopName }, 'coop_access_secret', { expiresIn: '15m' });
return { accessToken: coopAccessToken };
}
async getEncryptedData(username, coopName) {
const accessRequest = await this.accessDomainService.getEncryptedData(username, coopName);
if (!accessRequest) {
throw new common_1.BadRequestException('Access not granted');
}
return accessRequest.encryptedData;
}
};
exports.AccessService = AccessService;
exports.AccessService = AccessService = __decorate([
(0, common_1.Injectable)(),
__param(1, (0, common_1.Inject)(coop_repository_1.COOP_REPOSITORY)),
__metadata("design:paramtypes", [access_domain_service_1.AccessDomainService, Object])
], AccessService);
//# sourceMappingURL=access.service.js.map
@@ -0,0 +1 @@
{"version":3,"file":"access.service.js","sourceRoot":"","sources":["../../src/application/access.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAyE;AACzE,oFAA+E;AAE/E,2EAAgE;AAChE,+DAA6E;AAC7E,oCAAoC;AAG7B,IAAM,aAAa,GAAnB,MAAM,aAAa;IACxB,YACmB,mBAAwC,EACf,cAA8B;QADvD,wBAAmB,GAAnB,mBAAmB,CAAqB;QACf,mBAAc,GAAd,cAAc,CAAgB;IACvE,CAAC;IAEJ,KAAK,CAAC,gBAAgB,CAAC,GAAwB;QAC7C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChE,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,4BAAmB,CAAC,uBAAuB,CAAC,CAAC;QACzD,CAAC;QAED,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,aAAa,EAAE,IAAI,CAAC,SAAS;SAC9B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,GAAiB,EAAE,QAAgB;QACjD,MAAM,aAAa,GAAG,IAAI,qCAAa,EAAE,CAAC;QAC1C,aAAa,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAClC,aAAa,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QACtC,aAAa,CAAC,aAAa,GAAG,GAAG,CAAC,aAAa,CAAC;QAEhD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;QAE/E,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,GAA0B;QACnD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,0BAA0B,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5F,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,4BAAmB,CAAC,gBAAgB,CAAC,CAAC;QAClD,CAAC;QAGD,MAAM,eAAe,GAAG,GAAG,CAAC,IAAI,CAC9B,EAAE,QAAQ,EAAE,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,CAAC,QAAQ,EAAE,EACtE,oBAAoB,EACpB,EAAE,SAAS,EAAE,KAAK,EAAE,CACrB,CAAC;QAEF,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,QAAgB,EAAE,QAAgB;QACvD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC1F,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,4BAAmB,CAAC,oBAAoB,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,aAAa,CAAC,aAAa,CAAC;IACrC,CAAC;CAGF,CAAA;AAtDY,sCAAa;wBAAb,aAAa;IADzB,IAAA,mBAAU,GAAE;IAIR,WAAA,IAAA,eAAM,EAAC,iCAAe,CAAC,CAAA;qCADc,2CAAmB;GAFhD,aAAa,CAsDzB"}
+20
View File
@@ -0,0 +1,20 @@
import { UserDomainService } from '../domain/services/user.domain-service';
import { InitiateRegistrationDto, CompleteRegistrationDto, UserResponseDto, InitiateLoginDto, CompleteLoginDto } from '../infrastructure/dto/user.dto';
export declare class AuthService {
private readonly userDomainService;
constructor(userDomainService: UserDomainService);
initiateRegistration(dto: InitiateRegistrationDto): Promise<{
uuid: string;
serverSalt: string;
}>;
completeRegistration(dto: CompleteRegistrationDto): Promise<UserResponseDto>;
initiateLogin(dto: InitiateLoginDto): Promise<{
uuid: string;
serverSalt: string;
}>;
completeLogin(dto: CompleteLoginDto): Promise<UserResponseDto>;
private generateAccessToken;
private generateRefreshToken;
refreshAccessToken(refreshToken: string): Promise<UserResponseDto>;
logout(refreshToken: string): Promise<void>;
}
+64
View File
@@ -0,0 +1,64 @@
"use strict";
var __decorate = (this && this.__decorate) || function (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;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.AuthService = void 0;
const common_1 = require("@nestjs/common");
const user_domain_service_1 = require("../domain/services/user.domain-service");
const jwt = require("jsonwebtoken");
let AuthService = class AuthService {
constructor(userDomainService) {
this.userDomainService = userDomainService;
}
async initiateRegistration(dto) {
return this.userDomainService.initiateRegistration(dto.email);
}
async completeRegistration(dto) {
const user = await this.userDomainService.completeRegistration(dto.email, dto.hashKey, dto.uuid);
const accessToken = this.generateAccessToken(user.id);
const refreshToken = this.generateRefreshToken(user.id);
return { accessToken, refreshToken };
}
async initiateLogin(dto) {
return this.userDomainService.initiateLogin(dto.email);
}
async completeLogin(dto) {
const user = await this.userDomainService.completeLogin(dto.email, dto.hashKey, dto.uuid);
const accessToken = this.generateAccessToken(user.id);
const refreshToken = this.generateRefreshToken(user.id);
return { accessToken, refreshToken };
}
generateAccessToken(userId) {
return jwt.sign({ sub: userId }, 'access_secret', { expiresIn: '15m' });
}
generateRefreshToken(userId) {
return jwt.sign({ sub: userId }, 'refresh_secret', { expiresIn: '7d' });
}
async refreshAccessToken(refreshToken) {
try {
const payload = jwt.verify(refreshToken, 'refresh_secret');
const userId = payload.sub;
const accessToken = this.generateAccessToken(userId);
const newRefreshToken = this.generateRefreshToken(userId);
return { accessToken, refreshToken: newRefreshToken };
}
catch (error) {
throw new Error('Invalid refresh token');
}
}
async logout(refreshToken) {
}
};
exports.AuthService = AuthService;
exports.AuthService = AuthService = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [user_domain_service_1.UserDomainService])
], AuthService);
//# sourceMappingURL=auth.service.js.map
@@ -0,0 +1 @@
{"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../src/application/auth.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,gFAA2E;AAE3E,oCAAoC;AAG7B,IAAM,WAAW,GAAjB,MAAM,WAAW;IACtB,YAA6B,iBAAoC;QAApC,sBAAiB,GAAjB,iBAAiB,CAAmB;IAAG,CAAC;IAErE,KAAK,CAAC,oBAAoB,CAAC,GAA4B;QACrD,OAAO,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,GAA4B;QACrD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAEjG,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtD,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAExD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,GAAqB;QACvC,OAAO,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,GAAqB;QACvC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAE1F,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtD,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAExD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;IACvC,CAAC;IAEO,mBAAmB,CAAC,MAAc;QACxC,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,eAAe,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1E,CAAC;IAEO,oBAAoB,CAAC,MAAc;QACzC,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,YAAoB;QAC3C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAQ,CAAC;YAClE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;YAE3B,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACrD,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;YAE1D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC;QACxD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,YAAoB;IAGjC,CAAC;CACF,CAAA;AAvDY,kCAAW;sBAAX,WAAW;IADvB,IAAA,mBAAU,GAAE;qCAEqC,uCAAiB;GADtD,WAAW,CAuDvB"}
+7
View File
@@ -0,0 +1,7 @@
import { CardDomainService } from '../domain/services/card.domain-service';
import { IssueCardDto, CardResponseDto } from '../infrastructure/dto/card.dto';
export declare class CardService {
private readonly cardDomainService;
constructor(cardDomainService: CardDomainService);
issueCard(dto: IssueCardDto, userId: string): Promise<CardResponseDto>;
}
+40
View File
@@ -0,0 +1,40 @@
"use strict";
var __decorate = (this && this.__decorate) || function (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;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.CardService = void 0;
const common_1 = require("@nestjs/common");
const card_domain_service_1 = require("../domain/services/card.domain-service");
const card_entity_1 = require("../domain/card.entity");
let CardService = class CardService {
constructor(cardDomainService) {
this.cardDomainService = cardDomainService;
}
async issueCard(dto, userId) {
const card = new card_entity_1.Card();
card.username = dto.username;
card.encryptedData = dto.encryptedData;
card.coopName = dto.coopName;
card.signature = dto.signature;
card.userId = userId;
const savedCard = await this.cardDomainService.issueCard(card);
return {
id: savedCard.id,
username: savedCard.username,
coopName: savedCard.coopName,
};
}
};
exports.CardService = CardService;
exports.CardService = CardService = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [card_domain_service_1.CardDomainService])
], CardService);
//# sourceMappingURL=card.service.js.map
@@ -0,0 +1 @@
{"version":3,"file":"card.service.js","sourceRoot":"","sources":["../../src/application/card.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,gFAA2E;AAE3E,uDAA6C;AAGtC,IAAM,WAAW,GAAjB,MAAM,WAAW;IACtB,YAA6B,iBAAoC;QAApC,sBAAiB,GAAjB,iBAAiB,CAAmB;IAAG,CAAC;IAErE,KAAK,CAAC,SAAS,CAAC,GAAiB,EAAE,MAAc;QAC/C,MAAM,IAAI,GAAG,IAAI,kBAAI,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,aAAa,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAE/D,OAAO;YACL,EAAE,EAAE,SAAS,CAAC,EAAE;YAChB,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,QAAQ,EAAE,SAAS,CAAC,QAAQ;SAC7B,CAAC;IACJ,CAAC;CACF,CAAA;AAnBY,kCAAW;sBAAX,WAAW;IADvB,IAAA,mBAAU,GAAE;qCAEqC,uCAAiB;GADtD,WAAW,CAmBvB"}
@@ -0,0 +1,7 @@
export declare class AccessRequest {
id: string;
accessId: string;
username: string;
coopName: string;
encryptedData: string;
}
+40
View File
@@ -0,0 +1,40 @@
"use strict";
var __decorate = (this && this.__decorate) || function (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;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.AccessRequest = void 0;
const typeorm_1 = require("typeorm");
let AccessRequest = class AccessRequest {
};
exports.AccessRequest = AccessRequest;
__decorate([
(0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
__metadata("design:type", String)
], AccessRequest.prototype, "id", void 0);
__decorate([
(0, typeorm_1.Column)({ unique: true }),
__metadata("design:type", String)
], AccessRequest.prototype, "accessId", void 0);
__decorate([
(0, typeorm_1.Column)(),
__metadata("design:type", String)
], AccessRequest.prototype, "username", void 0);
__decorate([
(0, typeorm_1.Column)(),
__metadata("design:type", String)
], AccessRequest.prototype, "coopName", void 0);
__decorate([
(0, typeorm_1.Column)(),
__metadata("design:type", String)
], AccessRequest.prototype, "encryptedData", void 0);
exports.AccessRequest = AccessRequest = __decorate([
(0, typeorm_1.Entity)()
], AccessRequest);
//# sourceMappingURL=access-request.entity.js.map
@@ -0,0 +1 @@
{"version":3,"file":"access-request.entity.js","sourceRoot":"","sources":["../../src/domain/access-request.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAiE;AAG1D,IAAM,aAAa,GAAnB,MAAM,aAAa;CAezB,CAAA;AAfY,sCAAa;AAExB;IADC,IAAA,gCAAsB,EAAC,MAAM,CAAC;;yCACpB;AAGX;IADC,IAAA,gBAAM,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;;+CACR;AAGjB;IADC,IAAA,gBAAM,GAAE;;+CACQ;AAGjB;IADC,IAAA,gBAAM,GAAE;;+CACQ;AAGjB;IADC,IAAA,gBAAM,GAAE;;oDACa;wBAdX,aAAa;IADzB,IAAA,gBAAM,GAAE;GACI,aAAa,CAezB"}
@@ -0,0 +1,10 @@
import { AccessRequest } from './access-request.entity';
export interface AccessRequestRepository {
create(request: Partial<AccessRequest>): Promise<AccessRequest>;
update(request: AccessRequest): Promise<AccessRequest>;
findByAccessId(accessId: string): Promise<AccessRequest | undefined>;
findByUsernameAndCoopName(username: string, coopName: string): Promise<AccessRequest | undefined>;
deleteByUsernameAndCoopName(username: string, coopName: string): Promise<void>;
findByUsername(username: string): Promise<AccessRequest[]>;
}
export declare const ACCESS_REQUEST_REPOSITORY: unique symbol;
@@ -0,0 +1,5 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ACCESS_REQUEST_REPOSITORY = void 0;
exports.ACCESS_REQUEST_REPOSITORY = Symbol('AccessRequestRepository');
//# sourceMappingURL=access-request.repository.js.map
@@ -0,0 +1 @@
{"version":3,"file":"access-request.repository.js","sourceRoot":"","sources":["../../src/domain/access-request.repository.ts"],"names":[],"mappings":";;;AAWa,QAAA,yBAAyB,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAA"}
+8
View File
@@ -0,0 +1,8 @@
export declare class Card {
id: string;
username: string;
encryptedData: string;
coopName: string;
signature: string;
userId: string;
}
+44
View File
@@ -0,0 +1,44 @@
"use strict";
var __decorate = (this && this.__decorate) || function (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;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Card = void 0;
const typeorm_1 = require("typeorm");
let Card = class Card {
};
exports.Card = Card;
__decorate([
(0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
__metadata("design:type", String)
], Card.prototype, "id", void 0);
__decorate([
(0, typeorm_1.Column)(),
__metadata("design:type", String)
], Card.prototype, "username", void 0);
__decorate([
(0, typeorm_1.Column)(),
__metadata("design:type", String)
], Card.prototype, "encryptedData", void 0);
__decorate([
(0, typeorm_1.Column)(),
__metadata("design:type", String)
], Card.prototype, "coopName", void 0);
__decorate([
(0, typeorm_1.Column)(),
__metadata("design:type", String)
], Card.prototype, "signature", void 0);
__decorate([
(0, typeorm_1.Column)(),
__metadata("design:type", String)
], Card.prototype, "userId", void 0);
exports.Card = Card = __decorate([
(0, typeorm_1.Entity)()
], Card);
//# sourceMappingURL=card.entity.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"card.entity.js","sourceRoot":"","sources":["../../src/domain/card.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAiE;AAG1D,IAAM,IAAI,GAAV,MAAM,IAAI;CAkBhB,CAAA;AAlBY,oBAAI;AAEf;IADC,IAAA,gCAAsB,EAAC,MAAM,CAAC;;gCACpB;AAGX;IADC,IAAA,gBAAM,GAAE;;sCACQ;AAGjB;IADC,IAAA,gBAAM,GAAE;;2CACa;AAGtB;IADC,IAAA,gBAAM,GAAE;;sCACQ;AAGjB;IADC,IAAA,gBAAM,GAAE;;uCACS;AAGlB;IADC,IAAA,gBAAM,GAAE;;oCACM;eAjBJ,IAAI;IADhB,IAAA,gBAAM,GAAE;GACI,IAAI,CAkBhB"}
+6
View File
@@ -0,0 +1,6 @@
import { Card } from './card.entity';
export interface CardRepository {
save(card: Partial<Card>): Promise<Card>;
findByUsername(username: string): Promise<Card | undefined>;
}
export declare const CARD_REPOSITORY: unique symbol;
+5
View File
@@ -0,0 +1,5 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.CARD_REPOSITORY = void 0;
exports.CARD_REPOSITORY = Symbol('CardRepository');
//# sourceMappingURL=card.repository.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"card.repository.js","sourceRoot":"","sources":["../../src/domain/card.repository.ts"],"names":[],"mappings":";;;AAOa,QAAA,eAAe,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAA"}
+5
View File
@@ -0,0 +1,5 @@
export declare class Coop {
id: string;
name: string;
publicKey: string;
}
+32
View File
@@ -0,0 +1,32 @@
"use strict";
var __decorate = (this && this.__decorate) || function (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;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Coop = void 0;
const typeorm_1 = require("typeorm");
let Coop = class Coop {
};
exports.Coop = Coop;
__decorate([
(0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
__metadata("design:type", String)
], Coop.prototype, "id", void 0);
__decorate([
(0, typeorm_1.Column)({ unique: true }),
__metadata("design:type", String)
], Coop.prototype, "name", void 0);
__decorate([
(0, typeorm_1.Column)(),
__metadata("design:type", String)
], Coop.prototype, "publicKey", void 0);
exports.Coop = Coop = __decorate([
(0, typeorm_1.Entity)()
], Coop);
//# sourceMappingURL=coop.entity.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"coop.entity.js","sourceRoot":"","sources":["../../src/domain/coop.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAiE;AAG1D,IAAM,IAAI,GAAV,MAAM,IAAI;CAShB,CAAA;AATY,oBAAI;AAEf;IADC,IAAA,gCAAsB,EAAC,MAAM,CAAC;;gCACpB;AAGX;IADC,IAAA,gBAAM,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;;kCACZ;AAGb;IADC,IAAA,gBAAM,GAAE;;uCACS;eARP,IAAI;IADhB,IAAA,gBAAM,GAAE;GACI,IAAI,CAShB"}
+5
View File
@@ -0,0 +1,5 @@
import { Coop } from './coop.entity';
export interface CoopRepository {
findByName(name: string): Promise<Coop | undefined>;
}
export declare const COOP_REPOSITORY: unique symbol;
+5
View File
@@ -0,0 +1,5 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.COOP_REPOSITORY = void 0;
exports.COOP_REPOSITORY = Symbol('CoopRepository');
//# sourceMappingURL=coop.repository.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"coop.repository.js","sourceRoot":"","sources":["../../src/domain/coop.repository.ts"],"names":[],"mappings":";;;AAMa,QAAA,eAAe,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAA"}
@@ -0,0 +1,11 @@
import { AccessRequestRepository } from '../access-request.repository';
import { AccessRequest } from '../access-request.entity';
export declare class AccessDomainService {
private readonly accessRequestRepository;
constructor(accessRequestRepository: AccessRequestRepository);
saveEncryptedData(accessRequest: AccessRequest): Promise<string>;
getAccessRequestByAccessId(accessId: string): Promise<AccessRequest | undefined>;
getEncryptedData(username: string, coopName: string): Promise<AccessRequest>;
revokeAccess(username: string, coopName: string): Promise<void>;
listAccesses(username: string): Promise<AccessRequest[]>;
}
@@ -0,0 +1,60 @@
"use strict";
var __decorate = (this && this.__decorate) || function (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;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.AccessDomainService = void 0;
const common_1 = require("@nestjs/common");
const access_request_repository_1 = require("../access-request.repository");
const uuid_1 = require("uuid");
let AccessDomainService = class AccessDomainService {
constructor(accessRequestRepository) {
this.accessRequestRepository = accessRequestRepository;
}
async saveEncryptedData(accessRequest) {
const existingAccessRequest = await this.accessRequestRepository.findByUsernameAndCoopName(accessRequest.username, accessRequest.coopName);
if (existingAccessRequest) {
existingAccessRequest.encryptedData = accessRequest.encryptedData;
await this.accessRequestRepository.update(existingAccessRequest);
return existingAccessRequest.accessId;
}
else {
const accessId = (0, uuid_1.v4)();
accessRequest.accessId = accessId;
await this.accessRequestRepository.create(accessRequest);
return accessId;
}
}
async getAccessRequestByAccessId(accessId) {
return this.accessRequestRepository.findByAccessId(accessId);
}
async getEncryptedData(username, coopName) {
const request = await this.accessRequestRepository.findByUsernameAndCoopName(username, coopName);
if (!request) {
throw new Error('Access not granted');
}
return request;
}
async revokeAccess(username, coopName) {
await this.accessRequestRepository.deleteByUsernameAndCoopName(username, coopName);
}
async listAccesses(username) {
return this.accessRequestRepository.findByUsername(username);
}
};
exports.AccessDomainService = AccessDomainService;
exports.AccessDomainService = AccessDomainService = __decorate([
(0, common_1.Injectable)(),
__param(0, (0, common_1.Inject)(access_request_repository_1.ACCESS_REQUEST_REPOSITORY)),
__metadata("design:paramtypes", [Object])
], AccessDomainService);
//# sourceMappingURL=access.domain-service.js.map
@@ -0,0 +1 @@
{"version":3,"file":"access.domain-service.js","sourceRoot":"","sources":["../../../src/domain/services/access.domain-service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,4EAAkG;AAElG,+BAAoC;AAG7B,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAC9B,YAAgE,uBAAgD;QAAhD,4BAAuB,GAAvB,uBAAuB,CAAyB;IAAG,CAAC;IAGpH,KAAK,CAAC,iBAAiB,CAAC,aAA4B;QAElD,MAAM,qBAAqB,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,yBAAyB,CACxF,aAAa,CAAC,QAAQ,EACtB,aAAa,CAAC,QAAQ,CACvB,CAAC;QAEF,IAAI,qBAAqB,EAAE,CAAC;YAE1B,qBAAqB,CAAC,aAAa,GAAG,aAAa,CAAC,aAAa,CAAC;YAClE,MAAM,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;YACjE,OAAO,qBAAqB,CAAC,QAAQ,CAAC;QACxC,CAAC;aAAM,CAAC;YAEN,MAAM,QAAQ,GAAG,IAAA,SAAM,GAAE,CAAC;YAC1B,aAAa,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAClC,MAAM,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YACzD,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAGD,KAAK,CAAC,0BAA0B,CAAC,QAAgB;QAC/C,OAAO,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC/D,CAAC;IAGD,KAAK,CAAC,gBAAgB,CAAC,QAAgB,EAAE,QAAgB;QACvD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACjG,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAAgB,EAAE,QAAgB;QACnD,MAAM,IAAI,CAAC,uBAAuB,CAAC,2BAA2B,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACrF,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAAgB;QACjC,OAAO,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC/D,CAAC;CACF,CAAA;AA/CY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,mBAAU,GAAE;IAEE,WAAA,IAAA,eAAM,EAAC,qDAAyB,CAAC,CAAA;;GADnC,mBAAmB,CA+C/B"}
@@ -0,0 +1,7 @@
import { CardRepository } from '../card.repository';
import { Card } from '../card.entity';
export declare class CardDomainService {
private readonly cardRepository;
constructor(cardRepository: CardRepository);
issueCard(card: Card): Promise<Card>;
}
@@ -0,0 +1,32 @@
"use strict";
var __decorate = (this && this.__decorate) || function (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;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.CardDomainService = void 0;
const common_1 = require("@nestjs/common");
const card_repository_1 = require("../card.repository");
let CardDomainService = class CardDomainService {
constructor(cardRepository) {
this.cardRepository = cardRepository;
}
async issueCard(card) {
return this.cardRepository.save(card);
}
};
exports.CardDomainService = CardDomainService;
exports.CardDomainService = CardDomainService = __decorate([
(0, common_1.Injectable)(),
__param(0, (0, common_1.Inject)(card_repository_1.CARD_REPOSITORY)),
__metadata("design:paramtypes", [Object])
], CardDomainService);
//# sourceMappingURL=card.domain-service.js.map
@@ -0,0 +1 @@
{"version":3,"file":"card.domain-service.js","sourceRoot":"","sources":["../../../src/domain/services/card.domain-service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,wDAAqE;AAI9D,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAC5B,YAAsD,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;IAAG,CAAC;IAExF,KAAK,CAAC,SAAS,CAAC,IAAU;QACxB,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;CACF,CAAA;AANY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;IAEE,WAAA,IAAA,eAAM,EAAC,iCAAe,CAAC,CAAA;;GADzB,iBAAiB,CAM7B"}
@@ -0,0 +1,16 @@
import { UserRepository } from '../user.repository';
import { User } from '../user.entity';
export declare class UserDomainService {
private readonly userRepository;
constructor(userRepository: UserRepository);
initiateRegistration(email: string): Promise<{
uuid: string;
serverSalt: string;
}>;
completeRegistration(email: string, hashKey: string, uuid: string): Promise<User>;
initiateLogin(email: string): Promise<{
uuid: string;
serverSalt: string;
}>;
completeLogin(email: string, hashKey: string, uuid: string): Promise<User>;
}
@@ -0,0 +1,61 @@
"use strict";
var __decorate = (this && this.__decorate) || function (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;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.UserDomainService = void 0;
const common_1 = require("@nestjs/common");
const user_repository_1 = require("../user.repository");
const user_entity_1 = require("../user.entity");
const uuid_1 = require("uuid");
let UserDomainService = class UserDomainService {
constructor(userRepository) {
this.userRepository = userRepository;
}
async initiateRegistration(email) {
const existingUser = await this.userRepository.findByEmail(email);
if (existingUser) {
throw new Error('User already exists');
}
const serverSalt = (0, uuid_1.v4)();
const uuid = (0, uuid_1.v4)();
return { uuid, serverSalt };
}
async completeRegistration(email, hashKey, uuid) {
const user = new user_entity_1.User();
user.email = email;
user.serverSalt = uuid;
user.hashKey = hashKey;
return this.userRepository.create(user);
}
async initiateLogin(email) {
const user = await this.userRepository.findByEmail(email);
if (!user) {
throw new Error('User not found');
}
return { uuid: user.serverSalt, serverSalt: user.serverSalt };
}
async completeLogin(email, hashKey, uuid) {
const user = await this.userRepository.findByEmail(email);
if (!user || user.serverSalt !== uuid || user.hashKey !== hashKey) {
throw new Error('Invalid credentials');
}
return user;
}
};
exports.UserDomainService = UserDomainService;
exports.UserDomainService = UserDomainService = __decorate([
(0, common_1.Injectable)(),
__param(0, (0, common_1.Inject)(user_repository_1.USER_REPOSITORY)),
__metadata("design:paramtypes", [Object])
], UserDomainService);
//# sourceMappingURL=user.domain-service.js.map
@@ -0,0 +1 @@
{"version":3,"file":"user.domain-service.js","sourceRoot":"","sources":["../../../src/domain/services/user.domain-service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,wDAAqE;AACrE,gDAAsC;AACtC,+BAAoC;AAG7B,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAC5B,YAAsD,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;IAAG,CAAC;IAExF,KAAK,CAAC,oBAAoB,CAAC,KAAa;QACtC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAClE,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,UAAU,GAAG,IAAA,SAAM,GAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAA,SAAM,GAAE,CAAC;QAItB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,KAAa,EAAE,OAAe,EAAE,IAAY;QAGrE,MAAM,IAAI,GAAG,IAAI,kBAAI,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAAa;QAC/B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACpC,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAAa,EAAE,OAAe,EAAE,IAAY;QAC9D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YAClE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AA7CY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;IAEE,WAAA,IAAA,eAAM,EAAC,iCAAe,CAAC,CAAA;;GADzB,iBAAiB,CA6C7B"}
+5
View File
@@ -0,0 +1,5 @@
export interface TicketRepository {
save(ticket: string, userId: string): Promise<void>;
getUserId(ticket: string): Promise<string | null>;
delete(ticket: string): Promise<void>;
}
+3
View File
@@ -0,0 +1,3 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=ticket.repository.js.map
@@ -0,0 +1 @@
{"version":3,"file":"ticket.repository.js","sourceRoot":"","sources":["../../src/domain/ticket.repository.ts"],"names":[],"mappings":""}
+7
View File
@@ -0,0 +1,7 @@
export declare class User {
id: string;
email: string;
serverSalt: string;
hashKey: string;
isVerified: boolean;
}
+40
View File
@@ -0,0 +1,40 @@
"use strict";
var __decorate = (this && this.__decorate) || function (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;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.User = void 0;
const typeorm_1 = require("typeorm");
let User = class User {
};
exports.User = User;
__decorate([
(0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
__metadata("design:type", String)
], User.prototype, "id", void 0);
__decorate([
(0, typeorm_1.Column)({ unique: true }),
__metadata("design:type", String)
], User.prototype, "email", void 0);
__decorate([
(0, typeorm_1.Column)(),
__metadata("design:type", String)
], User.prototype, "serverSalt", void 0);
__decorate([
(0, typeorm_1.Column)(),
__metadata("design:type", String)
], User.prototype, "hashKey", void 0);
__decorate([
(0, typeorm_1.Column)({ default: false }),
__metadata("design:type", Boolean)
], User.prototype, "isVerified", void 0);
exports.User = User = __decorate([
(0, typeorm_1.Entity)('user')
], User);
//# sourceMappingURL=user.entity.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"user.entity.js","sourceRoot":"","sources":["../../src/domain/user.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAiE;AAG1D,IAAM,IAAI,GAAV,MAAM,IAAI;CAehB,CAAA;AAfY,oBAAI;AAEf;IADC,IAAA,gCAAsB,EAAC,MAAM,CAAC;;gCACpB;AAGX;IADC,IAAA,gBAAM,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;;mCACX;AAGd;IADC,IAAA,gBAAM,GAAE;;wCACU;AAGnB;IADC,IAAA,gBAAM,GAAE;;qCACO;AAGhB;IADC,IAAA,gBAAM,EAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;;wCACP;eAdT,IAAI;IADhB,IAAA,gBAAM,EAAC,MAAM,CAAC;GACF,IAAI,CAehB"}
+7
View File
@@ -0,0 +1,7 @@
import { User } from './user.entity';
export interface UserRepository {
create(user: Partial<User>): Promise<User>;
findByEmail(email: string): Promise<User | undefined>;
update(user: User): Promise<User>;
}
export declare const USER_REPOSITORY: unique symbol;
+5
View File
@@ -0,0 +1,5 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.USER_REPOSITORY = void 0;
exports.USER_REPOSITORY = Symbol('UserRepository');
//# sourceMappingURL=user.repository.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"user.repository.js","sourceRoot":"","sources":["../../src/domain/user.repository.ts"],"names":[],"mappings":";;;AAQa,QAAA,eAAe,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAA"}
@@ -0,0 +1,13 @@
import { Repository } from 'typeorm';
import { AccessRequest } from '../domain/access-request.entity';
import { AccessRequestRepository } from '../domain/access-request.repository';
export declare class AccessRequestRepositoryImpl implements AccessRequestRepository {
private readonly repository;
constructor(repository: Repository<AccessRequest>);
create(request: AccessRequest): Promise<AccessRequest>;
update(request: AccessRequest): Promise<AccessRequest>;
findByAccessId(accessId: string): Promise<AccessRequest | undefined>;
findByUsernameAndCoopName(username: string, coopName: string): Promise<AccessRequest | undefined>;
deleteByUsernameAndCoopName(username: string, coopName: string): Promise<void>;
findByUsername(username: string): Promise<AccessRequest[]>;
}
@@ -0,0 +1,49 @@
"use strict";
var __decorate = (this && this.__decorate) || function (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;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.AccessRequestRepositoryImpl = void 0;
const common_1 = require("@nestjs/common");
const typeorm_1 = require("typeorm");
const access_request_entity_1 = require("../domain/access-request.entity");
const typeorm_2 = require("@nestjs/typeorm");
let AccessRequestRepositoryImpl = class AccessRequestRepositoryImpl {
constructor(repository) {
this.repository = repository;
}
async create(request) {
return this.repository.save(request);
}
async update(request) {
return this.repository.save(request);
}
async findByAccessId(accessId) {
return this.repository.findOne({ where: { accessId } });
}
async findByUsernameAndCoopName(username, coopName) {
return this.repository.findOne({ where: { username, coopName } });
}
async deleteByUsernameAndCoopName(username, coopName) {
await this.repository.delete({ username, coopName });
}
async findByUsername(username) {
return this.repository.find({ where: { username } });
}
};
exports.AccessRequestRepositoryImpl = AccessRequestRepositoryImpl;
exports.AccessRequestRepositoryImpl = AccessRequestRepositoryImpl = __decorate([
(0, common_1.Injectable)(),
__param(0, (0, typeorm_2.InjectRepository)(access_request_entity_1.AccessRequest)),
__metadata("design:paramtypes", [typeorm_1.Repository])
], AccessRequestRepositoryImpl);
//# sourceMappingURL=access-request.repository.impl.js.map
@@ -0,0 +1 @@
{"version":3,"file":"access-request.repository.impl.js","sourceRoot":"","sources":["../../src/infrastructure/access-request.repository.impl.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,qCAAqC;AACrC,2EAAgE;AAChE,6CAAmD;AAI5C,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;IACtC,YAEmB,UAAqC;QAArC,eAAU,GAAV,UAAU,CAA2B;IACrD,CAAC;IAEJ,KAAK,CAAC,MAAM,CAAC,OAAsB;QACjC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAsB;QACjC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,QAAgB;QACnC,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,yBAAyB,CAAC,QAAgB,EAAE,QAAgB;QAChE,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,2BAA2B,CAAC,QAAgB,EAAE,QAAgB;QAClE,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,QAAgB;QACnC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IACvD,CAAC;CACF,CAAA;AA7BY,kEAA2B;sCAA3B,2BAA2B;IADvC,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,0BAAgB,EAAC,qCAAa,CAAC,CAAA;qCACH,oBAAU;GAH9B,2BAA2B,CA6BvC"}
@@ -0,0 +1,12 @@
import { AccessService } from '../application/access.service';
import { PrepareShareDataDto, CoopInfoResponseDto, ShareDataDto, ShareDataResponseDto, CoopExchangeTicketDto, CoopJwtResponseDto } from './dto/access.dto';
export declare class AccessController {
private readonly accessService;
constructor(accessService: AccessService);
prepareShareData(dto: PrepareShareDataDto): Promise<CoopInfoResponseDto>;
shareData(dto: ShareDataDto, req: any): Promise<ShareDataResponseDto>;
exchangeTicketForJwt(dto: CoopExchangeTicketDto): Promise<CoopJwtResponseDto>;
getEncryptedData(username: string, coopName: string): Promise<{
encryptedData: string;
}>;
}
@@ -0,0 +1,110 @@
"use strict";
var __decorate = (this && this.__decorate) || function (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;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.AccessController = void 0;
const common_1 = require("@nestjs/common");
const access_service_1 = require("../application/access.service");
const jwt_auth_guard_1 = require("./guards/jwt-auth.guard");
const access_dto_1 = require("./dto/access.dto");
const coop_jwt_auth_guard_1 = require("./guards/coop-jwt-auth.guard");
const swagger_1 = require("@nestjs/swagger");
const swagger_decorator_1 = require("./decorators/swagger.decorator");
let AccessController = class AccessController {
constructor(accessService) {
this.accessService = accessService;
}
async prepareShareData(dto) {
return this.accessService.prepareShareData(dto);
}
async shareData(dto, req) {
const username = req.user.userId;
return this.accessService.shareData(dto, username);
}
async exchangeTicketForJwt(dto) {
return this.accessService.exchangeTicketForJwt(dto);
}
async getEncryptedData(username, coopName) {
const encryptedData = await this.accessService.getEncryptedData(username, coopName);
return { encryptedData };
}
};
exports.AccessController = AccessController;
__decorate([
(0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard),
(0, common_1.Post)('prepare-share-data'),
(0, swagger_decorator_1.Swagger)('Подготовка данных для общего доступа'),
(0, swagger_1.ApiResponse)({
status: 200,
description: 'Успешная подготовка данных',
type: access_dto_1.CoopInfoResponseDto,
}),
__param(0, (0, common_1.Body)()),
__metadata("design:type", Function),
__metadata("design:paramtypes", [access_dto_1.PrepareShareDataDto]),
__metadata("design:returntype", Promise)
], AccessController.prototype, "prepareShareData", null);
__decorate([
(0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard),
(0, common_1.Post)('share-data'),
(0, swagger_decorator_1.Swagger)('Передача данных'),
(0, swagger_1.ApiResponse)({
status: 200,
description: 'Успешная передача данных',
type: access_dto_1.ShareDataResponseDto,
}),
__param(0, (0, common_1.Body)()),
__param(1, (0, common_1.Request)()),
__metadata("design:type", Function),
__metadata("design:paramtypes", [access_dto_1.ShareDataDto, Object]),
__metadata("design:returntype", Promise)
], AccessController.prototype, "shareData", null);
__decorate([
(0, common_1.Post)('exchange-ticket'),
(0, swagger_decorator_1.Swagger)('Обмен тикета на JWT'),
(0, swagger_1.ApiResponse)({
status: 200,
description: 'Успешный обмен тикета на JWT',
type: access_dto_1.CoopJwtResponseDto,
}),
__param(0, (0, common_1.Body)()),
__metadata("design:type", Function),
__metadata("design:paramtypes", [access_dto_1.CoopExchangeTicketDto]),
__metadata("design:returntype", Promise)
], AccessController.prototype, "exchangeTicketForJwt", null);
__decorate([
(0, common_1.UseGuards)(coop_jwt_auth_guard_1.CoopJwtAuthGuard),
(0, common_1.Get)('get-encrypted-data/:username/:coopName'),
(0, swagger_decorator_1.Swagger)('Получение зашифрованных данных'),
(0, swagger_1.ApiResponse)({
status: 200,
description: 'Успешное получение зашифрованных данных',
schema: {
type: 'object',
properties: {
encryptedData: { type: 'string' },
},
},
}),
__param(0, (0, common_1.Param)('username')),
__param(1, (0, common_1.Param)('coopName')),
__metadata("design:type", Function),
__metadata("design:paramtypes", [String, String]),
__metadata("design:returntype", Promise)
], AccessController.prototype, "getEncryptedData", null);
exports.AccessController = AccessController = __decorate([
(0, swagger_1.ApiTags)('Access'),
(0, common_1.Controller)('access'),
__metadata("design:paramtypes", [access_service_1.AccessService])
], AccessController);
//# sourceMappingURL=access.controller.js.map
@@ -0,0 +1 @@
{"version":3,"file":"access.controller.js","sourceRoot":"","sources":["../../src/infrastructure/access.controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
import { AuthService } from '../application/auth.service';
import { InitiateRegistrationDto, CompleteRegistrationDto, UserResponseDto, InitiateLoginDto, CompleteLoginDto } from './dto/user.dto';
export declare class AuthController {
private readonly authService;
constructor(authService: AuthService);
initiateRegistration(dto: InitiateRegistrationDto): Promise<{
uuid: string;
serverSalt: string;
}>;
completeRegistration(dto: CompleteRegistrationDto): Promise<UserResponseDto>;
initiateLogin(dto: InitiateLoginDto): Promise<{
uuid: string;
serverSalt: string;
}>;
completeLogin(dto: CompleteLoginDto): Promise<UserResponseDto>;
refreshAccessToken(authHeader: string): Promise<UserResponseDto>;
logout(authHeader: string): Promise<void>;
}
@@ -0,0 +1,129 @@
"use strict";
var __decorate = (this && this.__decorate) || function (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;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.AuthController = void 0;
const common_1 = require("@nestjs/common");
const auth_service_1 = require("../application/auth.service");
const user_dto_1 = require("./dto/user.dto");
const swagger_1 = require("@nestjs/swagger");
const swagger_decorator_1 = require("./decorators/swagger.decorator");
let AuthController = class AuthController {
constructor(authService) {
this.authService = authService;
}
async initiateRegistration(dto) {
return this.authService.initiateRegistration(dto);
}
async completeRegistration(dto) {
return this.authService.completeRegistration(dto);
}
async initiateLogin(dto) {
return this.authService.initiateLogin(dto);
}
async completeLogin(dto) {
return this.authService.completeLogin(dto);
}
async refreshAccessToken(authHeader) {
const refreshToken = authHeader.split(' ')[1];
return this.authService.refreshAccessToken(refreshToken);
}
async logout(authHeader) {
const refreshToken = authHeader.split(' ')[1];
await this.authService.logout(refreshToken);
}
};
exports.AuthController = AuthController;
__decorate([
(0, common_1.Post)('initiate-registration'),
(0, swagger_decorator_1.Swagger)('Инициализация регистрации'),
(0, swagger_1.ApiResponse)({
status: 200,
description: 'Успешная инициализация регистрации',
type: user_dto_1.InitiateRegistrationDto,
}),
__param(0, (0, common_1.Body)()),
__metadata("design:type", Function),
__metadata("design:paramtypes", [user_dto_1.InitiateRegistrationDto]),
__metadata("design:returntype", Promise)
], AuthController.prototype, "initiateRegistration", null);
__decorate([
(0, common_1.Post)('complete-registration'),
(0, swagger_decorator_1.Swagger)('Завершение регистрации'),
(0, swagger_1.ApiResponse)({
status: 200,
description: 'Успешное завершение регистрации',
type: user_dto_1.UserResponseDto,
}),
__param(0, (0, common_1.Body)()),
__metadata("design:type", Function),
__metadata("design:paramtypes", [user_dto_1.CompleteRegistrationDto]),
__metadata("design:returntype", Promise)
], AuthController.prototype, "completeRegistration", null);
__decorate([
(0, common_1.Post)('initiate-login'),
(0, swagger_decorator_1.Swagger)('Инициализация входа'),
(0, swagger_1.ApiResponse)({
status: 200,
description: 'Успешная инициализация входа',
type: user_dto_1.InitiateLoginDto,
}),
__param(0, (0, common_1.Body)()),
__metadata("design:type", Function),
__metadata("design:paramtypes", [user_dto_1.InitiateLoginDto]),
__metadata("design:returntype", Promise)
], AuthController.prototype, "initiateLogin", null);
__decorate([
(0, common_1.Post)('complete-login'),
(0, swagger_decorator_1.Swagger)('Завершение входа'),
(0, swagger_1.ApiResponse)({
status: 200,
description: 'Успешное завершение входа',
type: user_dto_1.UserResponseDto,
}),
__param(0, (0, common_1.Body)()),
__metadata("design:type", Function),
__metadata("design:paramtypes", [user_dto_1.CompleteLoginDto]),
__metadata("design:returntype", Promise)
], AuthController.prototype, "completeLogin", null);
__decorate([
(0, common_1.Post)('refresh-token'),
(0, swagger_decorator_1.Swagger)('Обновление токена'),
(0, swagger_1.ApiResponse)({
status: 200,
description: 'Успешное обновление токена',
type: user_dto_1.UserResponseDto,
}),
__param(0, (0, common_1.Headers)('Authorization')),
__metadata("design:type", Function),
__metadata("design:paramtypes", [String]),
__metadata("design:returntype", Promise)
], AuthController.prototype, "refreshAccessToken", null);
__decorate([
(0, common_1.Post)('logout'),
(0, swagger_decorator_1.Swagger)('Выход'),
(0, swagger_1.ApiResponse)({
status: 200,
description: 'Успешный выход',
}),
__param(0, (0, common_1.Headers)('Authorization')),
__metadata("design:type", Function),
__metadata("design:paramtypes", [String]),
__metadata("design:returntype", Promise)
], AuthController.prototype, "logout", null);
exports.AuthController = AuthController = __decorate([
(0, swagger_1.ApiTags)('Auth'),
(0, common_1.Controller)('auth'),
__metadata("design:paramtypes", [auth_service_1.AuthService])
], AuthController);
//# sourceMappingURL=auth.controller.js.map
@@ -0,0 +1 @@
{"version":3,"file":"auth.controller.js","sourceRoot":"","sources":["../../src/infrastructure/auth.controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
import { CardService } from '../application/card.service';
import { IssueCardDto, CardResponseDto } from './dto/card.dto';
export declare class CardController {
private readonly cardService;
constructor(cardService: CardService);
issueCard(dto: IssueCardDto, req: any): Promise<CardResponseDto>;
}
@@ -0,0 +1,52 @@
"use strict";
var __decorate = (this && this.__decorate) || function (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;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.CardController = void 0;
const common_1 = require("@nestjs/common");
const card_service_1 = require("../application/card.service");
const jwt_auth_guard_1 = require("./guards/jwt-auth.guard");
const card_dto_1 = require("./dto/card.dto");
const swagger_1 = require("@nestjs/swagger");
const swagger_decorator_1 = require("./decorators/swagger.decorator");
let CardController = class CardController {
constructor(cardService) {
this.cardService = cardService;
}
async issueCard(dto, req) {
const userId = req.user.userId;
return this.cardService.issueCard(dto, userId);
}
};
exports.CardController = CardController;
__decorate([
(0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard),
(0, common_1.Post)('issue'),
(0, swagger_decorator_1.Swagger)('Выпуск карты'),
(0, swagger_1.ApiResponse)({
status: 200,
description: 'Успешный выпуск карты',
type: card_dto_1.CardResponseDto,
}),
__param(0, (0, common_1.Body)()),
__param(1, (0, common_1.Request)()),
__metadata("design:type", Function),
__metadata("design:paramtypes", [card_dto_1.IssueCardDto, Object]),
__metadata("design:returntype", Promise)
], CardController.prototype, "issueCard", null);
exports.CardController = CardController = __decorate([
(0, swagger_1.ApiTags)('Card'),
(0, common_1.Controller)('card'),
__metadata("design:paramtypes", [card_service_1.CardService])
], CardController);
//# sourceMappingURL=card.controller.js.map
@@ -0,0 +1 @@
{"version":3,"file":"card.controller.js","sourceRoot":"","sources":["../../src/infrastructure/card.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4E;AAC5E,8DAA0D;AAC1D,4DAAuD;AACvD,6CAA+D;AAC/D,6CAAqE;AACrE,sEAAyD;AAIlD,IAAM,cAAc,GAApB,MAAM,cAAc;IACzB,YAA6B,WAAwB;QAAxB,gBAAW,GAAX,WAAW,CAAa;IAAG,CAAC;IAUnD,AAAN,KAAK,CAAC,SAAS,CAAS,GAAiB,EAAa,GAAG;QACvD,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;QAC/B,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;CACF,CAAA;AAfY,wCAAc;AAWnB;IARL,IAAA,kBAAS,EAAC,6BAAY,CAAC;IACvB,IAAA,aAAI,EAAC,OAAO,CAAC;IACb,IAAA,2BAAO,EAAC,cAAc,CAAC;IACvB,IAAA,qBAAW,EAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,uBAAuB;QACpC,IAAI,EAAE,0BAAe;KACtB,CAAC;IACe,WAAA,IAAA,aAAI,GAAE,CAAA;IAAqB,WAAA,IAAA,gBAAO,GAAE,CAAA;;qCAAxB,uBAAY;;+CAGxC;yBAdU,cAAc;IAF1B,IAAA,iBAAO,EAAC,MAAM,CAAC;IACf,IAAA,mBAAU,EAAC,MAAM,CAAC;qCAEyB,0BAAW;GAD1C,cAAc,CAe1B"}
@@ -0,0 +1,9 @@
import { Repository } from 'typeorm';
import { Card } from '../domain/card.entity';
import { CardRepository } from '../domain/card.repository';
export declare class CardRepositoryImpl implements CardRepository {
private readonly repository;
constructor(repository: Repository<Card>);
save(card: Partial<Card>): Promise<Card>;
findByUsername(username: string): Promise<Card | undefined>;
}
@@ -0,0 +1,37 @@
"use strict";
var __decorate = (this && this.__decorate) || function (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;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.CardRepositoryImpl = void 0;
const common_1 = require("@nestjs/common");
const typeorm_1 = require("typeorm");
const card_entity_1 = require("../domain/card.entity");
const typeorm_2 = require("@nestjs/typeorm");
let CardRepositoryImpl = class CardRepositoryImpl {
constructor(repository) {
this.repository = repository;
}
async save(card) {
return this.repository.save(card);
}
async findByUsername(username) {
return this.repository.findOne({ where: { username } });
}
};
exports.CardRepositoryImpl = CardRepositoryImpl;
exports.CardRepositoryImpl = CardRepositoryImpl = __decorate([
(0, common_1.Injectable)(),
__param(0, (0, typeorm_2.InjectRepository)(card_entity_1.Card)),
__metadata("design:paramtypes", [typeorm_1.Repository])
], CardRepositoryImpl);
//# sourceMappingURL=card.repository.impl.js.map
@@ -0,0 +1 @@
{"version":3,"file":"card.repository.impl.js","sourceRoot":"","sources":["../../src/infrastructure/card.repository.impl.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,qCAAqC;AACrC,uDAA6C;AAC7C,6CAAmD;AAI5C,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAC7B,YAEmB,UAA4B;QAA5B,eAAU,GAAV,UAAU,CAAkB;IAC5C,CAAC;IAEJ,KAAK,CAAC,IAAI,CAAC,IAAmB;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,QAAgB;QACnC,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC1D,CAAC;CACF,CAAA;AAbY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,0BAAgB,EAAC,kBAAI,CAAC,CAAA;qCACM,oBAAU;GAH9B,kBAAkB,CAa9B"}
@@ -0,0 +1,8 @@
import { Repository } from 'typeorm';
import { Coop } from '../domain/coop.entity';
import { CoopRepository } from '../domain/coop.repository';
export declare class CoopRepositoryImpl implements CoopRepository {
private readonly repository;
constructor(repository: Repository<Coop>);
findByName(name: string): Promise<Coop | undefined>;
}
@@ -0,0 +1,34 @@
"use strict";
var __decorate = (this && this.__decorate) || function (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;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.CoopRepositoryImpl = void 0;
const common_1 = require("@nestjs/common");
const typeorm_1 = require("typeorm");
const coop_entity_1 = require("../domain/coop.entity");
const typeorm_2 = require("@nestjs/typeorm");
let CoopRepositoryImpl = class CoopRepositoryImpl {
constructor(repository) {
this.repository = repository;
}
async findByName(name) {
return this.repository.findOne({ where: { name } });
}
};
exports.CoopRepositoryImpl = CoopRepositoryImpl;
exports.CoopRepositoryImpl = CoopRepositoryImpl = __decorate([
(0, common_1.Injectable)(),
__param(0, (0, typeorm_2.InjectRepository)(coop_entity_1.Coop)),
__metadata("design:paramtypes", [typeorm_1.Repository])
], CoopRepositoryImpl);
//# sourceMappingURL=coop.repository.impl.js.map
@@ -0,0 +1 @@
{"version":3,"file":"coop.repository.impl.js","sourceRoot":"","sources":["../../src/infrastructure/coop.repository.impl.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,qCAAqC;AACrC,uDAA6C;AAC7C,6CAAmD;AAI5C,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAC7B,YAEmB,UAA4B;QAA5B,eAAU,GAAV,UAAU,CAAkB;IAC5C,CAAC;IAEJ,KAAK,CAAC,UAAU,CAAC,IAAY;QAC3B,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACtD,CAAC;CACF,CAAA;AATY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,0BAAgB,EAAC,kBAAI,CAAC,CAAA;qCACM,oBAAU;GAH9B,kBAAkB,CAS9B"}
@@ -0,0 +1,2 @@
export declare class DatabaseModule {
}
@@ -0,0 +1,80 @@
"use strict";
var __decorate = (this && this.__decorate) || function (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;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.DatabaseModule = void 0;
const common_1 = require("@nestjs/common");
const typeorm_1 = require("@nestjs/typeorm");
const user_entity_1 = require("../domain/user.entity");
const card_entity_1 = require("../domain/card.entity");
const access_request_entity_1 = require("../domain/access-request.entity");
const coop_entity_1 = require("../domain/coop.entity");
const user_repository_impl_1 = require("./user.repository.impl");
const card_repository_impl_1 = require("./card.repository.impl");
const access_request_repository_impl_1 = require("./access-request.repository.impl");
const coop_repository_impl_1 = require("./coop.repository.impl");
const user_repository_1 = require("../domain/user.repository");
const card_repository_1 = require("../domain/card.repository");
const access_request_repository_1 = require("../domain/access-request.repository");
const coop_repository_1 = require("../domain/coop.repository");
let DatabaseModule = class DatabaseModule {
};
exports.DatabaseModule = DatabaseModule;
exports.DatabaseModule = DatabaseModule = __decorate([
(0, common_1.Global)(),
(0, common_1.Module)({
imports: [
typeorm_1.TypeOrmModule.forRoot({
type: 'postgres',
host: '127.0.0.1',
port: 5432,
username: 'postgres',
password: 'postgres',
database: 'cardcoop',
synchronize: true,
entities: [
user_entity_1.User,
card_entity_1.Card,
access_request_entity_1.AccessRequest,
coop_entity_1.Coop
],
}),
typeorm_1.TypeOrmModule.forFeature([
user_entity_1.User,
card_entity_1.Card,
access_request_entity_1.AccessRequest,
coop_entity_1.Coop
]),
],
providers: [
{
provide: user_repository_1.USER_REPOSITORY,
useClass: user_repository_impl_1.UserRepositoryImpl,
},
{
provide: card_repository_1.CARD_REPOSITORY,
useClass: card_repository_impl_1.CardRepositoryImpl,
},
{
provide: access_request_repository_1.ACCESS_REQUEST_REPOSITORY,
useClass: access_request_repository_impl_1.AccessRequestRepositoryImpl,
},
{
provide: coop_repository_1.COOP_REPOSITORY,
useClass: coop_repository_impl_1.CoopRepositoryImpl,
},
],
exports: [
typeorm_1.TypeOrmModule,
user_repository_1.USER_REPOSITORY,
card_repository_1.CARD_REPOSITORY,
access_request_repository_1.ACCESS_REQUEST_REPOSITORY,
coop_repository_1.COOP_REPOSITORY,
],
})
], DatabaseModule);
//# sourceMappingURL=database.module.js.map
@@ -0,0 +1 @@
{"version":3,"file":"database.module.js","sourceRoot":"","sources":["../../src/infrastructure/database.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAgD;AAChD,6CAAgD;AAChD,uDAA6C;AAC7C,uDAA6C;AAC7C,2EAAgE;AAChE,uDAA6C;AAC7C,iEAA4D;AAC5D,iEAA4D;AAC5D,qFAA+E;AAC/E,iEAA4D;AAC5D,+DAA4D;AAC5D,+DAA4D;AAC5D,mFAAgF;AAChF,+DAA4D;AAsDrD,IAAM,cAAc,GAApB,MAAM,cAAc;CAAG,CAAA;AAAjB,wCAAc;yBAAd,cAAc;IAnD1B,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,uBAAa,CAAC,OAAO,CAAC;gBACpB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,IAAI;gBACV,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,UAAU;gBACpB,WAAW,EAAE,IAAI;gBACjB,QAAQ,EAAE;oBACR,kBAAI;oBACJ,kBAAI;oBACJ,qCAAa;oBACb,kBAAI;iBACL;aACF,CAAC;YACF,uBAAa,CAAC,UAAU,CAAC;gBACvB,kBAAI;gBACJ,kBAAI;gBACJ,qCAAa;gBACb,kBAAI;aACL,CAAC;SACH;QACD,SAAS,EAAE;YACT;gBACE,OAAO,EAAE,iCAAe;gBACxB,QAAQ,EAAE,yCAAkB;aAC7B;YACD;gBACE,OAAO,EAAE,iCAAe;gBACxB,QAAQ,EAAE,yCAAkB;aAC7B;YACD;gBACE,OAAO,EAAE,qDAAyB;gBAClC,QAAQ,EAAE,4DAA2B;aACtC;YACD;gBACE,OAAO,EAAE,iCAAe;gBACxB,QAAQ,EAAE,yCAAkB;aAC7B;SACF;QACD,OAAO,EAAE;YACP,uBAAa;YACb,iCAAe;YACf,iCAAe;YACf,qDAAyB;YACzB,iCAAe;SAChB;KACF,CAAC;GACW,cAAc,CAAG"}
@@ -0,0 +1 @@
export declare function Swagger(description: string): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => void;
@@ -0,0 +1,16 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Swagger = Swagger;
const swagger_1 = require("@nestjs/swagger");
function Swagger(description) {
return (target, propertyKey, descriptor) => {
const operationId = propertyKey;
const summary = propertyKey;
(0, swagger_1.ApiOperation)({
summary,
description,
operationId,
})(target, propertyKey, descriptor);
};
}
//# sourceMappingURL=swagger.decorator.js.map
@@ -0,0 +1 @@
{"version":3,"file":"swagger.decorator.js","sourceRoot":"","sources":["../../../src/infrastructure/decorators/swagger.decorator.ts"],"names":[],"mappings":";;AAEA,0BAWC;AAbD,6CAA+C;AAE/C,SAAgB,OAAO,CAAC,WAAmB;IACzC,OAAO,CAAC,MAAW,EAAE,WAAmB,EAAE,UAA8B,EAAE,EAAE;QAC1E,MAAM,WAAW,GAAG,WAAW,CAAC;QAChC,MAAM,OAAO,GAAG,WAAW,CAAC;QAE5B,IAAA,sBAAY,EAAC;YACX,OAAO;YACP,WAAW;YACX,WAAW;SACZ,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IACtC,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,20 @@
export declare class PrepareShareDataDto {
coopName: string;
}
export declare class CoopInfoResponseDto {
coopName: string;
coopPublicKey: string;
}
export declare class ShareDataDto {
coopName: string;
encryptedData: string;
}
export declare class ShareDataResponseDto {
ticket: string;
}
export declare class CoopExchangeTicketDto {
ticket: string;
}
export declare class CoopJwtResponseDto {
accessToken: string;
}
@@ -0,0 +1,97 @@
"use strict";
var __decorate = (this && this.__decorate) || function (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;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.CoopJwtResponseDto = exports.CoopExchangeTicketDto = exports.ShareDataResponseDto = exports.ShareDataDto = exports.CoopInfoResponseDto = exports.PrepareShareDataDto = void 0;
const class_validator_1 = require("class-validator");
const swagger_1 = require("@nestjs/swagger");
class PrepareShareDataDto {
}
exports.PrepareShareDataDto = PrepareShareDataDto;
__decorate([
(0, swagger_1.ApiProperty)({
description: 'Название кооператива',
example: 'CoopNameXYZ',
}),
(0, class_validator_1.IsString)(),
(0, class_validator_1.IsNotEmpty)(),
__metadata("design:type", String)
], PrepareShareDataDto.prototype, "coopName", void 0);
class CoopInfoResponseDto {
}
exports.CoopInfoResponseDto = CoopInfoResponseDto;
__decorate([
(0, swagger_1.ApiProperty)({
description: 'Название кооператива',
example: 'CoopNameXYZ',
}),
__metadata("design:type", String)
], CoopInfoResponseDto.prototype, "coopName", void 0);
__decorate([
(0, swagger_1.ApiProperty)({
description: 'Публичный ключ кооператива',
example: 'publicKey123456789abcdef',
}),
__metadata("design:type", String)
], CoopInfoResponseDto.prototype, "coopPublicKey", void 0);
class ShareDataDto {
}
exports.ShareDataDto = ShareDataDto;
__decorate([
(0, swagger_1.ApiProperty)({
description: 'Название кооператива',
example: 'CoopNameXYZ',
}),
(0, class_validator_1.IsString)(),
(0, class_validator_1.IsNotEmpty)(),
__metadata("design:type", String)
], ShareDataDto.prototype, "coopName", void 0);
__decorate([
(0, swagger_1.ApiProperty)({
description: 'Зашифрованные данные для передачи',
example: 'encryptedData123456abcdef',
}),
(0, class_validator_1.IsString)(),
(0, class_validator_1.IsNotEmpty)(),
__metadata("design:type", String)
], ShareDataDto.prototype, "encryptedData", void 0);
class ShareDataResponseDto {
}
exports.ShareDataResponseDto = ShareDataResponseDto;
__decorate([
(0, swagger_1.ApiProperty)({
description: 'Билет для обмена данными',
example: 'exchangeTicket12345',
}),
__metadata("design:type", String)
], ShareDataResponseDto.prototype, "ticket", void 0);
class CoopExchangeTicketDto {
}
exports.CoopExchangeTicketDto = CoopExchangeTicketDto;
__decorate([
(0, swagger_1.ApiProperty)({
description: 'Билет для обмена кооперативной информацией',
example: 'exchangeTicket12345',
}),
(0, class_validator_1.IsString)(),
(0, class_validator_1.IsNotEmpty)(),
__metadata("design:type", String)
], CoopExchangeTicketDto.prototype, "ticket", void 0);
class CoopJwtResponseDto {
}
exports.CoopJwtResponseDto = CoopJwtResponseDto;
__decorate([
(0, swagger_1.ApiProperty)({
description: 'JWT токен доступа для взаимодействия с кооперативом',
example: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...',
}),
__metadata("design:type", String)
], CoopJwtResponseDto.prototype, "accessToken", void 0);
//# sourceMappingURL=access.dto.js.map
@@ -0,0 +1 @@
{"version":3,"file":"access.dto.js","sourceRoot":"","sources":["../../../src/infrastructure/dto/access.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAuD;AACvD,6CAA8C;AAE9C,MAAa,mBAAmB;CAQ/B;AARD,kDAQC;AADC;IANC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,sBAAsB;QACnC,OAAO,EAAE,aAAa;KACvB,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;qDACI;AAGnB,MAAa,mBAAmB;CAY/B;AAZD,kDAYC;AAPC;IAJC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,sBAAsB;QACnC,OAAO,EAAE,aAAa;KACvB,CAAC;;qDACe;AAMjB;IAJC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,4BAA4B;QACzC,OAAO,EAAE,0BAA0B;KACpC,CAAC;;0DACoB;AAGxB,MAAa,YAAY;CAgBxB;AAhBD,oCAgBC;AATC;IANC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,sBAAsB;QACnC,OAAO,EAAE,aAAa;KACvB,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;8CACI;AAQjB;IANC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,mCAAmC;QAChD,OAAO,EAAE,2BAA2B;KACrC,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;mDACS;AAGxB,MAAa,oBAAoB;CAMhC;AAND,oDAMC;AADC;IAJC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,0BAA0B;QACvC,OAAO,EAAE,qBAAqB;KAC/B,CAAC;;oDACa;AAGjB,MAAa,qBAAqB;CAQjC;AARD,sDAQC;AADC;IANC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,4CAA4C;QACzD,OAAO,EAAE,qBAAqB;KAC/B,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;qDACE;AAGjB,MAAa,kBAAkB;CAM9B;AAND,gDAMC;AADC;IAJC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,qDAAqD;QAClE,OAAO,EAAE,yCAAyC;KACnD,CAAC;;uDACkB"}
@@ -0,0 +1,11 @@
export declare class IssueCardDto {
username: string;
encryptedData: string;
coopName: string;
signature: string;
}
export declare class CardResponseDto {
id: string;
username: string;
coopName: string;
}
+57
View File
@@ -0,0 +1,57 @@
"use strict";
var __decorate = (this && this.__decorate) || function (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;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.CardResponseDto = exports.IssueCardDto = void 0;
const class_validator_1 = require("class-validator");
const swagger_1 = require("@nestjs/swagger");
class IssueCardDto {
}
exports.IssueCardDto = IssueCardDto;
__decorate([
(0, swagger_1.ApiProperty)({
description: 'Имя пользователя, которому будет выдана карта',
example: 'john_doe',
}),
(0, class_validator_1.IsString)(),
(0, class_validator_1.IsNotEmpty)(),
__metadata("design:type", String)
], IssueCardDto.prototype, "username", void 0);
__decorate([
(0, swagger_1.ApiProperty)({
description: 'Зашифрованные данные, связанные с картой',
example: 'encryptedData123456abcdef',
}),
(0, class_validator_1.IsString)(),
(0, class_validator_1.IsNotEmpty)(),
__metadata("design:type", String)
], IssueCardDto.prototype, "encryptedData", void 0);
__decorate([
(0, swagger_1.ApiProperty)({
description: 'Название кооператива',
example: 'CoopNameXYZ',
}),
(0, class_validator_1.IsString)(),
(0, class_validator_1.IsNotEmpty)(),
__metadata("design:type", String)
], IssueCardDto.prototype, "coopName", void 0);
__decorate([
(0, swagger_1.ApiProperty)({
description: 'Цифровая подпись для проверки данных',
example: 'signatureBase64Encoded12345',
}),
(0, class_validator_1.IsString)(),
(0, class_validator_1.IsNotEmpty)(),
__metadata("design:type", String)
], IssueCardDto.prototype, "signature", void 0);
class CardResponseDto {
}
exports.CardResponseDto = CardResponseDto;
//# sourceMappingURL=card.dto.js.map
@@ -0,0 +1 @@
{"version":3,"file":"card.dto.js","sourceRoot":"","sources":["../../../src/infrastructure/dto/card.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAuD;AACvD,6CAA8C;AAE9C,MAAa,YAAY;CAgCxB;AAhCD,oCAgCC;AAzBC;IANC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,+CAA+C;QAC5D,OAAO,EAAE,UAAU;KACpB,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;8CACI;AAQjB;IANC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,0CAA0C;QACvD,OAAO,EAAE,2BAA2B;KACrC,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;mDACS;AAQtB;IANC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,sBAAsB;QACnC,OAAO,EAAE,aAAa;KACvB,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;8CACI;AAQjB;IANC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,sCAAsC;QACnD,OAAO,EAAE,6BAA6B;KACvC,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;+CACK;AAIpB,MAAa,eAAe;CAI3B;AAJD,0CAIC"}
@@ -0,0 +1,20 @@
export declare class InitiateRegistrationDto {
email: string;
}
export declare class CompleteRegistrationDto {
email: string;
hashKey: string;
uuid: string;
}
export declare class InitiateLoginDto {
email: string;
}
export declare class CompleteLoginDto {
email: string;
hashKey: string;
uuid: string;
}
export declare class UserResponseDto {
accessToken: string;
refreshToken: string;
}
+108
View File
@@ -0,0 +1,108 @@
"use strict";
var __decorate = (this && this.__decorate) || function (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;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.UserResponseDto = exports.CompleteLoginDto = exports.InitiateLoginDto = exports.CompleteRegistrationDto = exports.InitiateRegistrationDto = void 0;
const class_validator_1 = require("class-validator");
const swagger_1 = require("@nestjs/swagger");
class InitiateRegistrationDto {
}
exports.InitiateRegistrationDto = InitiateRegistrationDto;
__decorate([
(0, swagger_1.ApiProperty)({
description: 'Email пользователя',
example: 'user@example.com',
}),
(0, class_validator_1.IsEmail)(),
__metadata("design:type", String)
], InitiateRegistrationDto.prototype, "email", void 0);
class CompleteRegistrationDto {
}
exports.CompleteRegistrationDto = CompleteRegistrationDto;
__decorate([
(0, swagger_1.ApiProperty)({
description: 'Email пользователя',
example: 'user@example.com',
}),
(0, class_validator_1.IsEmail)(),
__metadata("design:type", String)
], CompleteRegistrationDto.prototype, "email", void 0);
__decorate([
(0, swagger_1.ApiProperty)({
description: 'Хэш-ключ для завершения регистрации',
example: 'secureHash123',
}),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], CompleteRegistrationDto.prototype, "hashKey", void 0);
__decorate([
(0, swagger_1.ApiProperty)({
description: 'Уникальный идентификатор запроса',
example: 'uuid-123e4567-e89b-12d3-a456-426614174000',
}),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], CompleteRegistrationDto.prototype, "uuid", void 0);
class InitiateLoginDto {
}
exports.InitiateLoginDto = InitiateLoginDto;
__decorate([
(0, swagger_1.ApiProperty)({
description: 'Email пользователя',
example: 'user@example.com',
}),
(0, class_validator_1.IsEmail)(),
__metadata("design:type", String)
], InitiateLoginDto.prototype, "email", void 0);
class CompleteLoginDto {
}
exports.CompleteLoginDto = CompleteLoginDto;
__decorate([
(0, swagger_1.ApiProperty)({
description: 'Email пользователя',
example: 'user@example.com',
}),
(0, class_validator_1.IsEmail)(),
__metadata("design:type", String)
], CompleteLoginDto.prototype, "email", void 0);
__decorate([
(0, swagger_1.ApiProperty)({
description: 'Хэш-ключ для завершения входа',
example: 'secureHash123',
}),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], CompleteLoginDto.prototype, "hashKey", void 0);
__decorate([
(0, swagger_1.ApiProperty)({
description: 'Уникальный идентификатор запроса',
example: 'uuid-123e4567-e89b-12d3-a456-426614174000',
}),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], CompleteLoginDto.prototype, "uuid", void 0);
class UserResponseDto {
}
exports.UserResponseDto = UserResponseDto;
__decorate([
(0, swagger_1.ApiProperty)({
description: 'Токен доступа для авторизации',
example: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...',
}),
__metadata("design:type", String)
], UserResponseDto.prototype, "accessToken", void 0);
__decorate([
(0, swagger_1.ApiProperty)({
description: 'Токен для обновления доступа',
example: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...',
}),
__metadata("design:type", String)
], UserResponseDto.prototype, "refreshToken", void 0);
//# sourceMappingURL=user.dto.js.map
@@ -0,0 +1 @@
{"version":3,"file":"user.dto.js","sourceRoot":"","sources":["../../../src/infrastructure/dto/user.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAgE;AAChE,6CAA8C;AAE9C,MAAa,uBAAuB;CAOnC;AAPD,0DAOC;AADC;IALC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,oBAAoB;QACjC,OAAO,EAAE,kBAAkB;KAC5B,CAAC;IACD,IAAA,yBAAO,GAAE;;sDACI;AAGhB,MAAa,uBAAuB;CAqBnC;AArBD,0DAqBC;AAfC;IALC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,oBAAoB;QACjC,OAAO,EAAE,kBAAkB;KAC5B,CAAC;IACD,IAAA,yBAAO,GAAE;;sDACI;AAOd;IALC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,qCAAqC;QAClD,OAAO,EAAE,eAAe;KACzB,CAAC;IACD,IAAA,0BAAQ,GAAE;;wDACK;AAOhB;IALC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,kCAAkC;QAC/C,OAAO,EAAE,2CAA2C;KACrD,CAAC;IACD,IAAA,0BAAQ,GAAE;;qDACE;AAGf,MAAa,gBAAgB;CAO5B;AAPD,4CAOC;AADC;IALC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,oBAAoB;QACjC,OAAO,EAAE,kBAAkB;KAC5B,CAAC;IACD,IAAA,yBAAO,GAAE;;+CACI;AAGhB,MAAa,gBAAgB;CAqB5B;AArBD,4CAqBC;AAfC;IALC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,oBAAoB;QACjC,OAAO,EAAE,kBAAkB;KAC5B,CAAC;IACD,IAAA,yBAAO,GAAE;;+CACI;AAOd;IALC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,+BAA+B;QAC5C,OAAO,EAAE,eAAe;KACzB,CAAC;IACD,IAAA,0BAAQ,GAAE;;iDACK;AAOhB;IALC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,kCAAkC;QAC/C,OAAO,EAAE,2CAA2C;KACrD,CAAC;IACD,IAAA,0BAAQ,GAAE;;8CACE;AAGf,MAAa,eAAe;CAY3B;AAZD,0CAYC;AAPC;IAJC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,+BAA+B;QAC5C,OAAO,EAAE,yCAAyC;KACnD,CAAC;;oDACkB;AAMpB;IAJC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,8BAA8B;QAC3C,OAAO,EAAE,yCAAyC;KACnD,CAAC;;qDACmB"}
@@ -0,0 +1,4 @@
declare const CoopJwtAuthGuard_base: import("@nestjs/passport").Type<import("@nestjs/passport").IAuthGuard>;
export declare class CoopJwtAuthGuard extends CoopJwtAuthGuard_base {
}
export {};
@@ -0,0 +1,18 @@
"use strict";
var __decorate = (this && this.__decorate) || function (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;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.CoopJwtAuthGuard = void 0;
const common_1 = require("@nestjs/common");
const passport_1 = require("@nestjs/passport");
let CoopJwtAuthGuard = class CoopJwtAuthGuard extends (0, passport_1.AuthGuard)('coop-jwt') {
};
exports.CoopJwtAuthGuard = CoopJwtAuthGuard;
exports.CoopJwtAuthGuard = CoopJwtAuthGuard = __decorate([
(0, common_1.Injectable)()
], CoopJwtAuthGuard);
//# sourceMappingURL=coop-jwt-auth.guard.js.map
@@ -0,0 +1 @@
{"version":3,"file":"coop-jwt-auth.guard.js","sourceRoot":"","sources":["../../../src/infrastructure/guards/coop-jwt-auth.guard.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAC5C,+CAA6C;AAGtC,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,IAAA,oBAAS,EAAC,UAAU,CAAC;CAAG,CAAA;AAAjD,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;GACA,gBAAgB,CAAiC"}
@@ -0,0 +1,4 @@
declare const JwtAuthGuard_base: import("@nestjs/passport").Type<import("@nestjs/passport").IAuthGuard>;
export declare class JwtAuthGuard extends JwtAuthGuard_base {
}
export {};
@@ -0,0 +1,18 @@
"use strict";
var __decorate = (this && this.__decorate) || function (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;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.JwtAuthGuard = void 0;
const common_1 = require("@nestjs/common");
const passport_1 = require("@nestjs/passport");
let JwtAuthGuard = class JwtAuthGuard extends (0, passport_1.AuthGuard)('jwt') {
};
exports.JwtAuthGuard = JwtAuthGuard;
exports.JwtAuthGuard = JwtAuthGuard = __decorate([
(0, common_1.Injectable)()
], JwtAuthGuard);
//# sourceMappingURL=jwt-auth.guard.js.map
@@ -0,0 +1 @@
{"version":3,"file":"jwt-auth.guard.js","sourceRoot":"","sources":["../../../src/infrastructure/guards/jwt-auth.guard.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAC5C,+CAA6C;AAGtC,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,IAAA,oBAAS,EAAC,KAAK,CAAC;CAAG,CAAA;AAAxC,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;GACA,YAAY,CAA4B"}

Some files were not shown because too many files have changed in this diff Show More