Commit Graph

315 Commits

Author SHA1 Message Date
Stanislav
9b44227397 missing space 2025-12-25 19:31:42 +01:00
François Voron
81a06798c1 Bump version 15.0.2 → 15.0.3
Bug fixes and improvements
--------------------------

* Add cookie parameters added in 15.0.1 to `FastAPIUsers.get_oauth_router` and `FastAPIUsers.get_oauth_associate_router`. Thanks @jthurner 🎉
2025-12-19 10:37:01 +01:00
François Voron
55dfc07267 Fix OAuth imports in fastapi_users when httpx-oauth is not installed 2025-12-19 10:32:07 +01:00
Joschka Thurner
ba507a78b4 add csrf token config parameters to main oauth router getter function 2025-12-19 10:22:41 +01:00
François Voron
1df7c1038d Bump version 15.0.1 → 15.0.2
🛡️ Security Fix
----------------

A CSRF vulnerability was identified in the OAuth2 flow. To mitigate this, the authorize endpoint will set a cookie in the response, and this cookie will be expected in the callback request.

In most cases, this change should work out-of-the-box, but in certain scenarios (e.g. cross-domain setups), additional configuration may be required for the cookie to be correctly sent and received. [[Read more](https://fastapi-users.github.io/fastapi-users/dev/configuration/oauth/#csrf-cookie-configuration)]

**Thanks to @davidbors-snyk from [Snyk](https://github.com/snyk) for his research, responisble disclosure, and assistance in fixing this issue.**

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

* Bump dependencies
    * `python-multipart ==0.0.21`
    * `pwdlib[argon2,bcrypt] ==0.3.0`
2025-12-19 08:28:45 +01:00
François Voron
7cf413cd76 Add a double-submit cookie in the OAuth flow
Prevents CSRF attacks by ensuring that the state parameter is tied to a cookie.

Fix https://github.com/fastapi-users/fastapi-users/security/advisories/GHSA-5j53-63w8-8625
2025-12-19 08:26:26 +01:00
François Voron
119a5ca40e Bump version 15.0.0 → 15.0.1
Announcement
-------------

FastAPI Users is now in maintenance mode.** While we'll continue to provide security updates and dependency maintenance, no new features will be added. We encourage you to explore the project and use it as-is, knowing it will remain stable and secure.

[[Read more](https://github.com/fastapi-users/fastapi-users/discussions/1543)]

Bug fixes
---------

* Handle expired JWT when handling OAuth callback (#1462). Thanks @mdaffad 🎉
2025-10-25 08:48:05 +02:00
François Voron
c09b16fbfe Fix docstring 2025-10-25 08:47:52 +02:00
Muhammad Daffa Dinaya
8404f24b62 chore: lint 2025-10-25 08:43:58 +02:00
Muhammad Daffa Dinaya
5863445774 fix: add expired token error on oauth callback 2025-10-25 08:43:58 +02:00
othmane099
576683cccd Refactor and update docs in manager.py 2025-10-25 08:42:36 +02:00
François Voron
35668e29ad Bump version 14.0.2 → 15.0.0
Announcement
-------------

FastAPI Users is now in maintenance mode.** While we'll continue to provide security updates and dependency maintenance, no new features will be added. We encourage you to explore the project and use it as-is, knowing it will remain stable and secure.

Breaking changes
----------------

* Drop Python 3.9 support.
* Drop Pydantic v1 support.

If you still need them, you can install [v14.0.2](https://github.com/fastapi-users/fastapi-users/releases/tag/v14.0.2), which was updated at the same time as this release.
2025-10-25 08:32:14 +02:00
François Voron
cd53bb8c5e Drop Pydantic v1 support 2025-10-25 08:27:54 +02:00
François Voron
fcf9a2041a Drop Python 3.9 support 2025-10-25 08:19:03 +02:00
François Voron
04e7b4125b Bump version 14.0.1 → 14.0.2
Announcements
-------------

* This is the last release to support Python 3.9 and Pydantic v1.
* FastAPI Users is now in maintenance mode.** While we'll continue to provide security updates and dependency maintenance, no new features will be added. We encourage you to explore the project and use it as-is, knowing it will remain stable and secure.

Bug fixes and improvements
--------------------------

* Bump dependencies:
    * `email-validator >=1.1.0,<2.4`
    * `redis >=4.3.3,<8.0.0`
2025-10-25 08:00:45 +02:00
Tommaso Comparin
76d7f5a2ec Fix :param verified in current_user and current_user_token docstring 2025-10-24 17:27:11 +02:00
François Voron
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
François Voron
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
François Voron
caa17889e1 Drop Python 3.8 support 2024-11-03 12:51:32 +00:00
François Voron
7f92a82e07 Fix linting 2024-11-03 12:46:46 +00:00
Alexander Zinov
abfa9a1c47 Improve type hints (#1401)
* Add type parameters to `AuthenticationBackend`

* add more type-hints
2024-07-14 15:04:13 +02:00
François Voron
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
François Voron
f7a31c579d Replace passlib in favor of pwdlib 2024-03-11 14:04:50 +01:00
François Voron
e7972561c0 Upgrade and apply Ruff linting 2024-03-11 13:51:43 +01:00
Matthew D. Scholefield
a4287b8586 Fix utcnow deprecation warning (#1369) 2024-03-11 13:25:36 +01:00
François Voron
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
François Voron
9d07464be1 Upgrade linting configuration 2024-02-05 09:20:38 +01:00
François Voron
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
Mike Fotinakis
0bf4e218f0 Fix password update None handling. (#1275) 2023-08-26 10:14:26 +02:00
Nerixjk
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
François Voron
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
François Voron
54590167a6 Fix #1262: Remove __init__ in models protocols to fix typing error with Pylance 2023-08-08 11:40:33 +02:00
dudulu
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
François Voron
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
François Voron
a7b77cac73 Create a dedicated test environment and fix coverage/typing issues to support Pydantic V2 2023-07-12 10:54:51 +02:00
François Voron
e17bb609ae Add compatibility layer for Pydantic V2 2023-07-12 10:44:22 +02:00
François Voron
69f96c1f49 Bump version 11.0.0 → 12.0.0
Breaking changes
----------------

* Drop Python 3.7 support
2023-06-27 15:42:56 +02:00
François Voron
0605920c21 Drop Python 3.7 support 2023-06-27 15:30:38 +02:00
Justin Thomas
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
François Voron
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
0xJan
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
François Voron
a63264c99e Fix #1166: add type hint to /users/{id} routes 2023-04-27 09:41:22 +02:00
François Voron
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
Téva KRIEF
4e426d6823 Add login_return to on_after_login method (#1187) 2023-04-14 16:10:22 +02:00
François Voron
bcae3e53ba Bump version 10.4.1 → 10.4.2
Documentation
-------------

* Update documentation for Beanie.
2023-04-14 15:50:07 +02:00
François Voron
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
François Voron
982acb13fb Fix typings 2023-03-15 13:42:57 +01:00
François Voron
5561a528db Fix #1172: expose is_verified_by_default argument on FastAPIUsers.get_oauth_router 2023-03-15 13:33:52 +01:00
François Voron
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
François Voron
9b57fa2e73 Allow to set is_verified to True after OAuth callback 2023-02-13 17:42:31 +01:00