Skip to content

Commit cf41d5e

Browse files
committed
fix: 🐛 Adequação para novas regras de cookies
A configuração do cookie se torna mais versátil, tendo a possibilidade de enviar quaisquer chaves no options como samesite (por padrão será none), secure, max-age e path.
1 parent 3908071 commit cf41d5e

File tree

2 files changed

+40
-23
lines changed

2 files changed

+40
-23
lines changed

build/gtm/main.js

+17-8
Original file line numberDiff line numberDiff line change
@@ -71,20 +71,29 @@
7171
return window.unescape(end === -1 ? cookie : cookie.substring(0, end));
7272
}
7373

74-
function setCookie(name, value, opts) {
75-
var exdate, cookie;
76-
opts = opts || {};
74+
function setCookie(name, value, opts = {}) {
75+
76+
let cookie = name + '=' + window.escape(value);
7777

78-
cookie = name + '=' + window.escape(value);
7978
if (opts.exdays) {
80-
exdate = new Date();
79+
let exdate = new Date();
8180
exdate.setDate(exdate.getDate() + opts.exdays);
8281
cookie += '; expires=' + exdate.toUTCString();
82+
delete opts.exdays;
83+
}
84+
85+
if (!opts.samesite) {
86+
cookie += '; samesite=none; secure';
8387
}
84-
if (opts.domain) {
85-
cookie += '; domain=' + opts.domain;
88+
89+
for (let optKey in opts) {
90+
cookie += "; " + optKey;
91+
let optValue = opts[optKey];
92+
if (optValue !== true) {
93+
cookie += "=" + optValue;
94+
}
8695
}
87-
cookie += '; path=' + (opts.path || '/');
96+
8897
return (document.cookie = cookie);
8998
}
9099

core/modules/cookie.js

+23-15
Original file line numberDiff line numberDiff line change
@@ -23,20 +23,29 @@ function getCookie(key) {
2323
* @param {*} value Valor do cookie
2424
* @param {*} opts Opções do cookie, como vencimento e domínio
2525
*/
26-
function setCookie(name, value, opts) {
27-
var exdate, cookie;
28-
opts = opts || {};
26+
function setCookie(name, value, opts = {}) {
27+
28+
let cookie = name + '=' + window.escape(value);
2929

30-
cookie = name + '=' + window.escape(value);
3130
if (opts.exdays) {
32-
exdate = new Date();
31+
let exdate = new Date();
3332
exdate.setDate(exdate.getDate() + opts.exdays);
3433
cookie += '; expires=' + exdate.toUTCString();
34+
delete opts.exdays;
35+
}
36+
37+
if (!opts.samesite) {
38+
cookie += '; samesite=none; secure';
3539
}
36-
if (opts.domain) {
37-
cookie += '; domain=' + opts.domain;
40+
41+
for (let optKey in opts) {
42+
cookie += "; " + optKey;
43+
let optValue = opts[optKey];
44+
if (optValue !== true) {
45+
cookie += "=" + optValue;
46+
}
3847
}
39-
cookie += '; path=' + (opts.path || '/');
48+
4049
return (document.cookie = cookie);
4150
}
4251

@@ -51,14 +60,13 @@ function setCookie(name, value, opts) {
5160
* @param {*} opts Opções do cookie, como vencimento e domínio
5261
*/
5362
function cookie(name, value, opts) {
54-
if (typeof value === 'undefined')
55-
return getCookie(name);
56-
57-
return setCookie(name, value, opts);
63+
if (typeof value === 'undefined')
64+
return getCookie(name);
65+
return setCookie(name, value, opts);
5866
}
5967

6068
module.exports = {
61-
getCookie: getCookie,
62-
setCookie: setCookie,
63-
cookie: cookie
69+
getCookie: getCookie,
70+
setCookie: setCookie,
71+
cookie: cookie
6472
};

0 commit comments

Comments
 (0)