summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaphael Collet <rco@openerp.com>2016-11-21 14:19:53 +0100
committerRaphael Collet <rco@openerp.com>2017-01-03 16:52:49 +0100
commit7543afb0704d624f7abe6a2450a9d7e4a75e158b (patch)
tree6442395f21c474f905058be8d2fd804cdf00aa1e
parentb39242629503571ac78d8f0fbc0fb7be405ba4ae (diff)
[IMP] base, *: tighten `ir.config_parameter` access rights
Add `base.group_system` on existing parameters: - `auth_signup.allow_uninvited`, - `auth_signup.reset_password`, - `auth_signup.template_user_id`, - `google_redirect_uri`, - `mail.bounce.alias`, - `mail.catchall.alias`, - `mail.catchall.domain`.
-rw-r--r--addons/auth_signup/controllers/main.py6
-rw-r--r--addons/auth_signup/data/auth_signup_data.xml1
-rw-r--r--addons/auth_signup/models/res_config.py6
-rw-r--r--addons/auth_signup/models/res_users.py1
-rw-r--r--addons/crm/models/res_config.py2
-rw-r--r--addons/google_account/data/google_account_data.xml1
-rw-r--r--addons/hr_expense/models/res_config.py2
-rw-r--r--addons/im_livechat/models/im_livechat_channel.py4
-rw-r--r--addons/mail/data/mail_data.xml2
-rw-r--r--addons/mail/models/mail_alias.py4
-rw-r--r--addons/mail/models/mail_mail.py5
-rw-r--r--addons/mail/models/mail_thread.py6
-rw-r--r--addons/mail/models/res_config.py2
-rw-r--r--addons/mail/models/update.py7
-rw-r--r--addons/mass_mailing/models/mail_thread.py2
-rw-r--r--addons/payment_paypal/models/payment.py2
-rw-r--r--addons/payment_sips/models/payment.py2
-rw-r--r--addons/rating/controllers/main.py2
-rw-r--r--addons/report/models/ir_http.py2
-rw-r--r--addons/website_forum/data/forum_data.xml2
-rw-r--r--addons/website_mail_channel/models/mail_channel.py2
-rw-r--r--odoo/addons/base/security/base_security.xml18
22 files changed, 44 insertions, 37 deletions
diff --git a/addons/auth_signup/controllers/main.py b/addons/auth_signup/controllers/main.py
index 2718e47dd2a..8a4315a0ad8 100644
--- a/addons/auth_signup/controllers/main.py
+++ b/addons/auth_signup/controllers/main.py
@@ -70,10 +70,10 @@ class AuthSignupHome(Home):
def get_auth_signup_config(self):
"""retrieve the module config (which features are enabled) for the login page"""
- IrConfigParam = request.env['ir.config_parameter']
+ IrConfigParam = request.env['ir.config_parameter'].sudo()
return {
- 'signup_enabled': IrConfigParam.sudo().get_param('auth_signup.allow_uninvited') == 'True',
- 'reset_password_enabled': IrConfigParam.sudo().get_param('auth_signup.reset_password') == 'True',
+ 'signup_enabled': IrConfigParam.get_param('auth_signup.allow_uninvited') == 'True',
+ 'reset_password_enabled': IrConfigParam.get_param('auth_signup.reset_password') == 'True',
}
def get_auth_signup_qcontext(self):
diff --git a/addons/auth_signup/data/auth_signup_data.xml b/addons/auth_signup/data/auth_signup_data.xml
index 2cc3d07195c..ce35baac34b 100644
--- a/addons/auth_signup/data/auth_signup_data.xml
+++ b/addons/auth_signup/data/auth_signup_data.xml
@@ -14,6 +14,7 @@
<record id="default_template_user_config" model="ir.config_parameter">
<field name="key">auth_signup.template_user_id</field>
<field name="value" ref="default_template_user"/>
+ <field name="group_ids" eval="[(4, ref('base.group_system'))]"/>
</record>
<!-- Email template for reset password -->
diff --git a/addons/auth_signup/models/res_config.py b/addons/auth_signup/models/res_config.py
index bfb89e76d3d..9256ef3f093 100644
--- a/addons/auth_signup/models/res_config.py
+++ b/addons/auth_signup/models/res_config.py
@@ -26,6 +26,6 @@ class BaseConfigSettings(models.TransientModel):
self.ensure_one()
IrConfigParam = self.env['ir.config_parameter']
# we store the repr of the values, since the value of the parameter is a required string
- IrConfigParam.set_param('auth_signup.reset_password', repr(self.auth_signup_reset_password))
- IrConfigParam.set_param('auth_signup.allow_uninvited', repr(self.auth_signup_uninvited))
- IrConfigParam.set_param('auth_signup.template_user_id', repr(self.auth_signup_template_user_id.id))
+ IrConfigParam.set_param('auth_signup.reset_password', repr(self.auth_signup_reset_password), groups=['base.group_system'])
+ IrConfigParam.set_param('auth_signup.allow_uninvited', repr(self.auth_signup_uninvited), groups=['base.group_system'])
+ IrConfigParam.set_param('auth_signup.template_user_id', repr(self.auth_signup_template_user_id.id), groups=['base.group_system'])
diff --git a/addons/auth_signup/models/res_users.py b/addons/auth_signup/models/res_users.py
index c82a35792a2..889745df1e1 100644
--- a/addons/auth_signup/models/res_users.py
+++ b/addons/auth_signup/models/res_users.py
@@ -75,6 +75,7 @@ class ResUsers(models.Model):
@api.model
def _signup_create_user(self, values):
""" create a new user from the template user """
+ # we expect self.uid == SUPERUSER_ID
IrConfigParam = self.env['ir.config_parameter']
template_user_id = literal_eval(IrConfigParam.get_param('auth_signup.template_user_id', 'False'))
template_user = self.browse(template_user_id)
diff --git a/addons/crm/models/res_config.py b/addons/crm/models/res_config.py
index 295dbaca25a..e30b7b16fd1 100644
--- a/addons/crm/models/res_config.py
+++ b/addons/crm/models/res_config.py
@@ -10,7 +10,7 @@ class CRMSettings(models.TransientModel):
generate_sales_team_alias = fields.Boolean("Automatically generate an email alias at the sales team creation",
help="Odoo will generate an email alias based on the sales team name")
alias_prefix = fields.Char('Default Alias Name for Leads')
- alias_domain = fields.Char('Alias Domain', default=lambda self: self.env["ir.config_parameter"].get_param("mail.catchall.domain"))
+ alias_domain = fields.Char('Alias Domain', default=lambda self: self.env["ir.config_parameter"].sudo().get_param("mail.catchall.domain"))
default_generate_lead_from_alias = fields.Boolean(default_model='sale.config.settings')
group_use_lead = fields.Boolean(string="Leads", implied_group='crm.group_use_lead')
module_crm_voip = fields.Boolean("Asterisk (VoIP)")
diff --git a/addons/google_account/data/google_account_data.xml b/addons/google_account/data/google_account_data.xml
index 1c3a5f4089e..eda1b51a8f3 100644
--- a/addons/google_account/data/google_account_data.xml
+++ b/addons/google_account/data/google_account_data.xml
@@ -4,6 +4,7 @@
<record id="config_google_redirect_uri" model="ir.config_parameter">
<field name="key">google_redirect_uri</field>
<field name="value">urn:ietf:wg:oauth:2.0:oob</field>
+ <field name="group_ids" eval="[(4, ref('base.group_system'))]"/>
</record>
</data>
</odoo>
diff --git a/addons/hr_expense/models/res_config.py b/addons/hr_expense/models/res_config.py
index c1eda4f459b..27320517cf4 100644
--- a/addons/hr_expense/models/res_config.py
+++ b/addons/hr_expense/models/res_config.py
@@ -7,7 +7,7 @@ class HrExpenseConfigSettings(models.TransientModel):
_inherit = 'res.config.settings'
alias_prefix = fields.Char('Default Alias Name for Expenses')
- alias_domain = fields.Char('Alias Domain', default=lambda self: self.env["ir.config_parameter"].get_param("mail.catchall.domain"))
+ alias_domain = fields.Char('Alias Domain', default=lambda self: self.env["ir.config_parameter"].sudo().get_param("mail.catchall.domain"))
@api.model
def get_default_alias_prefix(self, fields):
diff --git a/addons/im_livechat/models/im_livechat_channel.py b/addons/im_livechat/models/im_livechat_channel.py
index 2041697bd03..1f152e01054 100644
--- a/addons/im_livechat/models/im_livechat_channel.py
+++ b/addons/im_livechat/models/im_livechat_channel.py
@@ -70,7 +70,7 @@ class ImLivechatChannel(models.Model):
def _compute_script_external(self):
view = self.env['ir.model.data'].get_object('im_livechat', 'external_loader')
values = {
- "url": self.env['ir.config_parameter'].sudo().get_param('web.base.url'),
+ "url": self.env['ir.config_parameter'].get_param('web.base.url'),
"dbname": self._cr.dbname,
}
for record in self:
@@ -79,7 +79,7 @@ class ImLivechatChannel(models.Model):
@api.multi
def _compute_web_page_link(self):
- base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
+ base_url = self.env['ir.config_parameter'].get_param('web.base.url')
for record in self:
record.web_page = "%s/im_livechat/support/%i" % (base_url, record.id)
diff --git a/addons/mail/data/mail_data.xml b/addons/mail/data/mail_data.xml
index aa4cae02f30..99df3e80737 100644
--- a/addons/mail/data/mail_data.xml
+++ b/addons/mail/data/mail_data.xml
@@ -37,12 +37,14 @@
<record id="icp_mail_catchall_alias" model="ir.config_parameter">
<field name="key">mail.catchall.alias</field>
<field name="value">catchall</field>
+ <field name="group_ids" eval="[(4, ref('base.group_system'))]"/>
</record>
<!-- Bounce Email Alias -->
<record id="icp_mail_bounce_alias" model="ir.config_parameter">
<field name="key">mail.bounce.alias</field>
<field name="value">bounce</field>
+ <field name="group_ids" eval="[(4, ref('base.group_system'))]"/>
</record>
<!-- Discussion subtype for messaging / Chatter -->
diff --git a/addons/mail/models/mail_alias.py b/addons/mail/models/mail_alias.py
index 6acf894c996..eee18d10c5b 100644
--- a/addons/mail/models/mail_alias.py
+++ b/addons/mail/models/mail_alias.py
@@ -63,7 +63,7 @@ class Alias(models.Model):
help="Optional ID of a thread (record) to which all incoming messages will be attached, even "
"if they did not reply to it. If set, this will disable the creation of new records completely.")
alias_domain = fields.Char('Alias domain', compute='_get_alias_domain',
- default=lambda self: self.env["ir.config_parameter"].get_param("mail.catchall.domain"))
+ default=lambda self: self.env["ir.config_parameter"].sudo().get_param("mail.catchall.domain"))
alias_parent_model_id = fields.Many2one(
'ir.model', 'Parent Model',
help="Parent model holding the alias. The model holding the alias reference "
@@ -86,7 +86,7 @@ class Alias(models.Model):
@api.multi
def _get_alias_domain(self):
- alias_domain = self.env["ir.config_parameter"].get_param("mail.catchall.domain")
+ alias_domain = self.env["ir.config_parameter"].sudo().get_param("mail.catchall.domain")
for record in self:
record.alias_domain = alias_domain
diff --git a/addons/mail/models/mail_mail.py b/addons/mail/models/mail_mail.py
index 26fe8e052e4..527afc1c0cd 100644
--- a/addons/mail/models/mail_mail.py
+++ b/addons/mail/models/mail_mail.py
@@ -233,8 +233,9 @@ class MailMail(models.Model):
# headers
headers = {}
- bounce_alias = self.env['ir.config_parameter'].get_param("mail.bounce.alias")
- catchall_domain = self.env['ir.config_parameter'].get_param("mail.catchall.domain")
+ ICP = self.env['ir.config_parameter'].sudo()
+ bounce_alias = ICP.get_param("mail.bounce.alias")
+ catchall_domain = ICP.get_param("mail.catchall.domain")
if bounce_alias and catchall_domain:
if mail.model and mail.res_id:
headers['Return-Path'] = '%s+%d-%s-%d@%s' % (bounce_alias, mail.id, mail.model, mail.res_id, catchall_domain)
diff --git a/addons/mail/models/mail_thread.py b/addons/mail/models/mail_thread.py
index ef27ab2d7c2..6bc7cbffbe0 100644
--- a/addons/mail/models/mail_thread.py
+++ b/addons/mail/models/mail_thread.py
@@ -745,7 +745,7 @@ class MailThread(models.AbstractModel):
alias of the document, if it exists. Override this method to implement
a custom behavior about reply-to for generated emails. """
model_name = self.env.context.get('thread_model') or self._name
- alias_domain = self.env['ir.config_parameter'].get_param("mail.catchall.domain")
+ alias_domain = self.env['ir.config_parameter'].sudo().get_param("mail.catchall.domain")
res = dict.fromkeys(res_ids, False)
# alias domain: check for aliases and catchall
@@ -768,7 +768,7 @@ class MailThread(models.AbstractModel):
# left ids: use catchall
left_ids = set(res_ids).difference(set(aliases.keys()))
if left_ids:
- catchall_alias = self.env['ir.config_parameter'].get_param("mail.catchall.alias")
+ catchall_alias = self.env['ir.config_parameter'].sudo().get_param("mail.catchall.alias")
if catchall_alias:
aliases.update(dict((res_id, '%s@%s' % (catchall_alias, alias_domain)) for res_id in left_ids))
# compute name of reply-to
@@ -1012,7 +1012,7 @@ class MailThread(models.AbstractModel):
raise TypeError('message must be an email.message.Message at this point')
MailMessage = self.env['mail.message']
Alias, dest_aliases = self.env['mail.alias'], self.env['mail.alias']
- bounce_alias = self.env['ir.config_parameter'].get_param("mail.bounce.alias")
+ bounce_alias = self.env['ir.config_parameter'].sudo().get_param("mail.bounce.alias")
fallback_model = model
# get email.message.Message variables for future processing
diff --git a/addons/mail/models/res_config.py b/addons/mail/models/res_config.py
index d34a6663a4f..f96ab82201c 100644
--- a/addons/mail/models/res_config.py
+++ b/addons/mail/models/res_config.py
@@ -37,4 +37,4 @@ class BaseConfiguration(models.TransientModel):
@api.multi
def set_alias_domain(self):
for record in self:
- self.env['ir.config_parameter'].set_param("mail.catchall.domain", record.alias_domain or '')
+ self.env['ir.config_parameter'].set_param("mail.catchall.domain", record.alias_domain or '', groups=['base.group_system'])
diff --git a/addons/mail/models/update.py b/addons/mail/models/update.py
index 7e2abfcbfd8..1bd09837552 100644
--- a/addons/mail/models/update.py
+++ b/addons/mail/models/update.py
@@ -113,9 +113,10 @@ class PublisherWarrantyContract(AbstractModel):
pass
if result.get('enterprise_info'):
# Update expiration date
- self.env['ir.config_parameter'].sudo().set_param('database.expiration_date', result['enterprise_info'].get('expiration_date'), ['base.group_user'])
- self.env['ir.config_parameter'].sudo().set_param('database.expiration_reason', result['enterprise_info'].get('expiration_reason', 'trial'), ['base.group_system'])
- self.env['ir.config_parameter'].sudo().set_param('database.enterprise_code', result['enterprise_info'].get('enterprise_code'), ['base.group_user'])
+ IrParamSudo = self.env['ir.config_parameter'].sudo()
+ IrParamSudo.set_param('database.expiration_date', result['enterprise_info'].get('expiration_date'), ['base.group_user'])
+ IrParamSudo.set_param('database.expiration_reason', result['enterprise_info'].get('expiration_reason', 'trial'), ['base.group_system'])
+ IrParamSudo.set_param('database.enterprise_code', result['enterprise_info'].get('enterprise_code'), ['base.group_user'])
except Exception:
if cron_mode:
diff --git a/addons/mass_mailing/models/mail_thread.py b/addons/mass_mailing/models/mail_thread.py
index 066dd285c79..8e515a664f8 100644
--- a/addons/mass_mailing/models/mail_thread.py
+++ b/addons/mass_mailing/models/mail_thread.py
@@ -17,7 +17,7 @@ class MailThread(models.AbstractModel):
@api.model
def message_route(self, message, message_dict, model=None, thread_id=None, custom_values=None):
""" Override to udpate mass mailing statistics based on bounce emails """
- bounce_alias = self.env['ir.config_parameter'].get_param("mail.bounce.alias")
+ bounce_alias = self.env['ir.config_parameter'].sudo().get_param("mail.bounce.alias")
email_to = decode_message_header(message, 'To')
email_to_localpart = (tools.email_split(email_to) or [''])[0].split('@', 1)[0].lower()
diff --git a/addons/payment_paypal/models/payment.py b/addons/payment_paypal/models/payment.py
index 6aaff94a631..10d900ffb87 100644
--- a/addons/payment_paypal/models/payment.py
+++ b/addons/payment_paypal/models/payment.py
@@ -87,7 +87,7 @@ class AcquirerPaypal(models.Model):
@api.multi
def paypal_form_generate_values(self, values):
- base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
+ base_url = self.env['ir.config_parameter'].get_param('web.base.url')
paypal_tx_values = dict(values)
paypal_tx_values.update({
diff --git a/addons/payment_sips/models/payment.py b/addons/payment_sips/models/payment.py
index e9cd4d40e6b..f3520db9665 100644
--- a/addons/payment_sips/models/payment.py
+++ b/addons/payment_sips/models/payment.py
@@ -69,7 +69,7 @@ class AcquirerSips(models.Model):
@api.multi
def sips_form_generate_values(self, values):
self.ensure_one()
- base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
+ base_url = self.env['ir.config_parameter'].get_param('web.base.url')
currency = self.env['res.currency'].sudo().browse(values['currency_id'])
currency_code = CURRENCY_CODES.get(currency.name, False)
if not currency_code:
diff --git a/addons/rating/controllers/main.py b/addons/rating/controllers/main.py
index 48278b735a1..70259d6a74d 100644
--- a/addons/rating/controllers/main.py
+++ b/addons/rating/controllers/main.py
@@ -40,6 +40,6 @@ class Rating(http.Controller):
return werkzeug.utils.redirect('/web#model=%s&id=%s&view_type=form' % (record_sudo._name, record_sudo.id))
lang = rating.partner_id.lang or 'en_US'
return request.env['ir.ui.view'].with_context(lang=lang).render_template('rating.rating_external_page_view', {
- 'web_base_url': request.env['ir.config_parameter'].sudo().get_param('web.base.url'),
+ 'web_base_url': request.env['ir.config_parameter'].get_param('web.base.url'),
'rating': rating,
})
diff --git a/addons/report/models/ir_http.py b/addons/report/models/ir_http.py
index 61657a681d7..58c7e529edc 100644
--- a/addons/report/models/ir_http.py
+++ b/addons/report/models/ir_http.py
@@ -9,5 +9,5 @@ class IrHttp(models.AbstractModel):
def session_info(self):
res = super(IrHttp, self).session_info()
- res['web.base.url'] = self.env['ir.config_parameter'].sudo().get_param('web.base.url', default='')
+ res['web.base.url'] = self.env['ir.config_parameter'].get_param('web.base.url', default='')
return res
diff --git a/addons/website_forum/data/forum_data.xml b/addons/website_forum/data/forum_data.xml
index df39faa0371..eff8db88b14 100644
--- a/addons/website_forum/data/forum_data.xml
+++ b/addons/website_forum/data/forum_data.xml
@@ -13,7 +13,7 @@
</record>
</data>
<data>
- <function model="ir.config_parameter" name="set_param" eval="('auth_signup.allow_uninvited', True)" />
+ <function model="ir.config_parameter" name="set_param" eval="('auth_signup.allow_uninvited', True, ['base.group_system'])" />
<!-- JUMP TO FORUM AT INSTALL -->
<record id="action_open_forum" model="ir.actions.act_url">
diff --git a/addons/website_mail_channel/models/mail_channel.py b/addons/website_mail_channel/models/mail_channel.py
index 5cc8163c81c..57c5b22a311 100644
--- a/addons/website_mail_channel/models/mail_channel.py
+++ b/addons/website_mail_channel/models/mail_channel.py
@@ -34,7 +34,7 @@ class MailGroup(models.Model):
@api.multi
def _send_confirmation_email(self, partner_ids, unsubscribe=False):
- base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
+ base_url = self.env['ir.config_parameter'].get_param('web.base.url')
route = "/groups/%(action)s/%(channel)s/%(partner)s/%(token)s"
if unsubscribe:
template = self.env.ref('website_mail_channel.mail_template_list_unsubscribe')
diff --git a/odoo/addons/base/security/base_security.xml b/odoo/addons/base/security/base_security.xml
index 6bbc547c918..538892d9ba9 100644
--- a/odoo/addons/base/security/base_security.xml
+++ b/odoo/addons/base/security/base_security.xml
@@ -127,15 +127,15 @@
<field name="domain_force">['|','|',('company_id.child_ids','child_of',[user.company_id.id]),('company_id','child_of',[user.company_id.id]),('company_id','=',False)]</field>
</record>
- <record id="ir_config_parameter_rule" model="ir.rule">
- <field name="name">ICP read rule</field>
- <field name="model_id" ref="model_ir_config_parameter"/>
- <field name="domain_force">['|',('group_ids','in', [g.id for g in user.groups_id]), ('group_ids','=',False)]</field>
- <field name="perm_read" eval="True"/>
- <field name="perm_create" eval="False"/>
- <field name="perm_write" eval="False"/>
- <field name="perm_unlink" eval="False"/>
- </record>
+ <record id="ir_config_parameter_rule" model="ir.rule">
+ <field name="name">ICP read rule</field>
+ <field name="model_id" ref="model_ir_config_parameter"/>
+ <field name="domain_force">['|', ('group_ids','in',user.groups_id.ids), ('group_ids','=',False)]</field>
+ <field name="perm_read" eval="True"/>
+ <field name="perm_create" eval="False"/>
+ <field name="perm_write" eval="False"/>
+ <field name="perm_unlink" eval="False"/>
+ </record>
<record id="res_currency_rate_rule" model="ir.rule">
<field name="name">multi-company currency rate rule</field>