François Voron
78be936297
Put exceptions in a dedicated module to avoid circular imports
2022-05-06 13:17:22 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
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
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
7f6d038d91
Create a class helper to let configure the password hasher dynamically
2022-03-22 14:16:49 +01:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
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
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
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
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
eb47dc8e75
Pass user_manager instance in get_login_response/get_logout_response
2021-09-21 08:28:25 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
e819bb0b65
Add get_enabled_backends advanced feature
2021-09-21 08:20:07 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
69f18cff47
Put user_db_model as attribute of UserManager
2021-09-17 11:24:49 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
5cba969679
Refactor verify logic into manager
2021-09-15 14:36:04 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
3bdae94869
Refactor OAuth logic into manager
2021-09-15 11:57:17 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
9673e0a5fd
Move on_after_update to manager
2021-09-15 09:34:28 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
663b7405a7
Move forgot/reset password logic to manager
2021-09-15 09:13:11 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
38d4aed817
Move on_after_register to manager
2021-09-14 15:02:17 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
8967138375
Inject a user manager dep callable directly to FastAPIUsers
2021-09-14 14:39:59 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
480a6bc4df
Move validate_password into UserManager
2021-09-14 14:01:57 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
90aee2d487
Tweak unit tests
2021-09-14 11:30:41 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
e2395998e4
Fix unit tests of authentication classes
2021-09-14 11:24:32 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
dade8c263d
Revamp implementation with a manager layer and db class as dependency callable
2021-09-14 11:12:34 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
7ae2042500
Fix #701 : factorize JWT handling and support secrets as SecretStr
2021-09-09 11:51:55 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
83873338f3
Refactor models
2021-08-29 17:00:45 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
5267e605f4
Implement password validation mechanism ( #632 )
...
* Implement password validation mechanism
* Add invalid password reason
* Always pass user in password validator
* Add password validation documentation
2021-05-17 08:58:23 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
902bcdb8d2
Fix MongoDB unit tests
2021-03-19 18:18:06 +01:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
8eb53f4744
Fix #515 : remove calls to deprecated user callables in internal codebase
2021-03-04 17:50:19 +01:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
373157c284
Finalize user activation feature ( #439 )
...
* Add routes for user activation (#403 )
* Add routes for user activation
Generate a token after creating the user in register route, passing to `activation_callback`, if `activation_callback` supplied
Create new `/activate` route that will verify the token and activate the user
Add new error codes to `fastapi_users/router/common.py`
Update documentation
Add tests
Co-authored-by: Mark Todd <markpeter.todd@hotmail.co.uk >
* Rework routes for user activation
* Separate verification logic and token generation into `/fastapi_users/router/verify.py`, with per-route callbacks for custom behaviour
* Return register router to original state
* Added `is_verified` property to user models
* Added `requires_verification` argument to `get_users_router`and `get_auth_router`
* Additional dependencies added for verification in `fastapi_users/authentication/__init__.py`
* Update tests for new behaviour
* Update `README.md` to describe a workaround for possible problems during testing, by exceeding ulimit file descriptor limit
Co-authored-by: Mark Todd <markpeter.todd@hotmail.co.uk >
* Restored docs to original state.
* All other modifications reqested added
Kebab-case on request-verify-token
SECRET now used as test string
Other minor changes
Co-authored-by: Mark Todd <markpeter.todd@hotmail.co.uk >
* Embed token in body in verify route
* Reorganize checks in verify route and add unit test
* Ignore coverage on Protocol classes
* Tweak verify_user function to take full user in parameter
* Improve unit tests structure regarding parametrized test client
* Make after_verification_request optional to be more consistent with other routers
* Tweak status codes on verify routes
* Write documentation for verification feature
* Add not released warning on verify docs
Co-authored-by: Edd Salkield <edd@salkield.uk >
Co-authored-by: Mark Todd <markpeter.todd@hotmail.co.uk >
2021-01-12 10:44:42 +01:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
46b9d90ec4
Apply isort to test files
2020-10-14 14:12:04 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
ad56933836
Bump dependencies
2020-10-14 14:11:51 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
SelfhostedPro
8adce74cd9
added samesite option for cookie authentication ( #337 )
...
* added samesite option for cookie authentication
* formatted with black and added documentation (grabbed from starlette.io documentation)
2020-09-30 07:27:25 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
4273076831
Add unit test to check email validation
2020-07-20 11:25:50 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
b7dbdf6ea6
Fix #245 : handle email as case insensitive while retrieving user in DB ( #250 )
...
* Add unit tests to enforce email case insensitivity
* Handle email as case insentitive while retrieving user in DB
* Apply isort/black
* Add migration doc
2020-07-09 18:44:25 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
Eric Lopes
75147a7071
fix documentation tokenUrl ( #210 )
...
* fix documentation tokenUrl
* Change default login tokenUrl
2020-06-15 14:33:52 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
7721f8dcc1
Revamp authentication routes structure ( #201 )
...
* Fix #68 : use makefun to generate dynamic dependencies
* Remove every Starlette imports
* Split every routers and remove event handlers
* Make users router optional
* Pass after_update handler to get_users_router
* Update documentation
* Remove test file
* Write migration doc for splitted routers
2020-05-24 10:18:01 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
0a0dcadfdc
Use real UUID for User id. and OAuthAccount id. ( #198 )
...
* Use UUID for user id and oauth account id
* Update documentation for UUID
* Tweak GUID definition of SQLAlchemy to match Tortoise ORM one
* Write migration doc
2020-05-21 16:40:33 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
a9ee467518
Remove list endpoint and related methods
2020-04-25 11:46:20 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
dependabot-preview[bot]
639217bb08
Make unit tests full async ( #160 )
...
* Bump pytest-asyncio from 0.10.0 to 0.11.0
Bumps [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio ) from 0.10.0 to 0.11.0.
- [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases )
- [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v0.10.0...v0.11.0 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com >
* Bump pytest-asyncio from 0.10.0 to 0.11.0
Bumps [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio ) from 0.10.0 to 0.11.0.
- [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases )
- [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v0.10.0...v0.11.0 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com >
* Convert tests to full async
* Change deprecated yield_fixture
Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: François Voron <fvoron@gmail.com >
2020-04-25 11:34:11 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
88b133d41c
Implement OAuth2 flow ( #88 )
...
* Move users router in sub-module
* Factorize UserRouter into EventHandlersRouter
* Implement OAuth registration/login router
* Apply isort/black
* Remove temporary pytest marker
* Fix httpx-oauth version in lock file
* Ensure ON_AFTER_REGISTER event is triggered on OAuth registration
* Add API on FastAPIUsers to generate an OAuth router
* Improve test coverage of FastAPIUsers
* Small fixes
* Write the OAuth documentation
* Fix SQL unit-tests by avoiding collisions in SQLite db files
2020-01-17 11:43:17 +01:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
104a6c6bf5
Inject every models variations and DB model in DB adapters ( #84 )
...
* Inject every model variations in router and DB model in DB adapters
* Update documentation and import Tortoise in db module
* Use path operation decorator dependencies for superuser routes
2020-01-04 15:36:34 +01:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
49deb437a6
Fix #42 : multiple authentication backends ( #47 )
...
* Revamp authentication to allow multiple backends
* Make router generate a login route for each backend
* Apply black
* Remove unused imports
* Complete docstrings
* Update documentation
* WIP add cookie auth
* Complete cookie auth unit tests
* Add documentation for cookie auth
* Fix cookie backend default name
* Don't make cookie return a Response
2019-12-04 13:32:49 +01:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
f6ab644691
Apply Black formatting
2019-10-29 13:35:38 +01:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
9b7ec58800
#21 : Add superuser routes ( #30 )
...
* Add CRU superuser routes
* Add delete method on DB adapters
* Add superuser delete route
* Add superuser routes documentation
* Pass black formatter
2019-10-29 13:32:44 +01:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
089d088268
Fix Deepsource issues ( #22 )
...
* Fix Deepsource issues
* Add docs/ to Deepsource exclusion list
* Fix black formatting
2019-10-20 16:16:52 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
f2892aa378
#5 Improve test coverage ( #6 )
...
* Improve test coverage of BaseUserDatabase
* Improve unit test isolation
* Improve coverage of router and authentication
2019-10-15 07:54:53 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
49daeff869
Close #3 : forgot/reset password routes
2019-10-13 12:05:10 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
76bb7bf6a5
Implement variant of dep injections to get active/super user
2019-10-11 08:09:47 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
ef6dd2c39c
Implement user-facing API
2019-10-10 18:55:11 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
0112e700ac
Improve typing and make User pydantic models dynamic
2019-10-10 13:37:52 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
af63280cf7
Use snake case for user_db variable 😱
2019-10-10 07:27:53 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
d781a41872
Install Black formatter
2019-10-09 16:52:06 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
06dd8ad22e
Implement JWT authentication
2019-10-08 17:18:38 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
20aa806375
Rename DB classes
2019-10-07 17:34:12 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)
François Voron
4ff6e2ad2b
Add inactive user handling
2019-10-06 13:23:08 +02:00
octicon-copy(16/)
octicon-file-diff(16/)
octicon-file-code(16/)