payload-auth-plugin
Version:
Authentication plugin for Payload CMS
35 lines (29 loc) • 1.15 kB
text/typescript
import { CollectionSlug } from "payload"
import { AfterOperationArg, OperationMap, OperationResult } from "./types.js"
export const buildAfterOperation = async <
TOperationGeneric extends CollectionSlug,
O extends keyof OperationMap<TOperationGeneric> = keyof OperationMap<TOperationGeneric>,
>(
operationArgs: { operation: O } & Omit<AfterOperationArg<TOperationGeneric>, 'req'>,
): Promise<any | OperationResult<TOperationGeneric, O>> => {
const { args, collection, operation, overrideAccess, result } = operationArgs
let newResult = result as OperationResult<TOperationGeneric, O>
if (args.collection.config.hooks?.afterOperation?.length) {
for (const hook of args.collection.config.hooks.afterOperation) {
const hookResult = await hook(
// @ts-expect-error
{
args,
collection,
operation,
overrideAccess,
req: args.req,
result: newResult,
} as AfterOperationArg<TOperationGeneric>)
if (hookResult !== undefined) {
newResult = hookResult as OperationResult<TOperationGeneric, O>
}
}
}
return newResult
}