first push message
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import logging
|
||||
from odoo import http
|
||||
from odoo.http import request
|
||||
from odoo.addons.web.controllers.home import Home as WebHome
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
class CustomWebLogin(WebHome):
|
||||
@http.route('/web/login', type='http', auth="none", sitemap=False)
|
||||
def web_login(self, redirect=None, **kw):
|
||||
# 1️⃣ Let parent handle GET requests & render login form
|
||||
response = super().web_login(redirect=redirect, **kw)
|
||||
|
||||
# 2️⃣ Handle POST submission
|
||||
if request.httprequest.method == 'POST':
|
||||
login = request.params.get('login', '').strip()
|
||||
password = request.params.get('password', '').strip()
|
||||
pin_code_input = request.params.get('pin_code', '').strip() # Match your XML field name
|
||||
|
||||
if login and password:
|
||||
# ⚠️ CRITICAL: Use 'odoo_env' NOT 'env' to avoid shadowing request.env
|
||||
odoo_env = request.env
|
||||
user = odoo_env['res.users'].sudo().search([('login', '=', login)], limit=1)
|
||||
|
||||
if not user:
|
||||
response.qcontext['error'] = "ឈ្មោះអ្នកប្រើប្រាស់ ឬពាក្យសម្ងាត់មិនត្រឹមត្រូវ។"
|
||||
return response
|
||||
|
||||
# 3️⃣ Handle Inactive Users (PIN Verification)
|
||||
if not user.active:
|
||||
if not pin_code_input:
|
||||
response.qcontext['error'] = "សូមបញ្ចូលលេខកូដ PIN ដើម្បីដំណើរការគណនី។"
|
||||
return response
|
||||
if user.pin_code and pin_code_input == user.pin_code:
|
||||
user.sudo().write({
|
||||
'active': True,
|
||||
'pin_code': False, # Clear used PIN
|
||||
'first_login': True,
|
||||
})
|
||||
else:
|
||||
response.qcontext['error'] = "លេខកូដ PIN មិនត្រឹមត្រូវ។"
|
||||
return response
|
||||
|
||||
# 4️⃣ Authenticate (EXACTLY 3 arguments for Odoo 19)
|
||||
try:
|
||||
request.session.authenticate(
|
||||
request.session.db, # Database name
|
||||
login, # Login
|
||||
password # Password
|
||||
)
|
||||
# Success: Redirect to dashboard
|
||||
return request.redirect(redirect or '/web')
|
||||
except Exception as e:
|
||||
_logger.warning(f"Login failed for {login}: {e}")
|
||||
response.qcontext['error'] = "ឈ្មោះអ្នកប្រើប្រាស់ ឬពាក្យសម្ងាត់មិនត្រឹមត្រូវ។"
|
||||
return response
|
||||
|
||||
return response
|
||||
Reference in New Issue
Block a user