# Group backend

This module adds two “Backend User” groups (`group_backend` and `group_backend_ui_users`) with restricted access to odoo backend only (`/web`), with less and more controlled access than the native “Internal User” group.

> The problem with the “Internal User” group (`base.group_user`) is that it can be used by any new module added to your project, so you don’t control clearly this group’s accesses.

The UI access is provided only for `group_backend_ui_users` :

- minimal default access rules to access the user’s own data:
    - users and partners
    - mail activity, notification and channel
    - presence
- minimal default menu to restrict the available ones:
    - notification
    - activities

Here is an example where a user from `group_backend_ui_users` can only access and use the Dummy App. No other application is available to this user (you may define your own application instead of the Dummy one).

We suggest to use this module with its companion `base_user_role`.

# Limitations

At the time of writing, Odoo uses `user.share == False` and `user.has_group("base.group_user") == True` to give the backend access to `user`.

So technically, the module does 2 things :

- It sets the `share` parameter to `False` for `group_backend` users.
- It hijacks the `has_group` method of res.users by returning `True` for `group_backend` users when the requested group is `base.group_user`

This avoids to write a lot of overwrite in different controllers from different modules (‘portal’, ‘web’, ‘base’, ‘website’) with hard coded statements that check if user is part of the `base.group_user` or `share == False` group.

Important

This is an alpha version, the data model and design can change at any time without warning. Only for development or testing purpose, do not use in production. More details on development status

Table of contents

- Configuration
- Usage
- Bug Tracker
- Credits

## Configuration

To allow a user from the `group_backend_ui_users` group to interact with a specific model you can either add an access rules to this model for `group_backend_ui_users` or you can add `group_backend_ui_users` to the `implied_ids` of a new specific group.

The Backend groups are from the “User types” category (`base.module_category_user_type`), the same category as “Internal User” (`base.group_user`), “Portal” (`base.group_portal`) or Public (`base.group_public`). Be aware that a user can only belongs to one group of this category.

## Usage

To use this module, add a user to the group “Backend user” or “Backend UI user” through the user’s form page.

If you created a specific group with `group_backend` or `group_backend_ui_users` in its `implied_ids`, you need to go through the group’s form page in order to add the user to this specific group, because it won’t be displayed on the user’s form page (a specific group with its own category is displayed on user’s form page only if the group inherits the “Internal user” group).

This module also restricts the root menus displayed to Backend users, so be sure to explicitly add your Backend group to all the necessary root menus for these users.

## Bug Tracker

Bugs are tracked on GitHub 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.

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

## Credits

# Authors

- Pierre Verkest

# Contributors

- Pierre Verkest <pierreverkest84@gmail.com>
- François Poizat <francois.poizat@gmail.com>

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

# Maintainers

This module is maintained by the OCA.

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.

Current maintainers:

This module is part of the OCA/server-backend project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.