Initial commit

This commit is contained in:
gsinghpal
2026-02-22 01:22:18 -05:00
commit 5200d5baf0
2394 changed files with 386834 additions and 0 deletions

View File

@@ -0,0 +1,51 @@
# -*- coding: utf-8 -*-
# Copyright 2026 Nexa Systems Inc.
# License OPL-1 (Odoo Proprietary License v1.0)
import json
import logging
from odoo import http
from odoo.http import request
_logger = logging.getLogger(__name__)
class RcOAuthController(http.Controller):
@http.route('/ringcentral/oauth', type='http', auth='user', website=False)
def oauth_callback(self, code=None, state=None, error=None, **kw):
"""Handle the OAuth redirect from RingCentral after user authorizes."""
if error:
_logger.error("RingCentral OAuth error: %s", error)
return request.redirect('/odoo?rc_error=oauth_denied')
if not code:
return request.redirect('/odoo?rc_error=no_code')
config_id = None
if state:
try:
state_data = json.loads(state)
config_id = state_data.get('config_id')
except (json.JSONDecodeError, TypeError):
pass
if not config_id:
configs = request.env['rc.config'].search([], limit=1)
if not configs:
return request.redirect('/odoo?rc_error=no_config')
config_id = configs.id
config = request.env['rc.config'].browse(config_id)
if not config.exists():
return request.redirect('/odoo?rc_error=invalid_config')
base_url = request.env['ir.config_parameter'].sudo().get_param('web.base.url', '')
redirect_uri = f'{base_url}/ringcentral/oauth'
success = config.exchange_auth_code(code, redirect_uri)
if success:
return request.redirect(f'/odoo/rc-config/{config_id}')
else:
return request.redirect(f'/odoo/rc-config/{config_id}?rc_error=token_exchange_failed')