odoo18/addons_extensions/menu_control_center/controllers/main.py

54 lines
2.2 KiB
Python

from odoo import http, _
from odoo.http import request
from odoo.addons.web.controllers.home import Home
class CustomMasterLogin(Home):
@http.route()
def web_login(self, *args, **kw):
request.env['ir.ui.menu'].sudo().clear_caches()
master_selected = kw.get('master_select')
response = super(CustomMasterLogin, self).web_login(*args, **kw)
if response.is_qweb:
response.qcontext['masters'] = request.env['master.control'].sudo().search([])
request.env['ir.ui.menu'].sudo().clear_caches()
request.env['ir.ui.menu'].sudo()._visible_menu_ids()
if request.session.uid and master_selected:
user = request.env.user
master = request.env['master.control'].sudo().search(
[('code', '=', master_selected)], limit=1
)
if master.exists() and master.access_group_ids:
if not (user.groups_id & master.access_group_ids):
request.session.logout(keep_db=True)
# Create a response with JavaScript alert
html = f"""
<html>
<body>
<script>
alert("{_("You don't have access to login to '%s'. Please contact the administrator.") % master.display_name}");
window.location.href = '/web/login';
</script>
</body>
</html>
"""
return http.Response(html, content_type='text/html')
# request.session.uid = None
# request.params['login_success'] = False
# response.qcontext['error'] = _(
# "You don't have access to login to '%s'. "
# "Please contact the administrator."
# ) % master.display_name
# return response
request.session['active_master'] = master.code
return response