From ae15d52057c46b651007b17e0c56c30d9dc1500b Mon Sep 17 00:00:00 2001
From: ljmwkx <1340053001@qq.com>
Date: Sat, 18 Jan 2025 17:09:20 +0800
Subject: [PATCH] =?UTF-8?q?=E4=B8=BB=E9=A2=98=20=E5=8D=87=E7=BA=A7?=
=?UTF-8?q?=E6=94=B9=E9=80=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../controllers/__init__.py | 1 +
.../controllers/login.py | 72 ++++++++
.../views/login_layout.xml | 167 +++++++++++++-----
3 files changed, 198 insertions(+), 42 deletions(-)
create mode 100644 sh_backmate_theme_adv_enterprise/controllers/login.py
diff --git a/sh_backmate_theme_adv_enterprise/controllers/__init__.py b/sh_backmate_theme_adv_enterprise/controllers/__init__.py
index eed18c782..932bd3816 100644
--- a/sh_backmate_theme_adv_enterprise/controllers/__init__.py
+++ b/sh_backmate_theme_adv_enterprise/controllers/__init__.py
@@ -2,3 +2,4 @@
from . import main
from . import sh_firebase_notification
from . import home
+from . import login
\ No newline at end of file
diff --git a/sh_backmate_theme_adv_enterprise/controllers/login.py b/sh_backmate_theme_adv_enterprise/controllers/login.py
new file mode 100644
index 000000000..683b3e6a3
--- /dev/null
+++ b/sh_backmate_theme_adv_enterprise/controllers/login.py
@@ -0,0 +1,72 @@
+# -*- encoding: utf-8 -*-
+import hashlib
+import odoo
+from odoo import http
+from odoo.tools import pycompat
+from odoo.tools.translate import _
+from odoo.http import request
+from odoo.addons.web.controllers.home import Home as WebHome
+from odoo.addons.web.controllers.utils import ensure_db, _get_login_redirect_url
+
+# Shared parameters for all login/signup flows
+SIGN_UP_REQUEST_PARAMS = {'db', 'login', 'debug', 'token', 'message', 'error',
+ 'scope', 'mode', 'redirect', 'redirect_hostname',
+ 'email', 'name', 'partner_id', 'password',
+ 'confirm_password', 'city', 'country_id', 'lang'}
+
+
+class Home(WebHome):
+ @http.route(route='/web/login', type='http', auth="none")
+ def web_login(self, redirect=None, **kw):
+ """Override web_login function to add features of this module."""
+ ensure_db()
+ request.params['login_success'] = False
+ if request.httprequest.method == 'GET' and redirect and request.session.uid:
+ return request.redirect(redirect)
+ if not request.uid:
+ request.update_env(user=odoo.SUPERUSER_ID)
+ values = {val: item for val, item in request.params.items() if
+ val in SIGN_UP_REQUEST_PARAMS}
+ try:
+ values['databases'] = http.db_list()
+ except odoo.exceptions.AccessDenied:
+ values['databases'] = None
+
+ if request.httprequest.method == 'POST':
+ old_uid = request.update_env(user=request.session.uid)
+
+ try:
+ uid = request.session.authenticate(request.session.db,
+ request.params['login'],
+ request.params['password'])
+ request.params['login_success'] = True
+ return request.redirect(
+ self._login_redirect(uid, redirect=redirect))
+ except odoo.exceptions.AccessDenied as e:
+ request.update_env = old_uid
+ if e.args == odoo.exceptions.AccessDenied().args:
+ values['error'] = _("错误的用户名和密码!")
+ else:
+ values['error'] = e.args[0]
+ else:
+ if 'error' in request.params and request.params.get(
+ 'error') == 'access':
+ values['error'] = _("只有员工才能访问此数据库。请联系管理员。")
+ if 'login' not in values and request.session.get('auth_login'):
+ values['login'] = request.session.get('auth_login')
+ if not odoo.tools.config['list_db']:
+ values['disable_database_manager'] = True
+
+ response = request.render('sh_backmate_theme_adv_enterprise.sh_backmate_theme_web_login_main_template', values)
+
+ response.headers['X-Frame-Options'] = 'DENY'
+ return response
+
+
+
+class Website(Home):
+
+ # override
+ @http.route(website=True, auth="public", sitemap=False)
+ def web_login(self, *args, **kw):
+ return super().web_login(*args, **kw)
\ No newline at end of file
diff --git a/sh_backmate_theme_adv_enterprise/views/login_layout.xml b/sh_backmate_theme_adv_enterprise/views/login_layout.xml
index 76d065c94..02e7dec47 100644
--- a/sh_backmate_theme_adv_enterprise/views/login_layout.xml
+++ b/sh_backmate_theme_adv_enterprise/views/login_layout.xml
@@ -1,7 +1,90 @@
+ 您已登录
+