summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThibault Delavallée <tde@odoo.com>2018-10-19 10:46:26 +0000
committerThibault Delavallée <tde@odoo.com>2019-01-14 10:34:21 +0000
commit75638ffb94fa4ae1753f733d8cb6f7f58f0b6a0a (patch)
tree76f8d0e34cf9d201e2a0f284bb17163fa82e5324
parent9ee9724a10fc5e835d8d42da0e9e83fe687848d8 (diff)
[REF] link_tracker: do not let public read technical / private link data
Link tracker models are rather technical and should not be accessed as it is by external people. Let us delegate control to controllers and lessen a bit model accessibility. Currently everyone can use add_click method and generate statistics. Now statistics will be generated only through dedicated routes. It will make statistics more reliable and ensure technical data remain private. Next commit will update code from controllers and main methods in order to be have a more readable click API and avoid link between non dependent modules. This commit is linked to task ID 1904277 and PR #28242.
-rw-r--r--addons/link_tracker/controller/main.py2
-rw-r--r--addons/link_tracker/security/ir.model.access.csv15
-rw-r--r--addons/mass_mailing/controllers/main.py2
3 files changed, 11 insertions, 8 deletions
diff --git a/addons/link_tracker/controller/main.py b/addons/link_tracker/controller/main.py
index c03cbf56813..3b23c005446 100644
--- a/addons/link_tracker/controller/main.py
+++ b/addons/link_tracker/controller/main.py
@@ -11,6 +11,6 @@ class LinkTracker(http.Controller):
@http.route('/r/<string:code>', type='http', auth='none', website=True)
def full_url_redirect(self, code, **post):
country_code = request.session.geoip and request.session.geoip.get('country_code') or False
- request.env['link.tracker.click'].add_click(code, request.httprequest.remote_addr, country_code, stat_id=False)
+ request.env['link.tracker.click'].sudo().add_click(code, request.httprequest.remote_addr, country_code, stat_id=False)
redirect_url = request.env['link.tracker'].get_url_from_code(code)
return werkzeug.utils.redirect(redirect_url or '', 301)
diff --git a/addons/link_tracker/security/ir.model.access.csv b/addons/link_tracker/security/ir.model.access.csv
index ac6c710496c..ed484dc5731 100644
--- a/addons/link_tracker/security/ir.model.access.csv
+++ b/addons/link_tracker/security/ir.model.access.csv
@@ -1,7 +1,10 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
-access_link_tracker_user,link.tracker,model_link_tracker,base.group_user,1,0,0,0
-access_link_tracker_public,link.tracker,model_link_tracker,base.group_public,1,0,0,0
-access_link_tracker_code_user,link.tracker.code,model_link_tracker_code,base.group_user,1,0,0,0
-access_link_tracker_code_public,link.tracker.code,model_link_tracker_code,base.group_public,1,0,0,0
-access_link_tracker_click_user,link.tracker.click,model_link_tracker_click,base.group_user,1,0,0,0
-access_link_tracker_click_public,link.tracker.click,model_link_tracker_click,base.group_public,1,0,0,0
+access_link_tracker_user,access.link.tracker.user,model_link_tracker,base.group_user,1,0,0,0
+access_link_tracker_public,access.link.tracker.public,model_link_tracker,base.group_public,0,0,0,0
+access_link_tracker_system,access.link.tracker.system,model_link_tracker,base.group_system,1,1,1,1
+access_link_tracker_code_user,access.link.tracker.code.user,model_link_tracker_code,base.group_user,1,0,0,0
+access_link_tracker_code_public,access.link.tracker.code.public,model_link_tracker_code,base.group_public,0,0,0,0
+access_link_tracker_code_system,access.link.tracker.code.system,model_link_tracker_code,base.group_system,1,1,1,1
+access_link_tracker_click_user,access.link.tracker.click.user,model_link_tracker_click,base.group_user,1,0,0,0
+access_link_tracker_click_public,access.link.tracker.click.public,model_link_tracker_click,base.group_public,0,0,0,0
+access_link_tracker_click_system,access.link.tracker.click.system,model_link_tracker_click,base.group_system,1,1,1,1
diff --git a/addons/mass_mailing/controllers/main.py b/addons/mass_mailing/controllers/main.py
index 11b05685a06..440def20462 100644
--- a/addons/mass_mailing/controllers/main.py
+++ b/addons/mass_mailing/controllers/main.py
@@ -107,7 +107,7 @@ class MassMailController(http.Controller):
# which mass_mailing doesn't depend on
country_code = request.session.get('geoip', False) and request.session.geoip.get('country_code', False)
- request.env['link.tracker.click'].add_click(code, request.httprequest.remote_addr, country_code, stat_id=stat_id)
+ request.env['link.tracker.click'].sudo().add_click(code, request.httprequest.remote_addr, country_code, stat_id=stat_id)
return werkzeug.utils.redirect(request.env['link.tracker'].get_url_from_code(code), 301)
@http.route('/mailing/blacklist/check', type='json', auth='none')