a44a3e5b84
* feat: add Webhook resource to PBAC system with permission enforcement - Add Webhook resource to PBAC permission registry with CRUD actions - Implement PBAC permission checks in webhook handlers (create, edit, delete) - Add webhook permission translations to common.json - Use PermissionCheckService with fallback roles [ADMIN, OWNER] for team webhooks - Maintain backward compatibility when PBAC is disabled - Follow same pattern as workflow PBAC implementation from PR #22845 Co-Authored-By: sean@cal.com <Sean@brydon.io> * fix: implement PBAC permission filtering in webhook list handler - Add PermissionCheckService to filter team webhooks by webhook.read permission - Only show webhooks from teams where user has proper permissions - Maintain backward compatibility with fallback to all team memberships Co-Authored-By: sean@cal.com <Sean@brydon.io> * add migration for default roles * new forUserMethod * update webhook repository * fix UI showing/hiding webhooks for webhoo.create teams * WIP pbac procedure migratoin + tests * add more roles to get fallback * permissions in cmponents instead of readOnly * passPermissions to list item * push instant events logic * Git merge * wip teamId accessable refactor * fix delete handler --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
36 lines
1.0 KiB
TypeScript
36 lines
1.0 KiB
TypeScript
"use client";
|
|
|
|
import { useRouter } from "next/navigation";
|
|
|
|
import { CreateButtonWithTeamsList } from "@calcom/features/ee/teams/components/createButton/CreateButtonWithTeamsList";
|
|
import { useLocale } from "@calcom/lib/hooks/useLocale";
|
|
import { MembershipRole } from "@calcom/prisma/enums";
|
|
|
|
export const CreateNewWebhookButton = () => {
|
|
const router = useRouter();
|
|
const { t } = useLocale();
|
|
const createFunction = (teamId?: number, platform?: boolean) => {
|
|
if (platform) {
|
|
router.push(`webhooks/new${platform ? `?platform=${platform}` : ""}`);
|
|
} else {
|
|
router.push(`webhooks/new${teamId ? `?teamId=${teamId}` : ""}`);
|
|
}
|
|
};
|
|
|
|
return (
|
|
<CreateButtonWithTeamsList
|
|
color="secondary"
|
|
subtitle={t("create_for").toUpperCase()}
|
|
createFunction={createFunction}
|
|
data-testid="new_webhook"
|
|
includeOrg={true}
|
|
withPermission={{
|
|
permission: "webhook.create",
|
|
fallbackRoles: [MembershipRole.ADMIN, MembershipRole.OWNER],
|
|
}}
|
|
/>
|
|
);
|
|
};
|
|
|
|
export default CreateNewWebhookButton;
|