From 3db0c87a5a0dc1f40e7c29a778e692be79fe541b Mon Sep 17 00:00:00 2001
From: natuan9
Date: Thu, 13 Mar 2025 15:07:13 +0700
Subject: [PATCH 1/3] [ADD] auth_oauth_filter_by_domain
---
auth_oauth_filter_by_domain/README.rst | 101 ++++
auth_oauth_filter_by_domain/__init__.py | 2 +
auth_oauth_filter_by_domain/__manifest__.py | 15 +
.../controllers/__init__.py | 1 +
.../controllers/main.py | 20 +
.../models/__init__.py | 1 +
.../models/auth_oauth.py | 9 +
.../readme/CONTRIBUTORS.md | 2 +
.../readme/DESCRIPTION.md | 1 +
auth_oauth_filter_by_domain/readme/USAGE.md | 5 +
.../static/description/index.html | 446 ++++++++++++++++++
.../views/auth_oauth_views.xml | 13 +
12 files changed, 616 insertions(+)
create mode 100644 auth_oauth_filter_by_domain/README.rst
create mode 100644 auth_oauth_filter_by_domain/__init__.py
create mode 100644 auth_oauth_filter_by_domain/__manifest__.py
create mode 100644 auth_oauth_filter_by_domain/controllers/__init__.py
create mode 100644 auth_oauth_filter_by_domain/controllers/main.py
create mode 100644 auth_oauth_filter_by_domain/models/__init__.py
create mode 100644 auth_oauth_filter_by_domain/models/auth_oauth.py
create mode 100644 auth_oauth_filter_by_domain/readme/CONTRIBUTORS.md
create mode 100644 auth_oauth_filter_by_domain/readme/DESCRIPTION.md
create mode 100644 auth_oauth_filter_by_domain/readme/USAGE.md
create mode 100644 auth_oauth_filter_by_domain/static/description/index.html
create mode 100644 auth_oauth_filter_by_domain/views/auth_oauth_views.xml
diff --git a/auth_oauth_filter_by_domain/README.rst b/auth_oauth_filter_by_domain/README.rst
new file mode 100644
index 0000000000..813323053c
--- /dev/null
+++ b/auth_oauth_filter_by_domain/README.rst
@@ -0,0 +1,101 @@
+======================
+OAuth Filter by Domain
+======================
+
+..
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! This file is generated by oca-gen-addon-readme !!
+ !! changes will be overwritten. !!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! source digest: sha256:d6fb2d877d83aa1c11fd38c1143c3207c375d5d5361b64e3941fdaedcdf0272e
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+.. |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/16.0/auth_oauth_filter_by_domain
+ :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-auth_oauth_filter_by_domain
+ :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=16.0
+ :alt: Try me on Runboat
+
+|badge1| |badge2| |badge3| |badge4| |badge5|
+
+This module allows to define a list of ``allowed_domains`` on
+'auth.oauth.provider' and shows only the relevant ones matching with the
+current domain
+
+**Table of contents**
+
+.. contents::
+ :local:
+
+Usage
+=====
+
+1. Go to **Settings > Users and Companies > OAuth Providers**.
+2. Add a comma-separated list of domains in the **Allowed Domains**
+ field.
+3. Navigate to ``/web/login``.
+
+ - Only providers with ``Allowed Domains`` matching the current domain
+ will be displayed.
+ - If ``Allowed Domains`` is left empty, the provider will be visible
+ on all domains.
+
+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
+-------
+
+* Kencove
+
+Contributors
+------------
+
+- `Trobz `__:
+
+ - Tuan Nguyen
+
+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.
+
+.. |maintainer-natuan9| image:: https://github.com/natuan9.png?size=40px
+ :target: https://github.com/natuan9
+ :alt: natuan9
+
+Current `maintainer `__:
+
+|maintainer-natuan9|
+
+This module is part of the `OCA/server-auth `_ project on GitHub.
+
+You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/auth_oauth_filter_by_domain/__init__.py b/auth_oauth_filter_by_domain/__init__.py
new file mode 100644
index 0000000000..f7209b1710
--- /dev/null
+++ b/auth_oauth_filter_by_domain/__init__.py
@@ -0,0 +1,2 @@
+from . import models
+from . import controllers
diff --git a/auth_oauth_filter_by_domain/__manifest__.py b/auth_oauth_filter_by_domain/__manifest__.py
new file mode 100644
index 0000000000..25801ca0e0
--- /dev/null
+++ b/auth_oauth_filter_by_domain/__manifest__.py
@@ -0,0 +1,15 @@
+# Copyright 2025 Kencove
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl)
+{
+ "name": "OAuth Filter by Domain",
+ "summary": "Filter OAuth providers by domain",
+ "version": "16.0.1.0.0",
+ "website": "https://github.com/OCA/server-auth",
+ "author": "Kencove, Odoo Community Association (OCA)",
+ "maintainers": ["natuan9"],
+ "license": "AGPL-3",
+ "depends": ["auth_oauth"],
+ "data": [
+ "views/auth_oauth_views.xml",
+ ],
+}
diff --git a/auth_oauth_filter_by_domain/controllers/__init__.py b/auth_oauth_filter_by_domain/controllers/__init__.py
new file mode 100644
index 0000000000..12a7e529b6
--- /dev/null
+++ b/auth_oauth_filter_by_domain/controllers/__init__.py
@@ -0,0 +1 @@
+from . import main
diff --git a/auth_oauth_filter_by_domain/controllers/main.py b/auth_oauth_filter_by_domain/controllers/main.py
new file mode 100644
index 0000000000..57dcbb4e40
--- /dev/null
+++ b/auth_oauth_filter_by_domain/controllers/main.py
@@ -0,0 +1,20 @@
+from odoo.http import request
+
+from odoo.addons.auth_oauth.controllers.main import OAuthLogin
+
+
+class OAuthLoginCustom(OAuthLogin):
+ def list_providers(self):
+ """Filter OAuth Providers based on the current domain"""
+ providers = super().list_providers()
+ host = request.httprequest.host.split(":")[0]
+
+ filtered_providers = []
+ for provider in providers:
+ allowed_domains = provider.get("allowed_domains", "")
+ if not allowed_domains or host in [
+ domain.strip() for domain in allowed_domains.split(",")
+ ]:
+ filtered_providers.append(provider)
+
+ return filtered_providers
diff --git a/auth_oauth_filter_by_domain/models/__init__.py b/auth_oauth_filter_by_domain/models/__init__.py
new file mode 100644
index 0000000000..6a8667f59c
--- /dev/null
+++ b/auth_oauth_filter_by_domain/models/__init__.py
@@ -0,0 +1 @@
+from . import auth_oauth
diff --git a/auth_oauth_filter_by_domain/models/auth_oauth.py b/auth_oauth_filter_by_domain/models/auth_oauth.py
new file mode 100644
index 0000000000..bdd39f7eb6
--- /dev/null
+++ b/auth_oauth_filter_by_domain/models/auth_oauth.py
@@ -0,0 +1,9 @@
+from odoo import fields, models
+
+
+class AuthOAuthProvider(models.Model):
+ _inherit = "auth.oauth.provider"
+
+ allowed_domains = fields.Char(
+ help="Comma-separated list of domains that can use this provider.",
+ )
diff --git a/auth_oauth_filter_by_domain/readme/CONTRIBUTORS.md b/auth_oauth_filter_by_domain/readme/CONTRIBUTORS.md
new file mode 100644
index 0000000000..56787ffce2
--- /dev/null
+++ b/auth_oauth_filter_by_domain/readme/CONTRIBUTORS.md
@@ -0,0 +1,2 @@
+- [Trobz](https://trobz.com):
+ - Tuan Nguyen \<\>
diff --git a/auth_oauth_filter_by_domain/readme/DESCRIPTION.md b/auth_oauth_filter_by_domain/readme/DESCRIPTION.md
new file mode 100644
index 0000000000..9ad6818bbc
--- /dev/null
+++ b/auth_oauth_filter_by_domain/readme/DESCRIPTION.md
@@ -0,0 +1 @@
+This module allows to define a list of `allowed_domains` on 'auth.oauth.provider' and shows only the relevant ones matching with the current domain
diff --git a/auth_oauth_filter_by_domain/readme/USAGE.md b/auth_oauth_filter_by_domain/readme/USAGE.md
new file mode 100644
index 0000000000..b2a92bbc78
--- /dev/null
+++ b/auth_oauth_filter_by_domain/readme/USAGE.md
@@ -0,0 +1,5 @@
+1. Go to **Settings > Users and Companies > OAuth Providers**.
+2. Add a comma-separated list of domains in the **Allowed Domains** field.
+3. Navigate to `/web/login`.
+ - Only providers with `Allowed Domains` matching the current domain will be displayed.
+ - If `Allowed Domains` is left empty, the provider will be visible on all domains.
diff --git a/auth_oauth_filter_by_domain/static/description/index.html b/auth_oauth_filter_by_domain/static/description/index.html
new file mode 100644
index 0000000000..c7714230ee
--- /dev/null
+++ b/auth_oauth_filter_by_domain/static/description/index.html
@@ -0,0 +1,446 @@
+
+
+
+
+
+OAuth Filter by Domain
+
+
+
+
+
OAuth Filter by Domain
+
+
+

+
This module allows to define a list of allowed_domains on
+‘auth.oauth.provider’ and shows only the relevant ones matching with the
+current domain
+
Table of contents
+
+
+
+
+- Go to Settings > Users and Companies > OAuth Providers.
+- Add a comma-separated list of domains in the Allowed Domains
+field.
+- Navigate to /web/login.
+- Only providers with Allowed Domains matching the current domain
+will be displayed.
+- If Allowed Domains is left empty, the provider will be visible
+on all domains.
+
+
+
+
+
+
+
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.
+
+
+
+
+
+
+
+
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 maintainer:
+

+
This module is part of the OCA/server-auth project on GitHub.
+
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
+
+
+
+
+
diff --git a/auth_oauth_filter_by_domain/views/auth_oauth_views.xml b/auth_oauth_filter_by_domain/views/auth_oauth_views.xml
new file mode 100644
index 0000000000..22613754d1
--- /dev/null
+++ b/auth_oauth_filter_by_domain/views/auth_oauth_views.xml
@@ -0,0 +1,13 @@
+
+
+
+
+ auth.oauth.provider
+
+
+
+
+
+
+
+
From 2d39310055588c81e357e527b29db649485b8857 Mon Sep 17 00:00:00 2001
From: natuan9
Date: Wed, 26 Mar 2025 12:37:04 +0700
Subject: [PATCH 2/3] [IMP] auth_oauth_filter_by_domain: pre-commit auto fixes
---
auth_oauth_filter_by_domain/README.rst | 10 +++++-----
auth_oauth_filter_by_domain/pyproject.toml | 3 +++
.../static/description/index.html | 6 +++---
auth_oauth_filter_by_domain/views/auth_oauth_views.xml | 1 -
4 files changed, 11 insertions(+), 9 deletions(-)
create mode 100644 auth_oauth_filter_by_domain/pyproject.toml
diff --git a/auth_oauth_filter_by_domain/README.rst b/auth_oauth_filter_by_domain/README.rst
index 813323053c..6cf9a0a99d 100644
--- a/auth_oauth_filter_by_domain/README.rst
+++ b/auth_oauth_filter_by_domain/README.rst
@@ -17,13 +17,13 @@ OAuth Filter by Domain
: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/16.0/auth_oauth_filter_by_domain
+ :target: https://github.com/OCA/server-auth/tree/18.0/auth_oauth_filter_by_domain
: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-auth_oauth_filter_by_domain
+ :target: https://translation.odoo-community.org/projects/server-auth-18-0/server-auth-18-0-auth_oauth_filter_by_domain
: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=16.0
+ :target: https://runboat.odoo-community.org/builds?repo=OCA/server-auth&target_branch=18.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -56,7 +56,7 @@ 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 `_.
+`feedback `_.
Do not contact contributors directly about support or help with technical issues.
@@ -96,6 +96,6 @@ Current `maintainer `__:
|maintainer-natuan9|
-This module is part of the `OCA/server-auth `_ project on GitHub.
+This module is part of the `OCA/server-auth `_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/auth_oauth_filter_by_domain/pyproject.toml b/auth_oauth_filter_by_domain/pyproject.toml
new file mode 100644
index 0000000000..4231d0cccb
--- /dev/null
+++ b/auth_oauth_filter_by_domain/pyproject.toml
@@ -0,0 +1,3 @@
+[build-system]
+requires = ["whool"]
+build-backend = "whool.buildapi"
diff --git a/auth_oauth_filter_by_domain/static/description/index.html b/auth_oauth_filter_by_domain/static/description/index.html
index c7714230ee..c8acd9bbf2 100644
--- a/auth_oauth_filter_by_domain/static/description/index.html
+++ b/auth_oauth_filter_by_domain/static/description/index.html
@@ -369,7 +369,7 @@ OAuth Filter by Domain
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:d6fb2d877d83aa1c11fd38c1143c3207c375d5d5361b64e3941fdaedcdf0272e
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-

+

This module allows to define a list of allowed_domains on
‘auth.oauth.provider’ and shows only the relevant ones matching with the
current domain
@@ -406,7 +406,7 @@
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.
+feedback.
Do not contact contributors directly about support or help with technical issues.
diff --git a/auth_oauth_filter_by_domain/views/auth_oauth_views.xml b/auth_oauth_filter_by_domain/views/auth_oauth_views.xml
index 22613754d1..87261c963f 100644
--- a/auth_oauth_filter_by_domain/views/auth_oauth_views.xml
+++ b/auth_oauth_filter_by_domain/views/auth_oauth_views.xml
@@ -1,6 +1,5 @@
-
auth.oauth.provider
From 23e0bd2eb227248bb35757ebbc180b40f1fbb8f2 Mon Sep 17 00:00:00 2001
From: natuan9
Date: Wed, 26 Mar 2025 12:57:47 +0700
Subject: [PATCH 3/3] [MIG] auth_oauth_filter_by_domain: Migration to 18.0
---
auth_oauth_filter_by_domain/__manifest__.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/auth_oauth_filter_by_domain/__manifest__.py b/auth_oauth_filter_by_domain/__manifest__.py
index 25801ca0e0..f4c4e9def6 100644
--- a/auth_oauth_filter_by_domain/__manifest__.py
+++ b/auth_oauth_filter_by_domain/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "OAuth Filter by Domain",
"summary": "Filter OAuth providers by domain",
- "version": "16.0.1.0.0",
+ "version": "18.0.1.0.0",
"website": "https://github.com/OCA/server-auth",
"author": "Kencove, Odoo Community Association (OCA)",
"maintainers": ["natuan9"],