RegisterCustomer
Implements RegisterCustomer Unified Method.
Source
import "./extended";
import { getNormalizers } from "@alokai/connect/integration-kit";
import { defineApi, getCartFromContext } from "@vsf-enterprise/unified-api-sapcc";
export const registerCustomer = defineApi.registerCustomer(async (context, args) => {
const { api } = await context.getApiClient();
const { email, firstName, lastName, password } = args;
const { normalizeCustomer } = getNormalizers(context);
const cart = await getCartFromContext(context);
const authUserIdCookieName = context.config.headersNames!.authUserIdCookie!;
const authUserTokenCookieName = context.config.headersNames!.authUserTokenCookie!;
const { data: user } = await api.createUser({
userSignUp: {
firstName: firstName,
lastName: lastName,
password: password,
uid: email,
},
});
if (context.req.cookies[authUserTokenCookieName]) {
// ASM agent is logged in and will start emulating registered user
context.res.cookie(authUserIdCookieName, user.customerId);
} else {
const loginData = await context.extendedApi.auth.OAuthUserAuthorization({
password: password,
username: email,
});
context.req.cookies[authUserTokenCookieName] = JSON.stringify(loginData.token);
}
const shouldCreateNewCartBasedOnGuestCart = cart.totalItems && cart.guid;
if (shouldCreateNewCartBasedOnGuestCart) {
await api.createCart({
oldCartId: cart.guid,
});
}
return {
customer: normalizeCustomer(user),
};
});