Files
tocmo0nlord adbe430761
Some checks failed
pre-commit / pre-commit (push) Has been cancelled
tests / Detect unreleased dependencies (push) Has been cancelled
tests / test with OCB (push) Has been cancelled
tests / test with Odoo (push) Has been cancelled
Initial commit: Odoo 18.0-20251222 extra-addons
2026-03-13 20:43:25 +00:00

41 lines
1.3 KiB
Python
Executable File

# Copyright 2018 Creu Blanca
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import SUPERUSER_ID, api, models
from odoo.exceptions import AccessDenied
from odoo.tools import config
class ResUsers(models.Model):
_inherit = "res.users"
@classmethod
def _auth_check_remote(cls, credential, method):
"""Force a method to raise an AccessDenied on falsey return."""
with cls.pool.cursor() as cr:
env = api.Environment(cr, SUPERUSER_ID, {})
remote = env["res.users"].remote
if not config["test_enable"]:
remote.ensure_one()
result = method()
if not result:
# Force exception to record auth failure
raise AccessDenied()
return result
# Override all auth-related core methods
@classmethod
def _login(cls, db, credential, user_agent_env):
return cls._auth_check_remote(
credential,
lambda: super(ResUsers, cls)._login(db, credential, user_agent_env),
)
@classmethod
def authenticate(cls, db, credential, user_agent_env):
return cls._auth_check_remote(
credential,
lambda: super(ResUsers, cls).authenticate(db, credential, user_agent_env),
)