fix: check profiles from user.profiles apiv2 (#16235)

This commit is contained in:
Morgan
2024-08-16 11:06:53 +00:00
committed by GitHub
parent 25ae1493c3
commit a6d2e46b3d
4 changed files with 29 additions and 5 deletions
+4 -2
View File
@@ -7,6 +7,7 @@ import { Permissions } from "@/modules/auth/decorators/permissions/permissions.d
import { ApiAuthGuard } from "@/modules/auth/guards/api-auth/api-auth.guard";
import { PermissionsGuard } from "@/modules/auth/guards/permissions/permissions.guard";
import { UpdateManagedUserInput } from "@/modules/users/inputs/update-managed-user.input";
import { UsersService } from "@/modules/users/services/users.service";
import { UserWithProfile, UsersRepository } from "@/modules/users/users.repository";
import { Controller, UseGuards, Get, Patch, Body } from "@nestjs/common";
import { ApiTags as DocsTags } from "@nestjs/swagger";
@@ -23,13 +24,14 @@ import { userSchemaResponse } from "@calcom/platform-types";
export class MeController {
constructor(
private readonly usersRepository: UsersRepository,
private readonly schedulesService: SchedulesService_2024_04_15
private readonly schedulesService: SchedulesService_2024_04_15,
private readonly usersService: UsersService
) {}
@Get("/")
@Permissions([PROFILE_READ])
async getMe(@GetUser() user: UserWithProfile): Promise<GetMeOutput> {
const organization = user?.movedToProfile?.organization;
const organization = this.usersService.getUserMainProfile(user)?.organization;
const me = userSchemaResponse.parse(
organization
? {
@@ -6,6 +6,7 @@ import { OrganizationsTeamsRepository } from "@/modules/organizations/repositori
import { InputOrganizationsEventTypesService } from "@/modules/organizations/services/event-types/input.service";
import { OutputOrganizationsEventTypesService } from "@/modules/organizations/services/event-types/output.service";
import { PrismaWriteService } from "@/modules/prisma/prisma-write.service";
import { UsersService } from "@/modules/users/services/users.service";
import { UserWithProfile } from "@/modules/users/users.repository";
import { Injectable, NotFoundException } from "@nestjs/common";
@@ -25,7 +26,8 @@ export class OrganizationsEventTypesService {
private readonly eventTypesRepository: EventTypesRepository_2024_06_14,
private readonly outputService: OutputOrganizationsEventTypesService,
private readonly membershipsRepository: MembershipsRepository,
private readonly organizationsTeamsRepository: OrganizationsTeamsRepository
private readonly organizationsTeamsRepository: OrganizationsTeamsRepository,
private readonly usersService: UsersService
) {}
async createTeamEventType(
@@ -93,7 +95,8 @@ export class OrganizationsEventTypesService {
async getUserToCreateTeamEvent(user: UserWithProfile, organizationId: number) {
const isOrgAdmin = await this.membershipsRepository.isUserOrganizationAdmin(user.id, organizationId);
const profileId = user.movedToProfileId || null;
const profileId =
this.usersService.getUserProfileByOrgId(user, organizationId)?.id || user.movedToProfileId;
return {
id: user.id,
role: user.role,
@@ -1,4 +1,4 @@
import { UsersRepository } from "@/modules/users/users.repository";
import { UsersRepository, UserWithProfile } from "@/modules/users/users.repository";
import { Injectable } from "@nestjs/common";
import { User } from "@calcom/prisma/client";
@@ -21,4 +21,16 @@ export class UsersService {
return users;
}
getUserMainProfile(user: UserWithProfile) {
return (
user?.movedToProfile ||
user.profiles?.find((p) => p.organizationId === user.organizationId) ||
user.profiles?.[0]
);
}
getUserProfileByOrgId(user: UserWithProfile, organizationId: number) {
return user.profiles?.find((p) => p.organizationId === organizationId);
}
}
@@ -7,6 +7,7 @@ import type { Profile, User, Team } from "@prisma/client";
export type UserWithProfile = User & {
movedToProfile?: (Profile & { organization: Pick<Team, "isPlatform" | "id" | "slug" | "name"> }) | null;
profiles?: (Profile & { organization: Pick<Team, "isPlatform" | "id" | "slug" | "name"> })[];
};
@Injectable()
@@ -76,6 +77,9 @@ export class UsersRepository {
movedToProfile: {
include: { organization: { select: { isPlatform: true, name: true, slug: true, id: true } } },
},
profiles: {
include: { organization: { select: { isPlatform: true, name: true, slug: true, id: true } } },
},
},
});
}
@@ -132,6 +136,9 @@ export class UsersRepository {
movedToProfile: {
include: { organization: { select: { isPlatform: true, name: true, slug: true, id: true } } },
},
profiles: {
include: { organization: { select: { isPlatform: true, name: true, slug: true, id: true } } },
},
},
});
}