Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@skava/graphql / src / deps / cookieHacker.ts
Size: Mime:
import { cookies, toUnsecureSecureCookie } from 'uxui-modules/persistance/cookies'
import { cookieConfig } from '../bootstrapper/api/config'

export const hackForBadCookiePartnerId = cookie => {
  /**
   * @todo configure from env
   */
  const { guestNamespace, registeredNamespace, old, env } = cookieConfig

  // could also just replace identifier
  if (cookie.includes(guestNamespace)) {
    return cookie.replace(old.guest, env.guest)
  } else if (cookie.includes(registeredNamespace)) {
    return cookie.replace(old.registered, env.registered)
  }

  return cookie
}

/**
 * @example const { authCookies, onCookie } = createCookieHacker()
 */
export function createCookieHacker() {
  // const namespace = req.nonce
  // const namespace = res.locals.nonce
  // const namespace = res.locals.nonce
  // const cookieKey = namespace + 'authCookies'
  // const authCookies = oneStorage.getItem(cookieKey) || []
  const authCookies = []

  const onCookie = cookie => {
    const { key, value } = cookies._getKeyValuePairFromCookieString(cookie)
    const hacked = hackForBadCookiePartnerId(cookie)

    // console.log('COOKIES___', {
    //   hacked,
    //   [key]: value,
    // });

    authCookies.push(toUnsecureSecureCookie(hacked))
  }
  return { authCookies, onCookie }
}

export const fromObjCookiesToString = (obj = {}) => {
  let stringy = ''
  Object.keys(obj).forEach(key => {
    stringy += key + '=' + obj[key] + '; '
  })
  return stringy
}