From 7c486b4d0c84c04ac1a42b67484ff3383a69dc28 Mon Sep 17 00:00:00 2001 From: "Lucas Perais (lpe)" Date: Wed, 18 Oct 2017 13:58:01 +0200 Subject: [FIX] mail: visitor to portal_user should keep livechat channel adapting #20279 to v10 Before this commit, when starting a livechat session as a public user and continuing as a portal user, the livechat crashed (the poral user couldn't see the channel created before as Admin) After this commit, the conversation is kept and security insured by the uuid in the cookie OPW 775568 closes #20281 --- addons/mail/controllers/bus.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'addons/mail/controllers') diff --git a/addons/mail/controllers/bus.py b/addons/mail/controllers/bus.py index 517ded468cd..62a5225cfe5 100644 --- a/addons/mail/controllers/bus.py +++ b/addons/mail/controllers/bus.py @@ -36,18 +36,16 @@ class MailChatController(BusController): # -------------------------- @route('/mail/chat_post', type="json", auth="none") def mail_chat_post(self, uuid, message_content, **kwargs): - request_uid = self._default_request_uid() # find the author from the user session, which can be None author_id = False # message_post accept 'False' author_id, but not 'None' if request.session.uid: author_id = request.env['res.users'].sudo().browse(request.session.uid).partner_id.id # post a message without adding followers to the channel. email_from=False avoid to get author from email data - mail_channel = request.env["mail.channel"].sudo(request_uid).search([('uuid', '=', uuid)], limit=1) - message = mail_channel.sudo(request_uid).with_context(mail_create_nosubscribe=True).message_post(author_id=author_id, email_from=False, body=message_content, message_type='comment', subtype='mail.mt_comment', content_subtype='plaintext', **kwargs) + mail_channel = request.env["mail.channel"].sudo().search([('uuid', '=', uuid)], limit=1) + message = mail_channel.sudo().with_context(mail_create_nosubscribe=True).message_post(author_id=author_id, email_from=False, body=message_content, message_type='comment', subtype='mail.mt_comment', content_subtype='plaintext') return message and message.id or False @route(['/mail/chat_history'], type="json", auth="none") def mail_chat_history(self, uuid, last_id=False, limit=20): - request_uid = self._default_request_uid() - channel = request.env["mail.channel"].sudo(request_uid).search([('uuid', '=', uuid)], limit=1) - return channel.sudo(request_uid).channel_fetch_message(last_id, limit) + channel = request.env["mail.channel"].sudo().search([('uuid', '=', uuid)], limit=1) + return channel.sudo().channel_fetch_message(last_id, limit) -- cgit v1.2.3