299 Commits

Author SHA1 Message Date
9d78b2a35d Bump version 14.0.0 → 14.0.1
Improvements
------------

* Bump dependencies
    * `pyjwt[crypto] ==2.10.1`
    * `python-multipart ==0.0.20`
2025-01-04 14:16:19 +01:00
38fe6cd530 Bump version 13.0.0 → 14.0.0
Breaking changes
----------------

* Drop Python 3.8 support

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

* Bump dependencies:
    * `python-multipart ==0.0.17`
    * `pwdlib[argon2,bcrypt] ==0.2.1`
    * `pyjwt[crypto] ==2.9.0`
2024-11-03 13:16:05 +00:00
caa17889e1 Drop Python 3.8 support 2024-11-03 12:51:32 +00:00
7f92a82e07 Fix linting 2024-11-03 12:46:46 +00:00
abfa9a1c47 Improve type hints (#1401)
* Add type parameters to `AuthenticationBackend`

* add more type-hints
2024-07-14 15:04:13 +02:00
61dba2694c Bump version 12.1.3 → 13.0.0
Breaking change
---------------

The underlying password hashing library has been changed from `passlib` to `pwdlib`. This change is breaking only if you were using a custom `CryptContext`. Otherwise, you can upgrade without any changes.

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

* Python 3.12 support
* Password are now hashed using the Argon2 algorithm by default. Passwords created with the previous default algorithm (bcrypt) will still be verified correctly and upgraded to Argon2 when the user logs in.
* Bump dependencies
  * `python-multipart ==0.0.9`
2024-03-11 14:16:20 +01:00
f7a31c579d Replace passlib in favor of pwdlib 2024-03-11 14:04:50 +01:00
e7972561c0 Upgrade and apply Ruff linting 2024-03-11 13:51:43 +01:00
a4287b8586 Fix utcnow deprecation warning (#1369) 2024-03-11 13:25:36 +01:00
ae9f52474b Bump version 12.1.2 → 12.1.3
Improvements
------------

* Bump dependenciess
    * `python-multipart ==0.0.7`
2024-02-05 09:51:04 +01:00
9d07464be1 Upgrade linting configuration 2024-02-05 09:20:38 +01:00
ff9fae631c Bump version 12.1.1 → 12.1.2
Bug fixes
---------

* Fix a bug when trying to update user with a `None` password. Thanks @fotinakis 🎉
* Fix static type checking error with `AccessTokenProtocol`. Thanks @Nerixjk 🎉

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

* Bump dependencies
    * `redis >=4.3.3,<6.0.0`
2023-08-26 10:23:06 +02:00
0bf4e218f0 Fix password update None handling. (#1275) 2023-08-26 10:14:26 +02:00
830898c5bf Fix #1262: Remove __init__ in models protocols to fix typing error with Pylance (#1266)
Replication of original fix for #1262 to the AccessTokenProtocol class.
2023-08-10 09:13:59 +02:00
a40dc214c4 Bump version 12.1.0 → 12.1.1
Bug fixes and improvements
--------------------------

* Add missing `request` parameter to `UserManager.delete`. Thanks @hgalytoby 🎉
* Remove dummy `__init__` method from models protocols to fix Pylance typing error. Thanks @Nerixjk 🎉
* Bump dependencies:
    * `pyjwt[crypto] ==2.8.0`
2023-08-08 11:47:57 +02:00
54590167a6 Fix #1262: Remove __init__ in models protocols to fix typing error with Pylance 2023-08-08 11:40:33 +02:00
fe932fee19 Add request parameter to delete user method (#1258)
* add request parameter to delete_user method.

* Docs: Add request parameter to docstring
2023-07-26 13:10:03 +02:00
a3cf1bcee8 Bump version 12.0.0 → 12.1.0
Pydantic V2 support
-------------------

This version brings Pydantic V2 support. Like FastAPI, it keeps backward-compatibility with Pydantic V1, so you can upgrade safely and at your own pace.

Apart your own Pydantic schemas, no changes are needed to your FastAPI Users setup.

Thanks @AdamIsrael for the initial work and research 🎉
2023-07-12 11:06:47 +02:00
a7b77cac73 Create a dedicated test environment and fix coverage/typing issues to support Pydantic V2 2023-07-12 10:54:51 +02:00
e17bb609ae Add compatibility layer for Pydantic V2 2023-07-12 10:44:22 +02:00
69f96c1f49 Bump version 11.0.0 → 12.0.0
Breaking changes
----------------

* Drop Python 3.7 support
2023-06-27 15:42:56 +02:00
0605920c21 Drop Python 3.7 support 2023-06-27 15:30:38 +02:00
b1bce5d765 Add AsyncIterator to the DependencyCallable type (#1235)
* add AsyncIterator to the DependencyCallable type

* fix linting issues
2023-06-23 10:38:00 +02:00
aa5ef9ff3b Bump version 10.4.2 → 11.0.0
Breaking changes
----------------

* Transport classes now always build full response objects instead of using the implicit FastAPI `Response` object.
    * If you were not implementing your own custom transport classes, you will have nothing to do.
    * If you implemented custom classes, you should adapt them so they return a `Response` object. [[Example](8959a12d56/fastapi_users/authentication/transport/bearer.py)]
* Cookie transport now returns a proper `204 No Content` response on logout, which should please OpenAPI Generators. Thanks @caniko 🎉

New features
------------

* `on_after_login` method now accepts `response` in argument, which is the `Response` object built by the transport. [[Documentation](https://fastapi-users.github.io/fastapi-users/latest/configuration/user-manager/#on_after_login)] Thanks @sorasful 🎉

Bug fixes
---------

* Fix #1166: add type hint to /users/{id} routes. Thanks @gegnew 🎉
* Fix `/verify` route returning `null` user ID with Beanie. Thanks @jankadel 🎉
2023-04-29 13:54:02 +02:00
8959a12d56 Update verify.py (#1200)
* Update verify.py

When using a schema setup as proposed in the documentation like: ReadUser, CreateUser, UpdateUser and BaseUser in the combination with MongoDB / Beanie, the verify() method will not "enforce" the `user_schema` but instead will return the `BaseUser` which will cause serialisation errors as such:

```
pydantic.error_wrappers.ValidationError: 1 validation error for ReadUser
response -> id
```
because the mapping between MongoDBs internal `_id` and the Pydantic `id` does not work.

* use `from_orm`
2023-04-29 10:21:01 +02:00
a63264c99e Fix #1166: add type hint to /users/{id} routes 2023-04-27 09:41:22 +02:00
8fd097cbc8 Revamp Transport so they always build a full Response object (#1049)
* Revamp Transport so they always build a full Response object

* Fix linting

* Add private methods to set cookies on CookieTransport

* Change on_after_login login_return parameter to response
2023-04-27 09:32:49 +02:00
4e426d6823 Add login_return to on_after_login method (#1187) 2023-04-14 16:10:22 +02:00
bcae3e53ba Bump version 10.4.1 → 10.4.2
Documentation
-------------

* Update documentation for Beanie.
2023-04-14 15:50:07 +02:00
525c1866a7 Bump version 10.4.0 → 10.4.1
Bug fixes & improvements
---------

* Fix #1172: missing `is_verified_by_default` argument on `get_oauth_router` method
* Bump dependencies:
    * `python-multipart ==0.0.6`
2023-03-15 13:48:37 +01:00
982acb13fb Fix typings 2023-03-15 13:42:57 +01:00
5561a528db Fix #1172: expose is_verified_by_default argument on FastAPIUsers.get_oauth_router 2023-03-15 13:33:52 +01:00
7fbab34f98 Bump version 10.3.0 → 10.4.0
New features
------------

* SQLAlchemy 2.0 support [[Documentation](https://fastapi-users.github.io/fastapi-users/10.4/configuration/databases/sqlalchemy/)]
    * If you need to stay on SQLAlchemy 1.4, you can pin this dependency: `fastapi-users-db-sqlalchemy<5.0.0`
* Allow to set `is_verified` flag to `True` by default after OAuth registration [[Documentation](https://fastapi-users.github.io/fastapi-users/10.4/configuration/oauth/#set-is_verified-to-true-by-default)]

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

* Bump dependencies
    * `httpx-oauth >=0.4,<0.12`
2023-02-13 17:48:26 +01:00
9b57fa2e73 Allow to set is_verified to True after OAuth callback 2023-02-13 17:42:31 +01:00
5c48283155 Update docs for SQLAlchemy 2.0 2023-02-13 17:28:49 +01:00
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