Permalink
Browse files

[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
  • Loading branch information...
kebeclibre committed Oct 18, 2017
1 parent c7f5ad8 commit 5de2234fcdb2e9eca1b7b93fea966a18380d500c
Showing with 4 additions and 6 deletions.
  1. +4 −6 addons/mail/controllers/bus.py
@@ -36,18 +36,16 @@ def _poll(self, dbname, channels, last, options):
# --------------------------
@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)

0 comments on commit 5de2234

Please sign in to comment.