-
-
Notifications
You must be signed in to change notification settings - Fork 490
[WIP][MIG] oauth_provider: Migration to 19.0 #853
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
augusto-weiss
wants to merge
31
commits into
OCA:19.0
Choose a base branch
from
adhoc-dev:19.0-mig-oauth_provider
base: 19.0
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
31 commits
Select commit
Hold shift + click to select a range
ca583c7
[ADD] Add oauth_provider module
e66a38e
OCA Transbot updated translations from Transifex
oca-transbot 0ccb04d
[FIX] oauth_provider: Fix tests when using last oauthlib version
0a32c70
[ADD] icon.png
OCA-git-bot 77c9926
typo
ccomb 216e98f
[MIG] oauth_provider: Migration to 12.0
hbrunn 7004b75
[ADD] auth method oauth_provider
hbrunn edc55fd
[MIG] oauth_provider: @api.multi
remytms aaf9b94
[FIX] oauth_provider: dependencies of a compute method
remytms 093a283
[MIG] oauth_provider: change usage of sudo
remytms 62c2590
[MIG] oauth_provider: view_type
remytms 762177e
[MIG] oauth_provider: black, prettier, isort
remytms 41a8bd3
[MIG] oauth_provider: split readme
remytms 491b20c
[MIG] oauth_provider: update manifest
remytms 3208bce
[MIG] oauth_provider: make module installable
remytms 62da886
[MIG] oauth_provider: change datetime call
remytms ae91247
[FIX] oauth_provider: error using module with safe_eval
remytms 04ecb3f
[FIX] oauth_provider: validator
remytms 08efbf6
[FIX] oauth_provider: dependencies
remytms 477151b
[MIG] oauth_provider: Migration to 16.0
remytms f8d0d40
[FIX] oauth_provider: controllers errors
remytms 389cac4
[FIX] oauth_provider: views
remytms 7ea159e
[IMP] add migration script
huguesdk b2c0a93
[FIX] oauth_provider: wrong import in controller
remytms e4b266f
[FIX] oauth_provider: client_id missing in request.client
remytms e17534b
[IMP] oauth_provider: pre-commit execution
augusto-weiss c7984ea
[MIG] oauth_provider: Migration to 18.0
augusto-weiss 6be3321
[IMP] oauth_provider: get access_token from headers, remove werkzeug.…
49364ee
[FIX] oauth_provider: _auth_method_oauth_provider
48d285f
[IMP] oauth_provider: pre-commit execution
augusto-weiss d2ca0ef
[MIG] oauth_provider: Migration to 19.0
augusto-weiss File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,175 @@ | ||
| ============== | ||
| OAuth Provider | ||
| ============== | ||
|
|
||
| .. | ||
| !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
| !! This file is generated by oca-gen-addon-readme !! | ||
| !! changes will be overwritten. !! | ||
| !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
| !! source digest: sha256:aa4309bd3541d2e392e872caef424619e80e84eaeefc61d1d631850118d6483a | ||
| !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
|
|
||
| .. |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/licence-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--auth-lightgray.png?logo=github | ||
| :target: https://github.com/OCA/server-auth/tree/19.0/oauth_provider | ||
| :alt: OCA/server-auth | ||
| .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png | ||
| :target: https://translation.odoo-community.org/projects/server-auth-16-0/server-auth-16-0-oauth_provider | ||
| :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-auth&target_branch=19.0 | ||
| :alt: Try me on Runboat | ||
|
|
||
| |badge1| |badge2| |badge3| |badge4| |badge5| | ||
|
|
||
| This module allows you to turn Odoo into an OAuth 2 provider. | ||
|
|
||
| It's meant to provide the basic authentication feature, and some data | ||
| access routes. | ||
| But you are encouraged to create custom routes, in other modules, to | ||
| give structured data for any specific need. | ||
|
|
||
|
|
||
| **Table of contents** | ||
|
|
||
| .. contents:: | ||
| :local: | ||
|
|
||
| Installation | ||
| ============ | ||
|
|
||
| To install this module, you need to: | ||
|
|
||
| #. Install the oauthlib python module | ||
| #. Install the module like any other in Odoo | ||
| #. For the token retrieval to work on a multi-database instance, you should add this module in the server_wide_modules list | ||
|
|
||
| Configuration | ||
| ============= | ||
|
|
||
| This module requires you to configure two things : | ||
|
|
||
| #. The scopes are used to define restricted data access | ||
| #. The clients are used to declare applications that will be allowed to request tokens and data | ||
|
|
||
| To configure scopes, you need to: | ||
|
|
||
| #. Go to Settings > Users > OAuth Provider Scopes | ||
| #. Create some scopes: | ||
|
|
||
| - The scope name and description will be displayed to the user on the authorization page. | ||
| - The code is the value provided by the OAuth clients to request access to the scope. | ||
| - The model defines which model the scope is linked to (access to user data, partners, sales orders, etc.). | ||
| - The filter allows you to determine which records will be accessible through this scope. No filter means all records of the model are accessible. | ||
| - The field names allows you to define which fields will be provided to the clients. An empty list only returns the id of accessible records. | ||
|
|
||
| To configure clients, you need to: | ||
|
|
||
| #. Go to Settings > Users > OAuth Provider Clients | ||
| #. Create at least one client: | ||
|
|
||
| - The name will be displayed to the user on the authorization page. | ||
| - The client identifier is the value provided by the OAuth clients to request authorizations/tokens. | ||
| - The application type adapts the process to four pre-defined profiles: | ||
|
|
||
| - Web Application : Authorization Code Grant | ||
| - Mobile Application : Implicit Grant | ||
| - Legacy Application : Resource Owner Password Credentials Grant | ||
| - Backend Application : User Credentials Grant (not implemented yet) | ||
|
|
||
| - The skip authorization checkbox allows the client to skip the authorization page, and directly deliver a token without prompting the user (useful when the application is trusted). | ||
| - The allowed scopes list defines which data will be accessible by this client applicaton. | ||
| - The allowed redirect URIs must match the URI sent by the client, to avoid redirecting users to an unauthorized service. The first value in the list is the default redirect URI. | ||
|
|
||
| For example, to configure an Odoo's *auth_oauth* module compatible client, you will enter these values : | ||
|
|
||
| - Name : Anything you want | ||
| - Client identifier : The identifier you want to give to this client | ||
| - Application Type : Mobile Application (Odoo uses the implicit grant mode, which corresponds to the mobile application profile) | ||
| - Allowed Scopes : Nothing required, but allowing access to current user's email and name is used by Odoo to fill user's information on signup | ||
| - Allowed Redirect URIs : http://odoo.example.com/auth_oauth/signin | ||
|
|
||
| Usage | ||
| ===== | ||
|
|
||
| This module will allow OAuth clients to use your Odoo instance as an OAuth provider. | ||
|
|
||
| Once configured, you must give these information to your client application : | ||
|
|
||
| #. Client identifier : Identifies the application (to be able to check allowed scopes and redirect URIs) | ||
| #. Allowed scopes : The codes of scopes allowed for this client | ||
| #. URLs for the requests : | ||
|
|
||
| - Authorization request : http://odoo.example.com/oauth2/authorize | ||
| - Token request : http://odoo.example.com/oauth2/token | ||
| - Token information request : http://odoo.example.com/oauth2/tokeninfo | ||
| Parameters : access_token | ||
| - User information request : http://odoo.example.com/oauth2/userinfo | ||
| Parameters : access_token | ||
| - Any other model information request (depending on the scopes) : http://odoo.example.com/oauth2/otherinfo | ||
| Parameters : access_token and model | ||
|
|
||
| For example, to configure the *auth_oauth* Odoo module as a client, you will enter these values : | ||
|
|
||
| - Provider name : Anything you want | ||
| - Client ID : The identifier of the client configured in your Odoo Provider instance | ||
| - Body : Text displayed on Odoo's login page link | ||
| - Authentication URL : http://odoo.example.com/oauth2/authorize | ||
| - Scope : A space separated list of scope codes allowed to the client in your Odoo Provider instance | ||
| - Validation URL : http://odoo.example.com/oauth2/tokeninfo | ||
| - Data URL : http://odoo.example.com/oauth2/userinfo | ||
|
|
||
| Known issues / Roadmap | ||
| ====================== | ||
|
|
||
| * Implement the backend application profile (client credentials grant type) | ||
| * Add checkboxes on the authorization page to allow the user to disable | ||
| some scopes for a token ? (I don't know if this is allowed in the | ||
| OAuth protocol) | ||
|
|
||
|
|
||
| Bug Tracker | ||
| =========== | ||
|
|
||
| Bugs are tracked on `GitHub Issues <https://github.com/OCA/server-auth/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-auth/issues/new?body=module:%20oauth_provider%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_. | ||
augusto-weiss marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| Do not contact contributors directly about support or help with technical issues. | ||
|
|
||
| Credits | ||
| ======= | ||
|
|
||
| Authors | ||
| ~~~~~~~ | ||
|
|
||
| * SYLEAM | ||
|
|
||
| Contributors | ||
| ~~~~~~~~~~~~ | ||
|
|
||
| * Sylvain Garancher <[email protected]> | ||
|
|
||
| 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-auth <https://github.com/OCA/server-auth/tree/19.0/oauth_provider>`_ project on GitHub. | ||
|
|
||
| You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,24 @@ | ||
| # Copyright 2016 SYLEAM | ||
| # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). | ||
|
|
||
| from . import controllers | ||
| from . import models | ||
|
|
||
| import uuid | ||
|
|
||
|
|
||
| def pre_init_hook(env): | ||
| """Initialize oauth_identifier on res.users | ||
|
|
||
| The standard initialization puts the same value for every existing record, | ||
| which is invalid for this field. | ||
| This is done in the pre_init_hook to be able to add the unique constrait | ||
| on the first run, when installing the module. | ||
| """ | ||
| env.cr.execute("ALTER TABLE res_users ADD COLUMN oauth_identifier varchar") | ||
| env.cr.execute("SELECT id FROM res_users") | ||
| for user_id in env.cr.fetchall(): | ||
| env.cr.execute( | ||
| "UPDATE res_users SET oauth_identifier = %s WHERE id = %s", | ||
| (str(uuid.uuid4()), user_id), | ||
| ) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,28 @@ | ||
| # Copyright 2016 SYLEAM | ||
| # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). | ||
|
|
||
| { | ||
| "name": "OAuth Provider", | ||
| "summary": "Allows to use Odoo as an OAuth2 provider", | ||
| "version": "19.0.1.0.0", | ||
| "category": "Authentication", | ||
| "website": "https://github.com/OCA/server-auth", | ||
| "author": "SYLEAM, Odoo Community Association (OCA)", | ||
| "license": "AGPL-3", | ||
| "installable": True, | ||
| "external_dependencies": { | ||
| "python": ["oauthlib"], | ||
| }, | ||
| "depends": [ | ||
| "base", | ||
| "web", | ||
| ], | ||
| "data": [ | ||
| "security/oauth_provider_security.xml", | ||
| "security/ir.model.access.csv", | ||
| "views/oauth_provider_client.xml", | ||
| "views/oauth_provider_scope.xml", | ||
| "templates/authorization.xml", | ||
| ], | ||
| "pre_init_hook": "pre_init_hook", | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| # Copyright 2016 SYLEAM | ||
| # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). | ||
|
|
||
| from . import main |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The Weblate translation URL references version 16-0 and should be updated to 19-0 to match the migration target version.