From 0cbf2fbd44f0c51d7ab4a921427faec4d4c0244e Mon Sep 17 00:00:00 2001 From: Nevo David Date: Sat, 19 Oct 2024 23:37:54 +0700 Subject: [PATCH] feat: public api --- .../src/services/auth/auth.middleware.ts | 4 +++ .../organizations/organization.repository.ts | 13 +++++++ .../organizations/organization.service.ts | 4 +++ .../src/database/prisma/schema.prisma | 35 ++++++++++--------- 4 files changed, 39 insertions(+), 17 deletions(-) diff --git a/apps/backend/src/services/auth/auth.middleware.ts b/apps/backend/src/services/auth/auth.middleware.ts index a10a7e12..e4457cb5 100644 --- a/apps/backend/src/services/auth/auth.middleware.ts +++ b/apps/backend/src/services/auth/auth.middleware.ts @@ -81,6 +81,10 @@ export class AuthMiddleware implements NestMiddleware { throw new HttpForbiddenException(); } + if (!setOrg.apiKey) { + await this._organizationService.updateApiKey(setOrg.id); + } + // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-expect-error req.user = user; diff --git a/libraries/nestjs-libraries/src/database/prisma/organizations/organization.repository.ts b/libraries/nestjs-libraries/src/database/prisma/organizations/organization.repository.ts index 85084600..12c3c50a 100644 --- a/libraries/nestjs-libraries/src/database/prisma/organizations/organization.repository.ts +++ b/libraries/nestjs-libraries/src/database/prisma/organizations/organization.repository.ts @@ -3,6 +3,7 @@ import { Role, SubscriptionTier } from '@prisma/client'; import { Injectable } from '@nestjs/common'; import { AuthService } from '@gitroom/helpers/auth/auth.service'; import { CreateOrgUserDto } from '@gitroom/nestjs-libraries/dtos/auth/create.org.user.dto'; +import { makeId } from '@gitroom/nestjs-libraries/services/make.is'; @Injectable() export class OrganizationRepository { @@ -83,6 +84,17 @@ export class OrganizationRepository { }); } + updateApiKey(orgId: string) { + return this._organization.model.organization.update({ + where: { + id: orgId, + }, + data: { + apiKey: AuthService.fixedEncryption(makeId(20)), + }, + }); + } + async getOrgsByUserId(userId: string) { return this._organization.model.organization.findMany({ where: { @@ -183,6 +195,7 @@ export class OrganizationRepository { return this._organization.model.organization.create({ data: { name: body.company, + apiKey: AuthService.fixedEncryption(makeId(20)), users: { create: { role: Role.SUPERADMIN, diff --git a/libraries/nestjs-libraries/src/database/prisma/organizations/organization.service.ts b/libraries/nestjs-libraries/src/database/prisma/organizations/organization.service.ts index db239ac3..ef2ab22d 100644 --- a/libraries/nestjs-libraries/src/database/prisma/organizations/organization.service.ts +++ b/libraries/nestjs-libraries/src/database/prisma/organizations/organization.service.ts @@ -41,6 +41,10 @@ export class OrganizationService { return this._organizationRepository.getOrgsByUserId(userId); } + updateApiKey(orgId: string) { + return this._organizationRepository.updateApiKey(orgId); + } + getTeam(orgId: string) { return this._organizationRepository.getTeam(orgId); } diff --git a/libraries/nestjs-libraries/src/database/prisma/schema.prisma b/libraries/nestjs-libraries/src/database/prisma/schema.prisma index a2858330..82484055 100644 --- a/libraries/nestjs-libraries/src/database/prisma/schema.prisma +++ b/libraries/nestjs-libraries/src/database/prisma/schema.prisma @@ -11,24 +11,25 @@ datasource db { } model Organization { - id String @id @default(uuid()) - name String - description String? - users UserOrganization[] - media Media[] - paymentId String? - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - github GitHub[] - subscription Subscription? - Integration Integration[] - post Post[] @relation("organization") - submittedPost Post[] @relation("submittedForOrg") - Comments Comments[] - notifications Notifications[] + id String @id @default(uuid()) + name String + description String? + apiKey String? + users UserOrganization[] + media Media[] + paymentId String? + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + github GitHub[] + subscription Subscription? + Integration Integration[] + post Post[] @relation("organization") + submittedPost Post[] @relation("submittedForOrg") + Comments Comments[] + notifications Notifications[] buyerOrganization MessagesGroup[] - usedCodes UsedCodes[] - credits Credits[] + usedCodes UsedCodes[] + credits Credits[] } model User {