Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions apps/api/src/services/company/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ export {
acceptInvitation,
cancelInvitation,
getInvitationByToken,
getPendingInvitations,
inviteMember,
listPendingInvitations,
resendInvitation,
Expand All @@ -38,7 +37,6 @@ export {
getMembers,
listMembers,
getUserCompanies,
hasPermission,
removeMember,
transferOwnership,
updateMemberRole,
Expand Down
31 changes: 0 additions & 31 deletions apps/api/src/services/company/invitations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -221,37 +221,6 @@ export async function inviteMember(
return invitation as unknown as Invitation;
}

/**
* Gets pending invitations for a company
*/
export async function getPendingInvitations(
companyId: string,
): Promise<Invitation[]> {
const invitations = await db
.selectFrom("invitations as i")
.innerJoin("users as inviter", "inviter.id", "i.invited_by")
.select([
"i.id",
"i.company_id",
"i.email",
"i.role",
"i.permissions",
"i.token",
"i.invited_by",
"inviter.name as inviter_name",
"inviter.email as inviter_email",
"i.expires_at",
"i.accepted_at",
"i.created_at",
])
.where("i.company_id", "=", companyId)
.where("i.accepted_at", "is", null)
.where("i.expires_at", ">", toDbDate())
.execute();

return invitations as unknown as Invitation[];
}

export interface ListPendingInvitationsOptions {
search?: string;
role?: "all" | "admin" | "member";
Expand Down
15 changes: 0 additions & 15 deletions apps/api/src/services/company/members.ts
Original file line number Diff line number Diff line change
Expand Up @@ -144,21 +144,6 @@ export async function getMemberRole(
return (member?.role as "owner" | "admin" | "member") || null;
}

/**
* Checks if a user has permission to perform an action
*/
export async function hasPermission(
companyId: string,
userId: string,
requiredRole: "owner" | "admin" | "member",
): Promise<boolean> {
const role = await getMemberRole(companyId, userId);
if (!role) return false;

const roleHierarchy = { owner: 3, admin: 2, member: 1 };
return roleHierarchy[role] >= roleHierarchy[requiredRole];
}

/** Hierarchy policy shared by role changes and member removal. */
export function canManageMember(
actorRole: "owner" | "admin" | "member",
Expand Down