Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
138 changes: 138 additions & 0 deletions base_user_role_profile/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association

=============
User profiles
=============

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:1d979633c755172c0348a066f1d5484a57f3015750cba27e3784b645a9e9a59d
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--backend-lightgray.png?logo=github
:target: https://github.com/OCA/server-backend/tree/19.0/base_user_role_profile
:alt: OCA/server-backend
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/server-backend-19-0/server-backend-19-0-base_user_role_profile
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/server-backend&target_branch=19.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

Extending the base_user_role module, this one adds the notion of
profiles. Effectively profiles act as an additional filter to how the
roles are used.

This allows users to switch their permission groups dynamically. This
can be useful for example to:

- finer grain control on menu and model permissions (with record rules
this becomes very flexible)
- break down complicated menus into simpler ones
- easily restrict users accidentally editing or creating records in O2M
fields and in general misusing the interface, instead of excessively
explaining things to them

When you define a role, you have the possibility to link it to a
profile. Roles are applied to users in the following way:

- Apply user's roles without profiles in any case
- Apply user's roles that are linked to the currently selected profile

In addition you can:

- Add a 'no profile' profile to the user's choice of profile, to allow
him to select a specific profile which enables only the roles without
a profile.
- Restrict the user to change its profile, which can be useful in a
security emergency.

**Table of contents**

.. contents::
:local:

Configuration
=============

To configure this module, you need to go to *Configuration / Users /
Profiles*, and create a new profile.

Then go to *Configuration / Users / Roles* and set some roles with a
profile.

Then go to *Configuration / Users / Users* and add some roles if not
already done. The allowed profiles will computes automatically.

In addition you can:

- Check the "Include Default Profile" box to have the default profile
as an allowed profile.
- Change the current profile if needed.
- Check the "Restrict Profile Switching" to restrict the user to change
it's profile, in that case you can still change it from the user's
settings form.

Usage
=====

Once you have set up at least one profile for a user, use the widget in
the top bar to switch user profiles. Note that it is possible to use no
profile; in this case, the user will only get the roles that always
apply (i.e the ones with no profile_id).

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/server-backend/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/server-backend/issues/new?body=module:%20base_user_role_profile%0Aversion:%2019.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
-------

* Akretion

Contributors
------------

- Kevin Khao <kevin.khao@akretion.com>
- Sébastien Beau <sebastien.beau@akretion.com>
- Olivier Nibart <olivier.nibart@akretion.com>
- Florian Mounier <florian.mounier@akretion.com>

Maintainers
-----------

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

This module is part of the `OCA/server-backend <https://github.com/OCA/server-backend/tree/19.0/base_user_role_profile>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
2 changes: 2 additions & 0 deletions base_user_role_profile/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from . import models
from .hooks import post_init_hook
25 changes: 25 additions & 0 deletions base_user_role_profile/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

{
"name": "User profiles",
"version": "19.0.1.0.0",
"category": "Tools",
"author": "Akretion, Odoo Community Association (OCA)",
"license": "AGPL-3",
"website": "https://github.com/OCA/server-backend",
"depends": ["base_user_role", "web"],
"post_init_hook": "post_init_hook",
"data": [
"data/res_users_profile_data.xml",
"security/ir.model.access.csv",
"views/res_users_views.xml",
"views/res_users_profile_views.xml",
"views/res_users_role_views.xml",
],
"assets": {
"web.assets_backend": [
"base_user_role_profile/static/src/**/*",
],
},
"installable": True,
}
6 changes: 6 additions & 0 deletions base_user_role_profile/data/res_users_profile_data.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="default_profile" model="res.users.profile">
<field name="name">No profile</field>
</record>
</odoo>
9 changes: 9 additions & 0 deletions base_user_role_profile/hooks.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Copyright 2020 Akretion (https://www.akretion.com).
# @author Pierrick Brun <pierrick.brun@akretion.com>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).


def post_init_hook(env):
env["res.users"].search([("profile_id", "=", False)]).profile_id = env.ref(
"base_user_role_profile.default_profile"
)
137 changes: 137 additions & 0 deletions base_user_role_profile/i18n/base_user_role_profile.pot
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * base_user_role_profile
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"

#. module: base_user_role_profile
#: model:ir.model.fields,field_description:base_user_role_profile.field_res_users_profile__user_ids
msgid "Allowed users"
msgstr ""

#. module: base_user_role_profile
#: model:ir.model.fields,field_description:base_user_role_profile.field_res_users_profile__create_uid
msgid "Created by"
msgstr ""

#. module: base_user_role_profile
#: model:ir.model.fields,field_description:base_user_role_profile.field_res_users_profile__create_date
msgid "Created on"
msgstr ""

#. module: base_user_role_profile
#: model:ir.model.fields,field_description:base_user_role_profile.field_res_users__profile_id
msgid "Current profile"
msgstr ""

#. module: base_user_role_profile
#: model:ir.model.fields,field_description:base_user_role_profile.field_res_users__profile_ids
msgid "Currently allowed profiles"
msgstr ""

#. module: base_user_role_profile
#: model:ir.model.fields,field_description:base_user_role_profile.field_res_users_profile__display_name
msgid "Display Name"
msgstr ""

#. module: base_user_role_profile
#: model:ir.model,name:base_user_role_profile.model_ir_http
msgid "HTTP Routing"
msgstr ""

#. module: base_user_role_profile
#: model:ir.model.fields,field_description:base_user_role_profile.field_res_users_profile__id
msgid "ID"
msgstr ""

#. module: base_user_role_profile
#: model:ir.model.fields,help:base_user_role_profile.field_res_users__include_default_profile
msgid ""
"If enabled, the default profile ('no profile') will be added to the user's "
"allowed profiles. This allows the user to select a profile that activates "
"only the roles not associated with any specific profile."
msgstr ""

#. module: base_user_role_profile
#: model:ir.model.fields,help:base_user_role_profile.field_res_users__restrict_profile_switching
msgid ""
"If enabled, the user will be prevented from changing their profile. This "
"acts as a security measure to lock users into their current profile."
msgstr ""

#. module: base_user_role_profile
#: model:ir.model.fields,field_description:base_user_role_profile.field_res_users__include_default_profile
msgid "Include Default Profile"
msgstr ""

#. module: base_user_role_profile
#: model:ir.model.fields,field_description:base_user_role_profile.field_res_users_profile__write_uid
msgid "Last Updated by"
msgstr ""

#. module: base_user_role_profile
#: model:ir.model.fields,field_description:base_user_role_profile.field_res_users_profile__write_date
msgid "Last Updated on"
msgstr ""

#. module: base_user_role_profile
#: model:ir.model.fields,field_description:base_user_role_profile.field_res_users_profile__name
msgid "Name"
msgstr ""

#. module: base_user_role_profile
#: model:ir.model.fields,field_description:base_user_role_profile.field_res_users_role__profile_id
#: model:ir.model.fields,field_description:base_user_role_profile.field_res_users_role_line__profile_id
msgid "Profile"
msgstr ""

#. module: base_user_role_profile
#: model:ir.model.fields,field_description:base_user_role_profile.field_res_users__restrict_profile_switching
msgid "Restrict Profile Switching"
msgstr ""

#. module: base_user_role_profile
#: model:ir.model,name:base_user_role_profile.model_res_users_profile
msgid "Role profile"
msgstr ""

#. module: base_user_role_profile
#: model:ir.model.fields,field_description:base_user_role_profile.field_res_users_profile__role_ids
msgid "Roles"
msgstr ""

#. module: base_user_role_profile
#. odoo-javascript
#: code:addons/base_user_role_profile/static/src/components/switch_profile_menu/switch_profile_menu.esm.js:0
msgid "Switch Profile"
msgstr ""

#. module: base_user_role_profile
#: model:ir.model,name:base_user_role_profile.model_res_users
msgid "User"
msgstr ""

#. module: base_user_role_profile
#: model:ir.actions.act_window,name:base_user_role_profile.action_res_users_profile_tree
#: model:ir.ui.menu,name:base_user_role_profile.menu_action_res_users_profile_tree
msgid "User Profiles"
msgstr ""

#. module: base_user_role_profile
#: model:ir.model,name:base_user_role_profile.model_res_users_role
msgid "User Role"
msgstr ""

#. module: base_user_role_profile
#: model:ir.model,name:base_user_role_profile.model_res_users_role_line
msgid "Users associated to a role"
msgstr ""
Loading
Loading