Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
Next Next commit
feat: refactor rback to its own package
  • Loading branch information
dahal committed Jun 1, 2025
commit 3bb9320eddecb5cd709814b76eacebe979a70298
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { AuditTable } from "@/components/audit/audit-table";
import { Card } from "@/components/ui/card";
import { UnAuthorizedState } from "@/components/ui/un-authorized-state";
import { serverAccessControl } from "@/lib/rbac/access-control";
import { serverAccessControl } from "@/server/member";
import { api } from "@/trpc/server";
import type { Metadata } from "next";
import { headers } from "next/headers";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@ import { PdfCanvas } from "@/components/template/pdf-canvas";
import { Alert, AlertDescription } from "@/components/ui/alert";
import { Badge } from "@/components/ui/badge";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
import { serverAccessControl } from "@/lib/rbac/access-control";
import { serverAccessControl } from "@/server/member";
import { TemplateSigningFieldProvider } from "@/providers/template-signing-field-provider";
import { api } from "@/trpc/server";
import type { RouterOutputs } from "@/trpc/shared";
import { RiCheckFill } from "@remixicon/react";
import { headers } from "next/headers";
import { UnAuthorizedState } from "@/components/ui/un-authorized-state";

type BadgeVariant =
| "warning"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
import { Button } from "@/components/ui/button";
import EmptyState from "@/components/common/empty-state";
import { PageLayout } from "@/components/dashboard/page-layout";
import { Card } from "@/components/ui/card";
import { UnAuthorizedState } from "@/components/ui/un-authorized-state";
import { serverAccessControl } from "@/lib/rbac/access-control";
import { serverAccessControl } from "@/server/member";
import { useServerSideSession } from "@/hooks/use-server-side-session";
import { api } from "@/trpc/server";
import { RiUploadCloudLine } from "@remixicon/react";
import { RiUploadCloudLine, RiAddFill } from "@remixicon/react";
import type { Metadata } from "next";
import DocumentsTable from "./components/table";
import { DocumentUploadButton } from "./document-upload-button";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,11 @@ import {

import Tldr from "@/components/common/tldr";
import { Card } from "@/components/ui/card";
import { type EquityPlanMutationType } from "@/trpc/routers/equity-plan/schema";
import { type ShareClassMutationType } from "@/trpc/routers/share-class/schema";
import type { EquityPlanMutationType } from "@/trpc/routers/equity-plan/schema";
import type { ShareClassMutationType } from "@/trpc/routers/share-class/schema";
import { RiEqualizer2Line } from "@remixicon/react";
import EquityPlanModal from "./modal";
import { cn } from "@/lib/utils";
import { pushModal } from "@/providers/modal-provider";
import type { RouterOutputs } from "@/trpc/shared";
import type { ColumnDef } from "@tanstack/react-table";
const formatter = new Intl.NumberFormat("en-US");
Expand Down Expand Up @@ -53,7 +52,7 @@ const EquityPlanTable = ({
<TableHead>Cancellation behavior</TableHead>
<TableHead>Board approval date</TableHead>
<TableHead>Plan effective date</TableHead>
<TableHead></TableHead>
<TableHead />
</TableRow>
</TableHeader>
<TableBody>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,12 @@ import { useServerSideSession } from "@/hooks/use-server-side-session";
import { getCompanyList } from "@/server/company";
import { redirect } from "next/navigation";
import "@/styles/hint.css";
import { RBAC } from "@/lib/rbac";
import { getServerPermissions } from "@/lib/rbac/access-control";
import { RBAC } from "@captable/rbac";
import { getServerPermissions } from "@/server/member";
import { RolesProvider } from "@/providers/roles-provider";
import { headers } from "next/headers";
import { checkMembership } from "@/server/member";
import { db } from "@captable/db";

type DashboardLayoutProps = {
children: React.ReactNode;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
import EmptyState from "@/components/common/empty-state";
import { UnAuthorizedState } from "@/components/ui/un-authorized-state";
import { serverAccessControl } from "@/lib/rbac/access-control";
import { serverAccessControl } from "@/server/member";
import { api } from "@/trpc/server";
import { RiBankFill } from "@remixicon/react";
import type { Metadata } from "next";
import { Fragment } from "react";
import CtaButton from "./components/cta-button";
import BankAccountsTable from "./components/table";
import { headers } from "next/headers";
import { PageLayout } from "@/components/dashboard/page-layout";

export const metadata: Metadata = {
title: "Bank accounts",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import { CompanyForm } from "@/components/onboarding/company-form";
import { UnAuthorizedState } from "@/components/ui/un-authorized-state";
import { serverAccessControl } from "@/lib/rbac/access-control";
import { serverAccessControl } from "@/server/member";
import { api } from "@/trpc/server";
import type { Metadata } from "next";
import { headers } from "next/headers";
import { PageLayout } from "@/components/dashboard/page-layout";

export const metadata: Metadata = {
title: "Company",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
import { PageLayout } from "@/components/dashboard/page-layout";
import { RoleCreateUpdateModalAction } from "@/components/modals/role-create-update-modal";
import { RoleTable } from "@/components/rbac/role-table";
import { Button } from "@/components/ui/button";
import RoleCreateUpdateModal from "@/components/modals/role-create-update-modal";
import RoleTable from "@/components/rbac/role-table";
import { Card } from "@/components/ui/card";
import { serverAccessControl } from "@/lib/rbac/access-control";
import { UnAuthorizedState } from "@/components/ui/un-authorized-state";
import { serverAccessControl } from "@/server/member";
import { api } from "@/trpc/server";
import { headers } from "next/headers";
import { pushModal } from "@/components/modals";

export default async function RolesPage() {
const { allow } = await serverAccessControl({ headers: await headers() });
Expand All @@ -18,7 +21,7 @@ export default async function RolesPage() {
<PageLayout
title="Roles"
description="Create and manage roles for your company."
action={<RoleCreateUpdateModalAction disabled={!canCreate} />}
action={<RoleCreateUpdateModal disabled={!canCreate} />}
/>

{data ? <RoleTable roles={data.rolesList} /> : null}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
import StakeholderTable from "@/components/stakeholder/stakeholder-table";
import { Button } from "@/components/ui/button";
import EmptyState from "@/components/common/empty-state";
import { PageLayout } from "@/components/dashboard/page-layout";
import { serverAccessControl } from "@/server/member";
import StakeholderDropdown from "@/components/stakeholder/stakeholder-dropdown";
import StakeholderTable from "@/components/stakeholder/stakeholder-table";
import { Card } from "@/components/ui/card";
import { UnAuthorizedState } from "@/components/ui/un-authorized-state";
import { serverAccessControl } from "@/lib/rbac/access-control";
import { api } from "@/trpc/server";
import { RiGroup2Fill } from "@remixicon/react";
import type { Metadata } from "next";
Expand Down
9 changes: 8 additions & 1 deletion apps/captable/components/member/member-table.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ import { api } from "@/trpc/react";

import { Avatar, AvatarImage } from "@/components/ui/avatar";

import { getRoleId } from "@/lib/rbac/access-control-utils";
import { createStandardRoleIdMapper } from "@captable/rbac/utils";
import type { RoleEnum } from "@captable/db";
import type { RouterOutputs } from "@/trpc/shared";
import { RiMore2Fill } from "@remixicon/react";
import { clientSideSession } from "@captable/auth/client";
Expand All @@ -53,6 +54,12 @@ type MembersType = {
roles: Roles;
};

// Create the role ID mapper inline
const getRoleId = createStandardRoleIdMapper<RoleEnum>({
adminRoleValue: "ADMIN",
customRoleValue: "CUSTOM",
});

const humanizeStatus = (status: string) => {
if (status === "PENDING") {
return (
Expand Down
2 changes: 1 addition & 1 deletion apps/captable/components/modals/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { ExistingSafeModal } from "./existing-safe-modal";
import { IssueShareModal } from "./issue-share-modal";
import { IssueStockOptionModal } from "./issue-stock-option-modal";
import { NewSafeModal } from "./new-safe-modal";
import { RoleCreateUpdateModal } from "./role-create-update-modal";
import RoleCreateUpdateModal from "./role-create-update-modal";
import { ShareClassModal } from "./share-class/share-class-modal";
import { ShareDataRoomModal } from "./share-dataroom-modal";
import { ShareUpdateModal } from "./share-update-modal";
Expand Down
Loading