办事员 Webhooks 处理器
一个精简Clerk webhooks配置的软件包.
QQ 此项目没有得到办事员的正式支持. 自行取用.
项目目标
这个软件包的目标是通过抽象去解析来源事件类型和有效载荷的过程,以及自动验证来源请求的签名,从而更容易与Clerk webhooks合作.
结果是使用回调功能并经过被支持的有效载荷的全型版本的单一方法,使得操作更加简单,比如更新数据库记录,发送自定义通知,以及您想构建的任何其他自定义逻辑.
安装
此软件包部署到 国家预防机制 并可以安装以下命令:
npm install @brianmmdev/clerk-webhooks-handler
环境变量
要运行此工程, 您需要将以下环境变量添加到您的. env 文件 :
WEBHOOK_SECRET- 电话 签名保密 在登记新的终点时从办事员仪表板获得的价值.
使用/实例
虽然这个软件包理论上可以和任何JavaScript网络框架一起使用,但到目前为止它只用Next.js进行了测试,因此这个例子将使用Next.js.
- 在您首选的位置创建路由处理器 .
- 创建实例
createWebhooksHandler,在配置对象中传递一系列召回功能. - 导出处理器的
POST方法为POSTnext.js会将网络请求传入其中.
以下示例显示此路由处理器与 onUserUpdated 当一个用户在办事员中更新时,会点火,以及 onSessionCreated 当会话被创建时.
import { createWebhooksHandler } from "@brianmmdev/clerk-webhooks-handler";
import { UserJSON, SessionJSON } from "@clerk/nextjs/server";
const handler = createWebhooksHandler({
// Add/remove optional handlers to get access to the data.
onUserUpdated: async (payload: UserJSON) => {
// Handle the payload...
},
onSessionCreated: async (payload: SessionJSON) => {
// Handle the payload...
}
})
export const POST = handler.POST
这个 WebhookRegistrationConfig 对象定义所有被支持的回调, 而回调又与其在 Clerve 中的 Webhook 事件相对应 :
export type WebhookRegistrationConfig = {
secret?: string
onEmailCreated?: HandlerFn<EmailJSON>;
onOrganizationCreated?: HandlerFn<OrganizationJSON>;
onOrganizationDeleted?: HandlerFn<DeletedObjectJSON>;
onOrganizationUpdated?: HandlerFn<OrganizationJSON>;
onOrganizationInvitationAccepted?: HandlerFn<OrganizationInvitationJSON>;
onOrganizationInvitationCreated?: HandlerFn<OrganizationInvitationJSON>;
onOrganizationInvitationRevoked?: HandlerFn<OrganizationInvitationJSON>;
onOrganizationMembershipCreated?: HandlerFn<OrganizationMembershipJSON>;
onOrganizationMembershipDeleted?: HandlerFn<DeletedObjectJSON>;
onOrganizationMembershipUpdated?: HandlerFn<OrganizationMembershipJSON>;
onPermissionCreated?: HandlerFn<PermissionJSON>;
onPermissionDeleted?: HandlerFn<DeletedObjectJSON>;
onPermissionUpdated?: HandlerFn<PermissionJSON>;
onRoleCreated?: HandlerFn<RoleJSON>;
onRoleDeleted?: HandlerFn<DeletedObjectJSON>;
onRoleUpdated?: HandlerFn<RoleJSON>;
onSessionCreated?: HandlerFn<SessionJSON>;
onSessionEnded?: HandlerFn<SessionJSON>;
onSessionPending?: HandlerFn<SessionJSON>;
onSessionRemoved?: HandlerFn<SessionJSON>;
onSessionRevoked?: HandlerFn<SessionJSON>;
onSmsCreated?: HandlerFn<SMSMessageJSON>;
onUserCreated?: HandlerFn<UserJSON>;
onUserCreatedAtEdge?: HandlerFn<UserJSON>;
onUserDeleted?: HandlerFn<DeletedObjectJSON>;
onUserUpdated?: HandlerFn<UserJSON>;
onWaitlistEntryCreated?: HandlerFn<OrganizationJSON>;
onWaitlistEntryUpdated?: HandlerFn<OrganizationJSON>;
}
如果对应的 Webhook 未定义回调, 软件包将使用 404 呼叫者的身份 .
捐款
总是欢迎捐款! 为了对这个项目作出贡献,将它分叉入您自己的GitHub账户或组织,进行必要的修改,并创建一个拉出请求进入这个寄存器.
如果我不及时回复 @ brianmmdev
反馈
如果您有任何反馈,请在Twitter上联系我: @ brianmmdev
报告问题或提出改进建议,请自觉 创建问题。 。 。 .