fix: don't use unpublished org in any credit context (#22600)
* fix: don't use unpublished org for any credit context * type error * fix test * update
This commit is contained in:
@@ -84,6 +84,9 @@ async function handler(req: NextApiRequest, res: NextApiResponse) {
|
||||
where: {
|
||||
userId: parsedUserId,
|
||||
accepted: true,
|
||||
team: {
|
||||
slug: { not: null },
|
||||
},
|
||||
},
|
||||
select: {
|
||||
teamId: true,
|
||||
|
||||
@@ -143,7 +143,7 @@ describe("CreditService", () => {
|
||||
|
||||
describe("getTeamWithAvailableCredits", () => {
|
||||
it("should return team with available credits", async () => {
|
||||
vi.mocked(MembershipRepository.findAllAcceptedMemberships).mockResolvedValue([
|
||||
vi.mocked(MembershipRepository.findAllAcceptedPublishedTeamMemberships).mockResolvedValue([
|
||||
{
|
||||
id: 1,
|
||||
teamId: 1,
|
||||
@@ -169,7 +169,7 @@ describe("CreditService", () => {
|
||||
});
|
||||
|
||||
it("should return first team if no team has available credits", async () => {
|
||||
vi.mocked(MembershipRepository.findAllAcceptedMemberships).mockResolvedValue([
|
||||
vi.mocked(MembershipRepository.findAllAcceptedPublishedTeamMemberships).mockResolvedValue([
|
||||
{
|
||||
id: 1,
|
||||
teamId: 1,
|
||||
@@ -357,7 +357,9 @@ describe("CreditService", () => {
|
||||
});
|
||||
|
||||
it("should return team with available credits when userId is provided", async () => {
|
||||
vi.mocked(MembershipRepository.findAllAcceptedMemberships).mockResolvedValue([{ teamId: 1 }]);
|
||||
vi.mocked(MembershipRepository.findAllAcceptedPublishedTeamMemberships).mockResolvedValue([
|
||||
{ teamId: 1 },
|
||||
]);
|
||||
|
||||
vi.mocked(CreditsRepository.findCreditBalance).mockResolvedValue({
|
||||
id: "1",
|
||||
|
||||
@@ -191,9 +191,9 @@ export class CreditService {
|
||||
If user has memberships, it always returns a team, even if all have limit reached. In that case, limitReached: true is returned
|
||||
*/
|
||||
protected async _getTeamWithAvailableCredits({ userId, tx }: { userId: number; tx: PrismaTransaction }) {
|
||||
const memberships = await MembershipRepository.findAllAcceptedMemberships(userId, tx);
|
||||
const memberships = await MembershipRepository.findAllAcceptedPublishedTeamMemberships(userId, tx);
|
||||
|
||||
if (memberships.length === 0) {
|
||||
if (!memberships || memberships.length === 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -343,17 +343,22 @@ export class MembershipRepository {
|
||||
},
|
||||
});
|
||||
}
|
||||
static async findAllAcceptedMemberships(userId: number, tx?: PrismaTransaction) {
|
||||
|
||||
static async findAllAcceptedPublishedTeamMemberships(userId: number, tx?: PrismaTransaction) {
|
||||
return (tx ?? prisma).membership.findMany({
|
||||
where: {
|
||||
userId,
|
||||
accepted: true,
|
||||
team: {
|
||||
slug: { not: null },
|
||||
},
|
||||
},
|
||||
select: {
|
||||
teamId: true,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all team IDs that a user is a member of
|
||||
*/
|
||||
|
||||
@@ -34,9 +34,9 @@ export const buyCreditsHandler = async ({ ctx, input }: BuyCreditsOptions) => {
|
||||
}
|
||||
} else {
|
||||
// if user id is part of a team, user can't buy credits for themselves
|
||||
const memberships = await MembershipRepository.findAllAcceptedMemberships(ctx.user.id);
|
||||
const memberships = await MembershipRepository.findAllAcceptedPublishedTeamMemberships(ctx.user.id);
|
||||
|
||||
if (memberships.length > 0) {
|
||||
if (!memberships || memberships.length > 0) {
|
||||
throw new TRPCError({
|
||||
code: "UNAUTHORIZED",
|
||||
});
|
||||
|
||||
@@ -25,9 +25,9 @@ export const getAllCreditsHandler = async ({ ctx, input }: GetAllCreditsOptions)
|
||||
}
|
||||
} else {
|
||||
//if user is part of team, don't return any credits if teamId is not given
|
||||
const memberships = await MembershipRepository.findAllAcceptedMemberships(ctx.user.id);
|
||||
const memberships = await MembershipRepository.findAllAcceptedPublishedTeamMemberships(ctx.user.id);
|
||||
|
||||
if (memberships.length > 0) {
|
||||
if (!memberships || memberships.length > 0) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user