François Voron
617246a438
Start to revamp doc for V10
2022-05-05 09:33:34 +02:00
François Voron
6b5226c74a
Add IntegerIdMixin and export related classes
2022-05-05 08:32:02 +02:00
François Voron
940b2091b1
Don't set Pydantic schemas on FastAPIUsers class: pass it directly on router creation
2022-05-04 11:25:39 +02:00
François Voron
2cf0ebcdaa
Improve Strategy typing
2022-05-01 13:57:26 +02:00
François Voron
b6d7c6a621
Improve generic typing
2022-05-01 13:48:06 +02:00
François Voron
7093c9e38a
Make ID a generic instead of forcing UUIDs
2022-05-01 11:18:27 +02:00
François Voron
87ac51a7bd
Revamp AccessToken DB strategy to adopt generic model approach
2022-04-29 15:45:14 +02:00
François Voron
e271cc1352
Revamp OAuth account model management
2022-04-29 15:21:52 +02:00
François Voron
83ca318ceb
Harmonize schema variable naming to avoid confusions
2022-04-29 14:02:44 +02:00
François Voron
056b0453a2
Remove UserDB Pydantic schema
2022-04-29 13:53:16 +02:00
François Voron
923aeb970e
Use a generic Protocol model for User instead of Pydantic
2022-04-29 13:49:21 +02:00
François Voron
bce37a1116
Fix unit test following httpx-oauth update
2022-04-21 11:20:32 +02:00
François Voron
7f6d038d91
Create a class helper to let configure the password hasher dynamically
2022-03-22 14:16:49 +01:00
Joe Taylor
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
François Voron
533504634f
Improve dependencies typing
2022-01-15 11:08:49 +01:00
François Voron
53271a32c5
Implement database strategy ( #833 )
...
* Implement database strategy
* Export generic AccessToken type
* Apply formatting
2021-12-31 14:43:39 +01:00
François Voron
c4de66b81c
Revamp authentication ( #831 )
...
* Implement Transport classes
* Implement authentication strategy classes
* Revamp authentication with Transport and Strategy
* Revamp strategy and OAuth so that they can use a callable dependency
* Update docstring
* Make ErrorCode a proper Enum and cleanup unused OpenAPI utils
* Remove useless check
* Tweak typing in authenticator
* Update docs
* Improve logout/destroy token logic
* Update docs
* Update docs
* Update docs and full examples
* Apply formatting to examples
* Update OAuth doc and examples
* Add migration doc
* Implement Redis session token
* Add Redis Session documentation
* RedisSession -> Redis
* Fix links in docs
2021-12-30 15:22:07 +01:00
Matyáš Richter
2e8f1f2eb2
Fixed #823 ( #824 )
...
* Added a failing test for the multi-oauth-router issue
* Fixed the #823 regression.
Using a regex for the backend name validation instead of an enum.
* Fixed formatting errors
* Moved the `AuthenticationBackendName` enum to `Authenticator`
This prevents an issue with OpenAPI schema generation caused by two
endpoints accepting a parameter with a duplicate name.
2021-12-29 13:25:15 +01:00
Matyáš Richter
c759bb6915
Extending generated OpenAPI docs ( #799 )
...
* Added login endpoint docs
* make format
* Changed login route into multiple examples.
* Added reset password router docs
* Updated /{id} routes for user
* Updated /me routes
* Fixed user already exists response description
* Updated the /register route
* Updated verify routes
* Updated oauth2 endpoints.
* Applied `make format`
* Renamed Authentication methods for getting their openapi schemas
- `get_login_responses_success` -> `get_openapi_login_responses_success`
- `get_logout_responses_success` -> `get_openapi_logout_responses_success`
* Fixed flake8 errors
* Not using `Final` to keep python37 compatibility
Co-authored-by: François Voron <fvoron@gmail.com >
2021-11-23 13:13:51 +01:00
Matyáš Richter
48d1be87a4
Added codestyle check and lint to the build action ( #798 )
...
* Applied `make format`
* Added format-check to makefile
* Added a "Check codestyle" step to the build action.
* Rerun `make format`
* Added a "lint" target to makefile
* Added lint step to the build action
* Added W503 to the list of ignored flake8 errors.
See https://www.flake8rules.com/rules/W503.html
2021-11-23 08:13:11 +01:00
Matyáš Richter
f578a01a8b
Updated OAuth2 router generator for better OpenAPI docs ( #793 )
...
* Added OAuth2 authorize route response_model
* Changed OAuth2 "authorize" route backend param type.
On OAuth2 router creation, an enum is created for the `authentication_backend` parameter. This allows us to generate OpenAPI docs correctly.
* Reformatted with "make format"
* Updated OAuth2 authorize url docs
- /authorize now returns 422 instead of 400 for an invalid authentication backend
2021-11-10 07:55:40 +01:00
jakemanger
9eb49482c7
Users now become unverified when email is changed ( #783 )
...
* Users now become unverified when email is changed
Occurs when updating user.email to a new value
* changed wording
2021-11-07 10:04:06 +01:00
Brandon H. Goding
0c45cbc179
Add a name on every route #762 ( #774 )
...
* Names for urls added
* Tests for Login/Logout Names
* Register Name Test
* tests/test_router_reset.py
* Tests to verify url names in users router
* Test Verify Router Names
* oauth routes updated with prefix
* Test for authorize. Didn't right test for callback as covered under other tests
2021-11-02 08:12:43 +01:00
Yasser Tahiri
872b85de03
Code Expression ( #1 ) ( #767 )
...
* Replace unused `for` index with underscore
* Use `items()` to directly unpack dictionary values
* Merge duplicate blocks in conditional
* Use `any()` instead of for loop
* Format __init__.py
2021-10-16 09:29:34 +02:00
François Voron
eb47dc8e75
Pass user_manager instance in get_login_response/get_logout_response
2021-09-21 08:28:25 +02:00
François Voron
e819bb0b65
Add get_enabled_backends advanced feature
2021-09-21 08:20:07 +02:00
François Voron
ab06778adf
Fix #733 : don't raise error when updating user with same email
2021-09-20 08:49:19 +02:00
François Voron
69f18cff47
Put user_db_model as attribute of UserManager
2021-09-17 11:24:49 +02:00
François Voron
de86456af2
Add some manager tests
2021-09-15 15:20:28 +02:00
François Voron
4aac218d8a
Add manager pytest marker
2021-09-15 14:49:49 +02:00
François Voron
6fca8d1306
Add a test for JWT helpers
2021-09-15 14:45:28 +02:00
François Voron
5cba969679
Refactor verify logic into manager
2021-09-15 14:36:04 +02:00
François Voron
1aea32ca4a
Tweak unit test
2021-09-15 13:35:28 +02:00
François Voron
3bdae94869
Refactor OAuth logic into manager
2021-09-15 11:57:17 +02:00
François Voron
9673e0a5fd
Move on_after_update to manager
2021-09-15 09:34:28 +02:00
François Voron
663b7405a7
Move forgot/reset password logic to manager
2021-09-15 09:13:11 +02:00
François Voron
38d4aed817
Move on_after_register to manager
2021-09-14 15:02:17 +02:00
François Voron
8967138375
Inject a user manager dep callable directly to FastAPIUsers
2021-09-14 14:39:59 +02:00
François Voron
480a6bc4df
Move validate_password into UserManager
2021-09-14 14:01:57 +02:00
François Voron
fdc8e54253
Improve generic typing
2021-09-14 11:53:43 +02:00
François Voron
90aee2d487
Tweak unit tests
2021-09-14 11:30:41 +02:00
François Voron
bdf1ae5663
Fix test coverage of reset router
2021-09-14 11:27:48 +02:00
François Voron
e2395998e4
Fix unit tests of authentication classes
2021-09-14 11:24:32 +02:00
François Voron
dade8c263d
Revamp implementation with a manager layer and db class as dependency callable
2021-09-14 11:12:34 +02:00
François Voron
370194ff6e
Remove deprecated dependency callables
2021-09-09 12:15:06 +02:00
François Voron
7ae2042500
Fix #701 : factorize JWT handling and support secrets as SecretStr
2021-09-09 11:51:55 +02:00
Daan Beverdam
e59fb2c9b9
Return 403 instead of 401 when a user is known ( #705 )
...
* return 403 instead of 401 if user is known
* return 403 for unverified users
* updated docs
2021-09-04 18:11:48 +02:00
François Voron
83873338f3
Refactor models
2021-08-29 17:00:45 +02:00
François Voron
848315badc
Remove DB dependencies ( #704 )
...
* Remove database adapter in favor of external dependencies
* Prevent flit from installing all optional dependencies when testing build
* Remove MongoDB service during CI build
2021-08-27 17:01:50 +02:00
François Voron
9924ee702c
Fix users delete tests
2021-07-03 20:25:04 +02:00