54 lines
2.2 KiB
Python
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
|
|
|