mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-11-04 13:07:55 +00:00 
			
		
		
		
	* fix: Adds domain option to user cookies set by SDK * Adds domain to init event from chatwootSettings variable * Testing multiple domains on heroku * Updates with sdk from staging * Removes sdk init code * Testing why cookie is not getting set * Cleans up testing code * Refactors code to fix codeclimate issues * Update app/javascript/sdk/cookieHelpers.js Co-authored-by: Shivam Mishra <scm.mymail@gmail.com> * Adds test cases for setCookieWithDomain --------- Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com> Co-authored-by: Shivam Mishra <scm.mymail@gmail.com>
		
			
				
	
	
		
			39 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import md5 from 'md5';
 | 
						|
import Cookies from 'js-cookie';
 | 
						|
 | 
						|
const REQUIRED_USER_KEYS = ['avatar_url', 'email', 'name'];
 | 
						|
const ALLOWED_USER_ATTRIBUTES = [...REQUIRED_USER_KEYS, 'identifier_hash'];
 | 
						|
 | 
						|
export const getUserCookieName = () => {
 | 
						|
  const SET_USER_COOKIE_PREFIX = 'cw_user_';
 | 
						|
  const { websiteToken: websiteIdentifier } = window.$chatwoot;
 | 
						|
  return `${SET_USER_COOKIE_PREFIX}${websiteIdentifier}`;
 | 
						|
};
 | 
						|
 | 
						|
export const getUserString = ({ identifier = '', user }) => {
 | 
						|
  const userStringWithSortedKeys = ALLOWED_USER_ATTRIBUTES.reduce(
 | 
						|
    (acc, key) => `${acc}${key}${user[key] || ''}`,
 | 
						|
    ''
 | 
						|
  );
 | 
						|
  return `${userStringWithSortedKeys}identifier${identifier}`;
 | 
						|
};
 | 
						|
 | 
						|
export const computeHashForUserData = (...args) => md5(getUserString(...args));
 | 
						|
 | 
						|
export const hasUserKeys = user =>
 | 
						|
  REQUIRED_USER_KEYS.reduce((acc, key) => acc || !!user[key], false);
 | 
						|
 | 
						|
export const setCookieWithDomain = (
 | 
						|
  name,
 | 
						|
  value,
 | 
						|
  { expires = 365, baseDomain = undefined } = {}
 | 
						|
) => {
 | 
						|
  const cookieOptions = {
 | 
						|
    expires,
 | 
						|
    sameSite: 'Lax',
 | 
						|
    domain: baseDomain,
 | 
						|
  };
 | 
						|
 | 
						|
  Cookies.set(name, value, cookieOptions);
 | 
						|
};
 |