mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-10-31 19:17:48 +00:00 
			
		
		
		
	 1017903ee1
			
		
	
	1017903ee1
	
	
	
		
			
			* 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);
 | |
| };
 |