summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYannick Tivisse <yti@odoo.com>2015-11-16 18:43:04 +0100
committerYannick Tivisse <yti@odoo.com>2015-11-20 16:27:32 +0100
commit1ecba213f4f188ba7a235e0cf4fc029535f0bdba (patch)
treeb14a6634ed228b54733253d32e4809e18f25b024
parent8cd0127af300efd7f33bc45935912d75ca92f8b0 (diff)
[IMP] Newly created users get all manager access right
Coming from a bug in web_settings_dashboard. Invited user didn't have any rights when created from the dashboard, which was leading to an error. This bug leaded to a new discussion. Better to have basic employee having user rights for all main applications. For bigger entreprises there is an admin that will carefully remove extra rights, if necessary. The target is small businesses, it makes sense that every way to create a user gives the same result. In conclusion, each new user has a full access to the applications by default How is it implemented ? We added an inactive default user which original access right to the groups 'base.group_user' and 'base.group_partner_manager' in base. Each application will extend the default user's access right by adding the maximal access right for this application. On user creation, we will use by default the 'group_id' field from the default user. We will in the same time remove the ugly 'default_groups_ref' key which was passed sometimes in the context for some fields in some views, and sometimes nothing. So, the user can modify the access rights for the default user, but he should be aware that removing project user access rights for a default user will prevent a *created on the fly in a task* user will not be able to access the task.
-rw-r--r--addons/account/security/account_security.xml4
-rw-r--r--addons/event/security/event_security.xml4
-rw-r--r--addons/fleet/security/fleet_security.xml3
-rw-r--r--addons/hr/security/hr_security.xml4
-rw-r--r--addons/im_livechat/security/im_livechat_channel_security.xml4
-rw-r--r--addons/lunch/security/lunch_security.xml4
-rw-r--r--addons/marketing_campaign/security/marketing_campaign_security.xml5
-rw-r--r--addons/mass_mailing/security/mass_mailing_security.xml4
-rw-r--r--addons/mrp/security/mrp_security.xml4
-rw-r--r--addons/point_of_sale/security/point_of_sale_security.xml4
-rw-r--r--addons/project/security/project_security.xml4
-rw-r--r--addons/purchase/security/purchase_security.xml4
-rw-r--r--addons/stock/security/stock_security.xml4
-rw-r--r--addons/survey/security/survey_security.xml4
-rw-r--r--addons/website/data/data.xml4
-rw-r--r--openerp/addons/base/base_data.xml7
-rw-r--r--openerp/addons/base/res/res_users.py14
-rw-r--r--openerp/addons/base/security/base_security.xml16
18 files changed, 87 insertions, 10 deletions
diff --git a/addons/account/security/account_security.xml b/addons/account/security/account_security.xml
index 5547e561cac..1bd9765d455 100644
--- a/addons/account/security/account_security.xml
+++ b/addons/account/security/account_security.xml
@@ -21,6 +21,10 @@
<field name="implied_ids" eval="[(4, ref('group_account_user'))]"/>
</record>
+ <record id="base.default_user" model="res.users">
+ <field name="groups_id" eval="[(4,ref('account.group_account_manager'))]"/>
+ </record>
+
<record id="group_proforma_invoices" model="res.groups">
<field name="name">Pro-forma Invoices</field>
<field name="category_id" ref="base.module_category_hidden"/>
diff --git a/addons/event/security/event_security.xml b/addons/event/security/event_security.xml
index 44a9a1b9c8a..ebdbac4a967 100644
--- a/addons/event/security/event_security.xml
+++ b/addons/event/security/event_security.xml
@@ -15,6 +15,10 @@
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
+ <record id="base.default_user" model="res.users">
+ <field name="groups_id" eval="[(4,ref('event.group_event_manager'))]"/>
+ </record>
+
<record id="group_email_scheduling" model="res.groups">
<field name="name">Schedule Emails on Event Subscription</field>
<field name="category_id" ref="base.module_category_hidden"/>
diff --git a/addons/fleet/security/fleet_security.xml b/addons/fleet/security/fleet_security.xml
index 0d11edf023a..190a85729a4 100644
--- a/addons/fleet/security/fleet_security.xml
+++ b/addons/fleet/security/fleet_security.xml
@@ -15,6 +15,9 @@
<field name="category_id" ref="module_fleet_category"/>
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
+ <record id="base.default_user" model="res.users">
+ <field name="groups_id" eval="[(4,ref('fleet.group_fleet_manager'))]"/>
+ </record>
</data>
<data noupdate="1">
diff --git a/addons/hr/security/hr_security.xml b/addons/hr/security/hr_security.xml
index a16f8074cf8..3a598bb4a70 100644
--- a/addons/hr/security/hr_security.xml
+++ b/addons/hr/security/hr_security.xml
@@ -20,6 +20,10 @@
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
+ <record id="base.default_user" model="res.users">
+ <field name="groups_id" eval="[(4,ref('base.group_hr_manager'))]"/>
+ </record>
+
<record id="base.group_hr_attendance" model="res.groups">
<field name="name">Attendances</field>
<field name="category_id" ref="base.module_category_hidden"/>
diff --git a/addons/im_livechat/security/im_livechat_channel_security.xml b/addons/im_livechat/security/im_livechat_channel_security.xml
index 56f67c7c4bb..5b0266fc28a 100644
--- a/addons/im_livechat/security/im_livechat_channel_security.xml
+++ b/addons/im_livechat/security/im_livechat_channel_security.xml
@@ -21,5 +21,9 @@
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
+ <record id="base.default_user" model="res.users">
+ <field name="groups_id" eval="[(4,ref('im_livechat.im_livechat_group_manager'))]"/>
+ </record>
+
</data>
</odoo>
diff --git a/addons/lunch/security/lunch_security.xml b/addons/lunch/security/lunch_security.xml
index a4757302500..c622fed989c 100644
--- a/addons/lunch/security/lunch_security.xml
+++ b/addons/lunch/security/lunch_security.xml
@@ -16,6 +16,10 @@
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
+ <record id="base.default_user" model="res.users">
+ <field name="groups_id" eval="[(4,ref('lunch.group_lunch_manager'))]"/>
+ </record>
+
<record id="lunch_mind_your_own_food_money" model="ir.rule">
<field name="name">lunch.cashmove: do not see other people's cashmove</field>
<field name="model_id" ref="model_lunch_cashmove"/>
diff --git a/addons/marketing_campaign/security/marketing_campaign_security.xml b/addons/marketing_campaign/security/marketing_campaign_security.xml
index 259a2f3a889..ab0b3e303f9 100644
--- a/addons/marketing_campaign/security/marketing_campaign_security.xml
+++ b/addons/marketing_campaign/security/marketing_campaign_security.xml
@@ -12,5 +12,10 @@
<field name="implied_ids" eval="[(4, ref('marketing_campaign.group_lead_automation_user'))]"/>
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
+
+ <record id="base.default_user" model="res.users">
+ <field name="groups_id" eval="[(4,ref('marketing_campaign.group_lead_automation_manager'))]"/>
+ </record>
+
</data>
</openerp>
diff --git a/addons/mass_mailing/security/mass_mailing_security.xml b/addons/mass_mailing/security/mass_mailing_security.xml
index 425d1d2bf43..d26cf84b66f 100644
--- a/addons/mass_mailing/security/mass_mailing_security.xml
+++ b/addons/mass_mailing/security/mass_mailing_security.xml
@@ -7,6 +7,10 @@
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
+ <record id="base.default_user" model="res.users">
+ <field name="groups_id" eval="[(4,ref('mass_mailing.group_mass_mailing_user'))]"/>
+ </record>
+
<record id="group_website_popup_on_exit" model="res.groups">
<field name="name">Use subscription pop up on the website</field>
<field name="category_id" ref="base.module_category_hidden"/>
diff --git a/addons/mrp/security/mrp_security.xml b/addons/mrp/security/mrp_security.xml
index cb8a4667082..dff58a97570 100644
--- a/addons/mrp/security/mrp_security.xml
+++ b/addons/mrp/security/mrp_security.xml
@@ -14,6 +14,10 @@
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
+ <record id="base.default_user" model="res.users">
+ <field name="groups_id" eval="[(4,ref('mrp.group_mrp_manager'))]"/>
+ </record>
+
<record id="group_mrp_routings" model="res.groups">
<field name="name">Manage Work Order Operations</field>
<field name="category_id" ref="base.module_category_hidden"/>
diff --git a/addons/point_of_sale/security/point_of_sale_security.xml b/addons/point_of_sale/security/point_of_sale_security.xml
index 1d3e6123eef..1c4cf30e363 100644
--- a/addons/point_of_sale/security/point_of_sale_security.xml
+++ b/addons/point_of_sale/security/point_of_sale_security.xml
@@ -13,6 +13,10 @@
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
+ <record id="base.default_user" model="res.users">
+ <field name="groups_id" eval="[(4,ref('point_of_sale.group_pos_manager'))]"/>
+ </record>
+
<record id="rule_pos_bank_statement_user" model="ir.rule">
<field name="name">Point Of Sale Bank Statement POS User</field>
<field name="model_id" ref="account.model_account_bank_statement" />
diff --git a/addons/project/security/project_security.xml b/addons/project/security/project_security.xml
index 03a2ed38adb..2d8dc77ee81 100644
--- a/addons/project/security/project_security.xml
+++ b/addons/project/security/project_security.xml
@@ -15,6 +15,10 @@
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
+ <record id="base.default_user" model="res.users">
+ <field name="groups_id" eval="[(4,ref('project.group_project_manager'))]"/>
+ </record>
+
<record id="group_tasks_work_on_tasks" model="res.groups">
<field name="name">Task's Work on Tasks</field>
<field name="category_id" ref="base.module_category_hidden"/>
diff --git a/addons/purchase/security/purchase_security.xml b/addons/purchase/security/purchase_security.xml
index cc732a8cabd..edccd9afd73 100644
--- a/addons/purchase/security/purchase_security.xml
+++ b/addons/purchase/security/purchase_security.xml
@@ -15,6 +15,10 @@
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
+ <record id="base.default_user" model="res.users">
+ <field name="groups_id" eval="[(4,ref('purchase.group_purchase_manager'))]"/>
+ </record>
+
<record id="group_analytic_accounting" model="res.groups">
<field name="name">Analytic Accounting for Purchases</field>
<field name="category_id" ref="base.module_category_hidden"/>
diff --git a/addons/stock/security/stock_security.xml b/addons/stock/security/stock_security.xml
index 39d26efc58f..cfc388c637c 100644
--- a/addons/stock/security/stock_security.xml
+++ b/addons/stock/security/stock_security.xml
@@ -18,6 +18,10 @@
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
+ <record id="base.default_user" model="res.users">
+ <field name="groups_id" eval="[(4,ref('stock.group_stock_manager'))]"/>
+ </record>
+
<record id="group_production_lot" model="res.groups">
<field name="name">Manage Lots / Serial Numbers</field>
<field name="category_id" ref="base.module_category_hidden"/>
diff --git a/addons/survey/security/survey_security.xml b/addons/survey/security/survey_security.xml
index afaf592686b..470a5685ac9 100644
--- a/addons/survey/security/survey_security.xml
+++ b/addons/survey/security/survey_security.xml
@@ -15,6 +15,10 @@
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
+ <record id="base.default_user" model="res.users">
+ <field name="groups_id" eval="[(4,ref('base.group_survey_manager'))]"/>
+ </record>
+
<!-- Record rules -->
<record id="survey_users_access" model="ir.rule">
<field name="name">Access to survey for regular users</field>
diff --git a/addons/website/data/data.xml b/addons/website/data/data.xml
index f30068b72e9..98db6fe9cba 100644
--- a/addons/website/data/data.xml
+++ b/addons/website/data/data.xml
@@ -43,6 +43,10 @@
<field name="category_id" ref="base.module_category_website"/>
</record>
+ <record id="base.default_user" model="res.users">
+ <field name="groups_id" eval="[(4,ref('base.group_website_designer'))]"/>
+ </record>
+
<record id="action_module_website" model="ir.actions.act_window">
<field name="name">Website Apps</field>
<field name="res_model">ir.module.module</field>
diff --git a/openerp/addons/base/base_data.xml b/openerp/addons/base/base_data.xml
index 51904e27201..ee031437a2f 100644
--- a/openerp/addons/base/base_data.xml
+++ b/openerp/addons/base/base_data.xml
@@ -51,6 +51,13 @@
Administrator</span>]]></field>
</record>
+ <!-- Default user with full access rights for newly created users -->
+ <record id="default_user" model="res.users">
+ <field name="name">default user</field>
+ <field name="login">default</field>
+ <field name="active" eval="False"/>
+ </record>
+
<record id="main_partner" model="res.partner">
<field name="company_id" ref="main_company"/>
</record>
diff --git a/openerp/addons/base/res/res_users.py b/openerp/addons/base/res/res_users.py
index db1c6c09a48..c929b2dab59 100644
--- a/openerp/addons/base/res/res_users.py
+++ b/openerp/addons/base/res/res_users.py
@@ -262,16 +262,10 @@ class res_users(osv.osv):
return False
def _get_group(self,cr, uid, context=None):
- dataobj = self.pool.get('ir.model.data')
- result = []
- try:
- dummy,group_id = dataobj.get_object_reference(cr, SUPERUSER_ID, 'base', 'group_user')
- result.append(group_id)
- dummy,group_id = dataobj.get_object_reference(cr, SUPERUSER_ID, 'base', 'group_partner_manager')
- result.append(group_id)
- except ValueError:
- # If these groups does not exists anymore
- pass
+ default_user = self.pool['ir.model.data'].xmlid_to_object(cr, uid, 'base.default_user')
+ if not default_user:
+ return []
+ result = default_user.groups_id.ids
return result
_defaults = {
diff --git a/openerp/addons/base/security/base_security.xml b/openerp/addons/base/security/base_security.xml
index c5c60632758..073acaebd91 100644
--- a/openerp/addons/base/security/base_security.xml
+++ b/openerp/addons/base/security/base_security.xml
@@ -21,10 +21,18 @@
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
+ <record id="base.default_user" model="res.users">
+ <field name="groups_id" eval="[(4,ref('base.group_system'))]"/>
+ </record>
+
<record model="res.groups" id="group_user">
<field name="name">Employee</field>
</record>
+ <record id="default_user" model="res.users">
+ <field name="groups_id" eval="[(4,ref('base.group_user'))]"/>
+ </record>
+
<record model="res.groups" id="group_light_multi_company">
<field name="name">Enable Light Multi Company</field>
</record>
@@ -55,10 +63,18 @@
<field name="implied_ids" eval="[(4, ref('group_sale_salesman'))]"/>
</record>
+ <record id="default_user" model="res.users">
+ <field name="groups_id" eval="[(4,ref('base.group_sale_manager'))]"/>
+ </record>
+
<record model="res.groups" id="group_partner_manager">
<field name="name">Contact Creation</field>
</record>
+ <record id="default_user" model="res.users">
+ <field name="groups_id" eval="[(4,ref('base.group_partner_manager'))]"/>
+ </record>
+
<!--
A group dedicated to the portal users, making groups
restrictions more convenient.