feat: disable Wishlist

chore: setup commerce & next config
fix: replace all call to bigcommerce from aquilacms provider
feat add validation to input in signup
This commit is contained in:
Gérard Le Cloerec
2021-04-06 15:08:19 +02:00
parent 94861a922a
commit a5de31ae17
68 changed files with 2157 additions and 7640 deletions

View File

@@ -1,20 +1,11 @@
import type { ServerResponse } from 'http'
import type { LoginMutation, LoginMutationVariables } from '../schema'
import type { RecursivePartial } from '../api/utils/types'
import concatHeader from '../api/utils/concat-cookie'
import { AquilacmsConfig, getConfig } from '../api'
export const loginMutation = /* GraphQL */ `
mutation login($email: String!, $password: String!) {
login(email: $email, password: $password) {
result
}
}
`
import { serialize } from 'cookie'
export type LoginResult<T extends { result?: any } = { result?: string }> = T
export type LoginVariables = LoginMutationVariables
export type LoginVariables = { email: string; password: string }
async function login(opts: {
variables: LoginVariables
@@ -30,7 +21,6 @@ async function login<T extends { result?: any }, V = any>(opts: {
}): Promise<LoginResult<T>>
async function login({
query = loginMutation,
variables,
res: response,
config,
@@ -42,31 +32,24 @@ async function login({
}): Promise<LoginResult> {
config = getConfig(config)
const { data, res } = await config.fetch<RecursivePartial<LoginMutation>>(
query,
{ variables }
const { data, code: result } = await config.storeApiFetch('/v2/auth/login', {
method: 'POST',
body: JSON.stringify({
username: variables.email,
password: variables.password,
}),
})
response.setHeader(
'Set-Cookie',
concatHeader(
response.getHeader('Set-Cookie'),
serialize(config.customerCookie, data, { sameSite: 'lax', path: '/' })
)!
)
// Bigcommerce returns a Set-Cookie header with the auth cookie
let cookie = res.headers.get('Set-Cookie')
if (cookie && typeof cookie === 'string') {
// In development, don't set a secure cookie or the browser will ignore it
if (process.env.NODE_ENV !== 'production') {
cookie = cookie.replace('; Secure', '')
// SameSite=none can't be set unless the cookie is Secure
// bc seems to sometimes send back SameSite=None rather than none so make
// this case insensitive
cookie = cookie.replace(/; SameSite=none/gi, '; SameSite=lax')
}
response.setHeader(
'Set-Cookie',
concatHeader(response.getHeader('Set-Cookie'), cookie)!
)
}
return {
result: data.login?.result,
result,
}
}