-
-
Notifications
You must be signed in to change notification settings - Fork 492
[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
60
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.
Conversation
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
* Add module auth_signup_verify_email. * Import module following guidelines. * README typos. * OCA Transbot updated translations from Transifex * Credit creator. * author name correction * [9.0][MIG][auth_signup_verify_email] Migration. Migrate to v9. * [FIX] auth_signup_verify_email: Python library requirement * Add tests, fix xml tags, fix credits. * Fix test.
* Module set to installable * Odoo don't let signup without password
…ts and use email_validator (OCA#29) This addon introduced an integration conflict when tested in a database that had `mail_tracking_mass_mailing` installed, producing this failure: Traceback (most recent call last): File "/opt/odoo/auto/addons/auth_signup_verify_email/controllers/main.py", line 44, in passwordless_signup sudo_users.reset_password(values.get("login")) File "/usr/lib/python2.7/contextlib.py", line 24, in __exit__ self.gen.next() File "/opt/odoo/custom/src/odoo/odoo/sql_db.py", line 419, in savepoint self.execute('RELEASE SAVEPOINT "%s"' % name) File "/opt/odoo/custom/src/odoo/odoo/sql_db.py", line 154, in wrapper return f(self, *args, **kwargs) File "/opt/odoo/custom/src/odoo/odoo/sql_db.py", line 231, in execute res = self._obj.execute(query, params) InternalError: no such savepoint Which in turn produced the following in the next test: InternalError: current transaction is aborted, commands ignored until end of transaction block The problem comes from the fact that one cannot rollback to a nested savepoint if the parent savepoint was released. It became a problem because that's the strategy that both this addon and upstream's `TestCursor` follow. To avoid that, tests now mock the `send_mail` method. This results also in having a predictable outcome from the test `test_good_email`, so it is more meaningful now. Besides, previously we were using the `validate_email` package, which is currently a dead project that can silently fail under certain environments, as seen in syrusakbary/validate_email#80. There's the `email_validator` package, freely available, supported, and it provides a human-readable error message whenever some format from the email fails. As such, here I'm switching the dependency, while still adding a backwards compatibility layer for preexisting installations.
* When try to login with a not valid email domain it raised a 500 server error. Now we shwt the proper message "The domain name <domain> does not exist." * If there is any error we do not have catched when we do the email validation then we manage it and show the error message to the user instead of 500 server error. * When we try to register with a already registered email it raise "Something went wrong, please try again later or contact us". Now shows the message as odoo regular signup does: "Another user is already registered using this email address" which is more specific and clear for this case.
Currently translated at 100.0% (4 of 4 strings) Translation: server-auth-12.0/server-auth-12.0-auth_signup_verify_email Translate-URL: https://translation.odoo-community.org/projects/server-auth-12-0/server-auth-12-0-auth_signup_verify_email/pt_BR/
Currently translated at 100.0% (4 of 4 strings) Translation: server-auth-12.0/server-auth-12.0-auth_signup_verify_email Translate-URL: https://translation.odoo-community.org/projects/server-auth-12-0/server-auth-12-0-auth_signup_verify_email/hr/
This commit fixes 2 problems:
1. `auth_signup.allow_uninvited` ICP is no longer used.
The new equivalent is `auth_signup.invitation_scope=b2c`.
2. If running tests in an environment where `website` is installed,
the website needs to get public signup enabled or tests here would
fail with an error like this:
2020-02-19 12:36:31,686 35 INFO prod odoo.modules.module: odoo.addons.auth_signup_verify_email.tests.test_verify_email running tests.
2020-02-19 12:36:31,686 35 INFO prod odoo.addons.auth_signup_verify_email.tests.test_verify_email: test_bad_email (odoo.addons.auth_signup_verify_email.tests.test_verify_email.UICase)
2020-02-19 12:36:31,686 35 INFO prod odoo.addons.auth_signup_verify_email.tests.test_verify_email: ` Test rejection of bad emails.
2020-02-19 12:36:31,735 35 INFO ? odoo.http: HTTP Configuring static files
2020-02-19 12:36:31,738 35 INFO prod odoo.addons.base.models.ir_http: Generating routing map
2020-02-19 12:36:34,227 35 INFO prod werkzeug: 127.0.0.1 - - [19/Feb/2020 12:36:34] "GET /web/signup HTTP/1.1" 404 - 763 0.262 2.227
2020-02-19 12:36:34,231 35 ERROR prod odoo.addons.auth_signup_verify_email.tests.test_verify_email: ERROR
2020-02-19 12:36:34,231 35 INFO prod odoo.addons.auth_signup_verify_email.tests.test_verify_email: test_good_email (odoo.addons.auth_signup_verify_email.tests.test_verify_email.UICase)
2020-02-19 12:36:34,231 35 INFO prod odoo.addons.auth_signup_verify_email.tests.test_verify_email: ` Test acceptance of good emails.
2020-02-19 12:36:36,293 35 INFO prod werkzeug: 127.0.0.1 - - [19/Feb/2020 12:36:36] "GET /web/signup HTTP/1.1" 404 - 759 0.258 1.797
2020-02-19 12:36:36,296 35 ERROR prod odoo.addons.auth_signup_verify_email.tests.test_verify_email: ERROR
2020-02-19 12:36:36,297 35 INFO prod odoo.addons.auth_signup_verify_email.tests.test_verify_email: ======================================================================
2020-02-19 12:36:36,297 35 ERROR prod odoo.addons.auth_signup_verify_email.tests.test_verify_email: ERROR: test_bad_email (odoo.addons.auth_signup_verify_email.tests.test_verify_email.UICase)
2020-02-19 12:36:36,297 35 ERROR prod odoo.addons.auth_signup_verify_email.tests.test_verify_email: ` Test rejection of bad emails.
2020-02-19 12:36:36,297 35 ERROR prod odoo.addons.auth_signup_verify_email.tests.test_verify_email: Traceback (most recent call last):
2020-02-19 12:36:36,297 35 ERROR prod odoo.addons.auth_signup_verify_email.tests.test_verify_email: ` File "/opt/odoo/auto/addons/auth_signup_verify_email/tests/test_verify_email.py", line 20, in setUp
2020-02-19 12:36:36,297 35 ERROR prod odoo.addons.auth_signup_verify_email.tests.test_verify_email: ` "csrf_token": self.csrf_token(),
2020-02-19 12:36:36,297 35 ERROR prod odoo.addons.auth_signup_verify_email.tests.test_verify_email: ` File "/opt/odoo/auto/addons/auth_signup_verify_email/tests/test_verify_email.py", line 33, in csrf_token
2020-02-19 12:36:36,297 35 ERROR prod odoo.addons.auth_signup_verify_email.tests.test_verify_email: ` return doc.xpath("//input[@name='csrf_token']")[0].get("value")
2020-02-19 12:36:36,297 35 ERROR prod odoo.addons.auth_signup_verify_email.tests.test_verify_email: ` IndexError: list index out of range
2020-02-19 12:36:36,297 35 INFO prod odoo.addons.auth_signup_verify_email.tests.test_verify_email: ======================================================================
2020-02-19 12:36:36,298 35 ERROR prod odoo.addons.auth_signup_verify_email.tests.test_verify_email: ERROR: test_good_email (odoo.addons.auth_signup_verify_email.tests.test_verify_email.UICase)
2020-02-19 12:36:36,298 35 ERROR prod odoo.addons.auth_signup_verify_email.tests.test_verify_email: ` Test acceptance of good emails.
2020-02-19 12:36:36,298 35 ERROR prod odoo.addons.auth_signup_verify_email.tests.test_verify_email: Traceback (most recent call last):
2020-02-19 12:36:36,298 35 ERROR prod odoo.addons.auth_signup_verify_email.tests.test_verify_email: ` File "/opt/odoo/auto/addons/auth_signup_verify_email/tests/test_verify_email.py", line 20, in setUp
2020-02-19 12:36:36,298 35 ERROR prod odoo.addons.auth_signup_verify_email.tests.test_verify_email: ` "csrf_token": self.csrf_token(),
2020-02-19 12:36:36,298 35 ERROR prod odoo.addons.auth_signup_verify_email.tests.test_verify_email: ` File "/opt/odoo/auto/addons/auth_signup_verify_email/tests/test_verify_email.py", line 33, in csrf_token
2020-02-19 12:36:36,298 35 ERROR prod odoo.addons.auth_signup_verify_email.tests.test_verify_email: ` return doc.xpath("//input[@name='csrf_token']")[0].get("value")
2020-02-19 12:36:36,298 35 ERROR prod odoo.addons.auth_signup_verify_email.tests.test_verify_email: ` IndexError: list index out of range
2020-02-19 12:36:36,298 35 INFO prod odoo.addons.auth_signup_verify_email.tests.test_verify_email: Ran 2 tests in 4.611s
2020-02-19 12:36:36,298 35 ERROR prod odoo.addons.auth_signup_verify_email.tests.test_verify_email: FAILED
2020-02-19 12:36:36,298 35 INFO prod odoo.addons.auth_signup_verify_email.tests.test_verify_email: (errors=2)
2020-02-19 12:36:36,298 35 ERROR prod odoo.modules.module: Module auth_signup_verify_email: 0 failures, 2 errors
@Tecnativa TT21005
Currently translated at 100.0% (4 of 4 strings) Translation: server-auth-13.0/server-auth-13.0-auth_signup_verify_email Translate-URL: https://translation.odoo-community.org/projects/server-auth-13-0/server-auth-13-0-auth_signup_verify_email/ar/
In one part of the CI pipeline, the IANA example domains are not accepted, getting this message from `email_validator` library: The domain name example.com does not accept email So we switch to a real domain for avoiding the problem, using our famous main OCA list address, which at the end, it's not secret and won't be disabled in a short future.
Currently translated at 100.0% (4 of 4 strings) Translation: server-auth-16.0/server-auth-16.0-auth_signup_verify_email Translate-URL: https://translation.odoo-community.org/projects/server-auth-16-0/server-auth-16-0-auth_signup_verify_email/es/
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: server-auth-17.0/server-auth-17.0-auth_signup_verify_email Translate-URL: https://translation.odoo-community.org/projects/server-auth-17-0/server-auth-17-0-auth_signup_verify_email/
Currently translated at 100.0% (4 of 4 strings) Translation: server-auth-17.0/server-auth-17.0-auth_signup_verify_email Translate-URL: https://translation.odoo-community.org/projects/server-auth-17-0/server-auth-17-0-auth_signup_verify_email/it/
Currently translated at 100.0% (4 of 4 strings) Translation: server-auth-17.0/server-auth-17.0-auth_signup_verify_email Translate-URL: https://translation.odoo-community.org/projects/server-auth-17-0/server-auth-17-0-auth_signup_verify_email/fi/
Lines removed tries to write on `client_id` attribute of the `oauth.provider.client` which do not have such an attribute. Theses sentences seams useless, so I removed it.
This module uses the method `get_frontend_session_info()` from `ir.http`, and this method is defined in the web module.
The bug is introduced by commit d46db56. The oauth.provider.client model is used to fill the `request.client` field in the _load_client() method of the OdooValidator class. The oauthlib python library need that the `client` object set in the `request` by the OdooValidator must contain an attribute named `client_id` which must contain the identifier of the oauth.provider.client. In other words the `client_id` attribute of the `client` object must contain the `client_id` that is posted by the HTTP request to the server. Source here: https://github.com/oauthlib/oauthlib/blob/dab6a5ae1830ddd8a79c1e9687f63508eae60b57/oauthlib/oauth2/rfc6749/grant_types/authorization_code.py#L471-L474 The client_id was previously not part of the `oauth.provider.client` odoo model because it conflict in term of nomenclature with the odoo way of defining fields name. So it was added on the fly after for the record given to the oauthlib. Now, its not allowed to add such field like this, and doing that without explanation is quite confusing. So now the field with a name that breaks the Odoo nomenclature is added with a comment so that we can understand the exception done here.
…wrappers.BaseResponse
9f4f4a7 to
674e0cd
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
No description provided.