From e74c6ef86a63b7d8ef50d8214b8ac48ea9f69f7e Mon Sep 17 00:00:00 2001 From: David Beguin Date: Tue, 27 Aug 2019 11:34:59 +0000 Subject: [PATCH] [FIX] website : fix visitor cookie expiration Before this commit, the visitor cookie was expiring by default on browser session close on firefox. On Chrome, the cookie was always valid after browser session closing. On Firefox, the expiration date must be set to make the cookie still valid after closing the browser. The same thing happened with livechat_session cookies set in context of livechat request. The cookie expiration date (100 years to 'never' expire) have been added. Linked to original Task ID : 2028059 Task ID : 2060381 PR #36126 Signed-off-by: Thibault Delavallee (tde) --- addons/website/models/website_visitor.py | 3 ++- addons/website_livechat/models/website_visitor.py | 7 +++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/addons/website/models/website_visitor.py b/addons/website/models/website_visitor.py index 307ba256214..969e5a93685 100644 --- a/addons/website/models/website_visitor.py +++ b/addons/website/models/website_visitor.py @@ -106,7 +106,8 @@ class WebsiteVisitor(models.Model): # If visitor does not exist visitor_sudo = self._create_visitor(website_page.id) sign = visitor_sudo._get_visitor_sign().get(visitor_sudo.id) - response.set_cookie('visitor_id', sign) + expiration_date = datetime.now() + timedelta(days=100*365) # never expire + response.set_cookie('visitor_id', sign, expires=expiration_date.timestamp()) else: # Add page even if already in visitor_page_ids as checks on relations are done in many2many write method vals = { diff --git a/addons/website_livechat/models/website_visitor.py b/addons/website_livechat/models/website_visitor.py index c27c002a99a..e4020760f8f 100644 --- a/addons/website_livechat/models/website_visitor.py +++ b/addons/website_livechat/models/website_visitor.py @@ -1,9 +1,11 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. +from datetime import datetime, timedelta +import json + from odoo import models, api, fields, _ from odoo.exceptions import UserError -import json class WebsiteVisitor(models.Model): @@ -99,4 +101,5 @@ class WebsiteVisitor(models.Model): "uuid": chat_request_channel.uuid, "type": "chat_request" }) - response.set_cookie('im_livechat_session', livechat_session) + expiration_date = datetime.now() + timedelta(days=100*365) # never expire + response.set_cookie('im_livechat_session', livechat_session, expires=expiration_date.timestamp())