autumn-js
Version:
Autumn JS Library
43 lines (42 loc) • 1.14 kB
JavaScript
"use server";
import { decryptData } from "../../../utils/encryptUtils";
import { handleAuthProvider } from "./handleAuthProvider";
import { getAuthPlugin } from "./authPlugin";
const noCustomerIdError = () => {
return {
data: null,
error: {
message: "Customer ID is required",
code: "no_customer_id"
}
};
};
const withAuth = ({
fn,
withCustomerData = false,
requireCustomer = true
}) => {
return async (args, request) => {
let customerId = null;
let customerData = args.customerData || void 0;
const authConfig = getAuthPlugin();
if (authConfig?.provider) {
let result = await handleAuthProvider({
authPlugin: authConfig,
withCustomerData
});
customerId = result?.customerId;
customerData = result?.customerData || void 0;
} else {
let encryptedCustomerId = args.encryptedCustomerId;
customerId = encryptedCustomerId ? decryptData(encryptedCustomerId) : null;
}
if (!customerId && requireCustomer) {
return noCustomerIdError();
}
return fn({ ...args, customerId, customerData });
};
};
export {
withAuth
};