mirror of
https://github.com/documenso/documenso.git
synced 2025-11-14 16:51:38 +10:00
feat: add organisations (#1820)
This commit is contained in:
@ -0,0 +1,58 @@
|
||||
import { getHighestOrganisationRoleInGroup } from '@documenso/lib/utils/organisations';
|
||||
import { prisma } from '@documenso/prisma';
|
||||
|
||||
import { authenticatedProcedure } from '../trpc';
|
||||
import {
|
||||
ZGetOrganisationsRequestSchema,
|
||||
ZGetOrganisationsResponseSchema,
|
||||
} from './get-organisations.types';
|
||||
|
||||
export const getOrganisationsRoute = authenticatedProcedure
|
||||
// .meta(getOrganisationsMeta)
|
||||
.input(ZGetOrganisationsRequestSchema)
|
||||
.output(ZGetOrganisationsResponseSchema)
|
||||
.query(async ({ ctx }) => {
|
||||
const { user } = ctx;
|
||||
|
||||
return getOrganisations({ userId: user.id });
|
||||
});
|
||||
|
||||
export const getOrganisations = async ({ userId }: { userId: number }) => {
|
||||
const organisations = await prisma.organisation.findMany({
|
||||
where: {
|
||||
members: {
|
||||
some: {
|
||||
userId,
|
||||
},
|
||||
},
|
||||
},
|
||||
include: {
|
||||
members: {
|
||||
where: {
|
||||
userId,
|
||||
},
|
||||
},
|
||||
groups: {
|
||||
where: {
|
||||
organisationGroupMembers: {
|
||||
some: {
|
||||
organisationMember: {
|
||||
userId,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
return organisations.map(({ groups, ...organisation }) => {
|
||||
const currentOrganisationRole = getHighestOrganisationRoleInGroup(groups);
|
||||
|
||||
return {
|
||||
...organisation,
|
||||
currentOrganisationRole: currentOrganisationRole,
|
||||
currentMemberId: organisation.members[0].id,
|
||||
};
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user