Laurent Mignon (ACSONE)
9 years ago
committed by
Laurent Mignon
13 changed files with 99 additions and 235 deletions
-
43auth_from_http_remote_user/README.rst
-
24auth_from_http_remote_user/__init__.py
-
21auth_from_http_remote_user/__openerp__.py
-
21auth_from_http_remote_user/controllers/__init__.py
-
27auth_from_http_remote_user/controllers/main.py
-
27auth_from_http_remote_user/model.py
-
6auth_from_http_remote_user/models/__init__.py
-
10auth_from_http_remote_user/models/auth_from_http_remote_user.py
-
24auth_from_http_remote_user/models/res_users.py
-
65auth_from_http_remote_user/res_users.py
-
21auth_from_http_remote_user/tests/__init__.py
-
23auth_from_http_remote_user/tests/test_res_users.py
-
22auth_from_http_remote_user/utils.py
@ -1,24 +1,6 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################## |
|||
# |
|||
# Author: Laurent Mignon |
|||
# Copyright 2014 'ACSONE SA/NV' |
|||
# |
|||
# This program is free software: you can redistribute it and/or modify |
|||
# it under the terms of the GNU Affero General Public License as |
|||
# published by the Free Software Foundation, either version 3 of the |
|||
# License, or (at your option) any later version. |
|||
# |
|||
# This program is distributed in the hope that it will be useful, |
|||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
# GNU Affero General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU Affero General Public License |
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
############################################################################## |
|||
# Copyright 2014 ACSONE SA/NV (<http://acsone.eu>) |
|||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). |
|||
|
|||
from . import controllers |
|||
from . import res_users |
|||
from . import model |
|||
from . import models |
@ -1,22 +1,5 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################## |
|||
# |
|||
# Author: Laurent Mignon |
|||
# Copyright 2014 'ACSONE SA/NV' |
|||
# |
|||
# This program is free software: you can redistribute it and/or modify |
|||
# it under the terms of the GNU Affero General Public License as |
|||
# published by the Free Software Foundation, either version 3 of the |
|||
# License, or (at your option) any later version. |
|||
# |
|||
# This program is distributed in the hope that it will be useful, |
|||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
# GNU Affero General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU Affero General Public License |
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
############################################################################## |
|||
# Copyright 2014 ACSONE SA/NV (<http://acsone.eu>) |
|||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). |
|||
|
|||
from . import main |
@ -1,27 +0,0 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################## |
|||
# |
|||
# Author: Laurent Mignon |
|||
# Copyright 2014 'ACSONE SA/NV' |
|||
# |
|||
# This program is free software: you can redistribute it and/or modify |
|||
# it under the terms of the GNU Affero General Public License as |
|||
# published by the Free Software Foundation, either version 3 of the |
|||
# License, or (at your option) any later version. |
|||
# |
|||
# This program is distributed in the hope that it will be useful, |
|||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
# GNU Affero General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU Affero General Public License |
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
############################################################################## |
|||
from openerp.osv import orm |
|||
|
|||
|
|||
class AuthFromHttpRemoteUserInstalled(orm.AbstractModel): |
|||
"""An abstract model used to safely know if the module is installed |
|||
""" |
|||
_name = 'auth_from_http_remote_user.installed' |
@ -0,0 +1,6 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Copyright 2014 ACSONE SA/NV (<http://acsone.eu>) |
|||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). |
|||
|
|||
from . import res_users |
|||
from . import auth_from_http_remote_user |
@ -0,0 +1,10 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Copyright 2014 ACSONE SA/NV (<http://acsone.eu>) |
|||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). |
|||
from openerp import models |
|||
|
|||
|
|||
class AuthFromHttpRemoteUserInstalled(models.AbstractModel): |
|||
"""An abstract model used to safely know if the module is installed |
|||
""" |
|||
_name = 'auth_from_http_remote_user.installed' |
@ -0,0 +1,24 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Copyright 2014 ACSONE SA/NV (<http://acsone.eu>) |
|||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). |
|||
|
|||
from openerp import api, fields, models |
|||
import openerp.exceptions |
|||
from openerp.addons.auth_from_http_remote_user import utils |
|||
|
|||
|
|||
class ResUsers(models.Model): |
|||
_inherit = 'res.users' |
|||
|
|||
sso_key = fields.Char( |
|||
'SSO Key', size=utils.KEY_LENGTH, readonly=True, copy=False) |
|||
|
|||
@api.model |
|||
def check_credentials(self, password): |
|||
try: |
|||
return super(ResUsers, self).check_credentials(password) |
|||
except openerp.exceptions.AccessDenied: |
|||
res = self.sudo().search([('id', '=', self.env.uid), |
|||
('sso_key', '=', password)]) |
|||
if not res: |
|||
raise |
@ -1,65 +0,0 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################## |
|||
# |
|||
# Author: Laurent Mignon |
|||
# Copyright 2014 'ACSONE SA/NV' |
|||
# |
|||
# This program is free software: you can redistribute it and/or modify |
|||
# it under the terms of the GNU Affero General Public License as |
|||
# published by the Free Software Foundation, either version 3 of the |
|||
# License, or (at your option) any later version. |
|||
# |
|||
# This program is distributed in the hope that it will be useful, |
|||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
# GNU Affero General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU Affero General Public License |
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
############################################################################## |
|||
|
|||
from openerp.modules.registry import RegistryManager |
|||
from openerp.osv import orm, fields |
|||
from openerp import SUPERUSER_ID |
|||
import openerp.exceptions |
|||
from openerp.addons.auth_from_http_remote_user import utils |
|||
|
|||
|
|||
class res_users(orm.Model): |
|||
_inherit = 'res.users' |
|||
|
|||
_columns = { |
|||
'sso_key': fields.char('SSO Key', size=utils.KEY_LENGTH, |
|||
readonly=True), |
|||
} |
|||
|
|||
def copy(self, cr, uid, rid, defaults=None, context=None): |
|||
defaults = defaults or {} |
|||
defaults['sso_key'] = False |
|||
return super(res_users, self).copy(cr, uid, rid, defaults, context) |
|||
|
|||
def check_credentials(self, cr, uid, password): |
|||
try: |
|||
return super(res_users, self).check_credentials(cr, uid, password) |
|||
except openerp.exceptions.AccessDenied: |
|||
res = self.search(cr, SUPERUSER_ID, [('id', '=', uid), |
|||
('sso_key', '=', password)]) |
|||
if not res: |
|||
raise openerp.exceptions.AccessDenied() |
|||
|
|||
def check(self, db, uid, passwd): |
|||
try: |
|||
return super(res_users, self).check(db, uid, passwd) |
|||
except openerp.exceptions.AccessDenied: |
|||
if not passwd: |
|||
raise |
|||
with RegistryManager.get(db).cursor() as cr: |
|||
cr.execute('''SELECT COUNT(1) |
|||
FROM res_users |
|||
WHERE id=%s |
|||
AND sso_key=%s |
|||
AND active=%s''', (int(uid), passwd, True)) |
|||
if not cr.fetchone()[0]: |
|||
raise |
|||
self._uid_cache.setdefault(db, {})[uid] = passwd |
@ -1,22 +1,5 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################## |
|||
# |
|||
# Author: Laurent Mignon |
|||
# Copyright 2014 'ACSONE SA/NV' |
|||
# |
|||
# This program is free software: you can redistribute it and/or modify |
|||
# it under the terms of the GNU Affero General Public License as |
|||
# published by the Free Software Foundation, either version 3 of the |
|||
# License, or (at your option) any later version. |
|||
# |
|||
# This program is distributed in the hope that it will be useful, |
|||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
# GNU Affero General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU Affero General Public License |
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
############################################################################## |
|||
# Copyright 2014 ACSONE SA/NV (<http://acsone.eu>) |
|||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). |
|||
|
|||
from . import test_res_users |
@ -1,22 +1,4 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################## |
|||
# |
|||
# Author: Laurent Mignon |
|||
# Copyright 2014 'ACSONE SA/NV' |
|||
# |
|||
# This program is free software: you can redistribute it and/or modify |
|||
# it under the terms of the GNU Affero General Public License as |
|||
# published by the Free Software Foundation, either version 3 of the |
|||
# License, or (at your option) any later version. |
|||
# |
|||
# This program is distributed in the hope that it will be useful, |
|||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
# GNU Affero General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU Affero General Public License |
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
############################################################################## |
|||
|
|||
# Copyright 2014 ACSONE SA/NV (<http://acsone.eu>) |
|||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). |
|||
KEY_LENGTH = 16 |
Write
Preview
Loading…
Cancel
Save
Reference in new issue