264 Commits

Author SHA1 Message Date
0e975c9b95 Bump version 10.2.1 → 10.3.0
Improvements
------------

* Ensure the reset password token can be used only once.
* Change JWT access token structure to use standard `sub` claim instead of `user_id`.
    * ⚠ Existing JWT will be invalidated
* Change verify and reset password tokens structure to use standard `sub` claim instead of `user_id`.
2023-01-16 11:48:32 +01:00
b18389439a Use "sub" claim instead of "user_id" for JWT, verify and reset password tokens 2023-01-16 11:44:42 +01:00
794133c4fe Ensure reset password token is single use 2023-01-16 11:38:49 +01:00
4daa263326 Fix typing 2023-01-16 10:20:23 +01:00
1104460533 Bump version 10.2.0 → 10.2.1
Improvements
------------

* Bump `httpx-oauth >=0.4,<0.11`
    * With `httpx-oauth >= 0.10`, the OAuth2 client may be not able to return an email address depending on the OAuth Provider. In this case, the error `OAUTH_NOT_AVAILABLE_EMAIL` is raised during `/callback`. [[Documentation](https://fastapi-users.github.io/fastapi-users/10.2/usage/routes/#get-callback)]
* Enable Python 3.11 support in CI
2022-11-04 09:47:33 +01:00
c91e7657db Update for httpx-oauth >= 0.10 where account_email can be None 2022-11-04 09:35:51 +01:00
31ea8e4bc2 Bump version 10.1.5 → 10.2.0
New features
------------

* Trigger custom logic after user login with `on_after_login`. [[Documentation]()] Thanks @antont 🎉

Improvements
------------

* Bump dependencies:
    * `email-validator >=1.1.0,<1.4`
    * `pyjwt[crypto] ==2.5.0`
* Use Hatch for environment and package management
2022-10-18 09:02:47 +02:00
c9186b5382 Fix typing of samesite paramater in CookieTransport 2022-10-18 08:36:01 +02:00
7ad5f8073d on_after_login hook (#1092)
* on_after_login minimal impl.

Questions: is the spot logical for after method? Is after the internal login call.
Would before_login be needed? Maybe not, as auth is the way to do pre-login things.

Added fastapi request as a param just in case, as other callbacks had it too.

Docs addition is missing.

* tried to complete the implementation, but the test with user_manager.on_after_login.called fails though

* move on_after_login tests to right place, to TestLogin. These ones pass.

TODO: check TestCallback

* on_after_login tests to TestCallback too, for oauth. Apparently test_redirect_url_router fires the callback too, I guess that's correct, am not using oauth myself.

* fix formatting with make format

* docs for on_after_login

Co-authored-by: Toni Alatalo <toni.alatalo@gmail.com>
2022-10-18 08:02:01 +02:00
c7053e4621 Bump version: 10.1.4 → 10.1.5 2022-08-11 13:23:49 +02:00
6bc29dd23a Bump version: 10.1.3 → 10.1.4 2022-07-25 10:26:28 +02:00
d661585238 Revert "Cookie transport must return empty json and not null in response.data on login (#1037)"
This reverts commit 77d0077503d9d6b4dd206e3fc643d96bc3c5834c.
2022-07-25 10:23:55 +02:00
e25b82c090 Bump version: 10.1.2 → 10.1.3 2022-07-23 07:56:58 +00:00
d7a1e3420c Fix #1043: Add a prefix to the generated key in RedisStrategy 2022-07-23 07:53:57 +00:00
184d3ed101 Bump version: 10.1.1 → 10.1.2 2022-07-22 16:07:46 +02:00
77d0077503 Cookie transport must return empty json and not null in response.data on login (#1037)
* Fix: LoginResponse is set to application/json, and should return response with status code 204 when body is empty.

The database backend login response is a cookie header with empty body. This causes issues when integrating the openapi schema into openapi-generator. Because the code generator expects the response to be a JSON when the status code isn't 204.

* Fix: Bump fastapi version to appropriate version for status code 204 handling.

* Build a full response for CookieTransport login_response

Co-authored-by: Can H. Tartanoglu <2947298-caniko@users.noreply.gitlab.com>
Co-authored-by: François Voron <fvoron@gmail.com>
2022-07-22 15:53:56 +02:00
f38a35ec56 Bump version: 10.1.0 → 10.1.1 2022-06-21 10:01:35 +02:00
6f5b2b1503 Fix get_oauth_associate_router import to make it optional 2022-06-21 09:58:33 +02:00
f5f4ea482e Bump version: 10.0.7 → 10.1.0 2022-06-21 08:04:17 +02:00
f4338ca3df Handle UserAlreadyExists error in oauth callback route 2022-06-20 16:55:58 +02:00
ce15284fe9 Implement a router to associate an OAuth account with an authenticated user 2022-06-20 14:44:25 +02:00
64d3996415 Add flag to enable/disable email association with OAuth 2022-06-20 13:46:47 +02:00
3bb3728261 add on delete hook (#1014)
Co-authored-by: Schwannden Kuo <schwannden@mobagel.com>
2022-06-20 13:26:02 +02:00
2a6128c9fc Bump version: 10.0.6 → 10.0.7 2022-06-07 08:49:15 +02:00
c5ac2b0e6e Use newer version of Redis dependency incorporating async support 2022-06-07 08:43:41 +02:00
b59fc794f3 Bump version: 10.0.5 → 10.0.6 2022-05-27 09:49:39 +02:00
8121ad0b8c Bump version: 10.0.4 → 10.0.5 2022-05-25 08:50:21 +02:00
1b6b58c0e0 Manually cast user to User schema in routes to avoid issue #1000 2022-05-25 08:27:46 +02:00
e8635d9132 Bump version: 10.0.3 → 10.0.4 2022-05-19 14:45:22 +02:00
2477fdffc1 Bump version: 10.0.2 → 10.0.3 2022-05-10 08:42:09 +02:00
d0d1a0dea1 Bump version: 10.0.1 → 10.0.2 2022-05-06 15:04:15 +02:00
c1ce87b4fe Set orm_mode on BaseUser schema 2022-05-06 14:56:49 +02:00
15ce3eaab6 Bump version: 10.0.0 → 10.0.1 2022-05-06 13:20:33 +02:00
78be936297 Put exceptions in a dedicated module to avoid circular imports 2022-05-06 13:17:22 +02:00
5f57c75813 Fix AuthenticationBackend typing 2022-05-05 18:16:16 +02:00
685984e6e3 Bump version: 9.3.2 → 10.0.0 2022-05-05 14:58:45 +02:00
72aa68c462 Native model and generic ID (#971)
* Use a generic Protocol model for User instead of Pydantic

* Remove UserDB Pydantic schema

* Harmonize schema variable naming to avoid confusions

* Revamp OAuth account model management

* Revamp AccessToken DB strategy to adopt generic model approach

* Make ID a generic instead of forcing UUIDs

* Improve generic typing

* Improve Strategy typing

* Tweak base DB typing

* Don't set Pydantic schemas on FastAPIUsers class: pass it directly on router creation

* Add IntegerIdMixin and export related classes

* Start to revamp doc for V10

* Revamp OAuth documentation

* Fix code highlights

* Write the 9.x.x ➡️ 10.x.x migration doc

* Fix pyproject.toml
2022-05-05 14:51:19 +02:00
b7734fc8b0 Bump version: 9.3.1 → 9.3.2 2022-05-05 11:56:39 +02:00
05042b5a1e Bump version: 9.3.0 → 9.3.1 2022-04-21 11:23:10 +02:00
18954cc7bd Add simple solution to update of oauth with more consistent use of identifiers (#953) 2022-04-21 11:06:21 +02:00
6ba70bdbc6 Bump version: 9.2.6 → 9.3.0 2022-03-22 15:12:19 +01:00
7f6d038d91 Create a class helper to let configure the password hasher dynamically 2022-03-22 14:16:49 +01:00
b054383fbf Enable RS256/ES256 and other algorithms for JWT strategy (#943)
* Implement RS256 for JWT auth

* Update docs with RS256 example

* Added ES256 tests

* Format with isort and black

* Removed example RSA key pair (so as not to tempt people to use it)

* Added pyjwt[crypto] to requirements

* Removed pycryptodome by hardcoding example keys

* Removed unnecessary Tuple import from typing
2022-03-22 10:28:00 +01:00
0db2ce9d9e Bump version: 9.2.5 → 9.2.6 2022-03-16 09:05:43 +01:00
06ad0371fb Bump version: 9.2.4 → 9.2.5 2022-02-18 11:11:55 +01:00
e79b34ed35 Fix #922: allow DependencyCallable type to be generators 2022-02-18 11:04:56 +01:00
04e432acad Unique names for routes (#916) 2022-02-11 08:07:45 +01:00
29cfe8ae5e Bump version: 9.2.3 → 9.2.4 2022-02-07 08:57:19 +01:00
e3923d14b9 Bump version: 9.2.2 → 9.2.3 2022-02-01 09:29:58 +01:00
0583d7c88e Bump version: 9.2.1 → 9.2.2 2022-01-15 11:22:59 +01:00