* 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
* Remove database adapter in favor of external dependencies
* Prevent flit from installing all optional dependencies when testing build
* Remove MongoDB service during CI build
* Add db adapter for ormar (wip)
* finish ormar support enough to pass tests
* remove idea folder
* update ormar version in tool.flit.metadata.requires-extra
* Add documentation about ormar
* Apply isort and black formatting
* Restore python 3.7 in Pipfile
* Update build.yml
* Add missing test for ormar update
* changes after review
Co-authored-by: Paolo Dina <paolo.dina@codingmoth.com>
Co-authored-by: collerek <collerek@gmail.com>
* 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>
* Add unit tests to enforce email case insensitivity
* Handle email as case insentitive while retrieving user in DB
* Apply isort/black
* Add migration doc
* 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
I was getting an import error using tortoise 0.1.1: `ImportError: cannot import name 'Model' from 'tortoise'`. These few changes seemed to have resolved the issue.
* 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
* 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
* add tortoise to dependencies
* add tortoise as optional dependency in pyproject.toml
* add tortoise support (tests needed)
* Add tortoise support (also defined orm_mode in pydantic model
* tests for tortoise support
* format by black
* docs for tortoise
* delete type annotations
* delete underscore
* do it in 1 line
* add 1 line before yield
* fix in docs
* fix bug and add annotation for test
* Tweak documentation and fix Tortoise error about id update
* Improve Tortoise coverage by using get instead of filter
* Fix Pipfile.lock
* Implement MongoDB adapter using motor
* Add mongo container to build pipeline
* Tidy up dependencies
* Update documentation for MongoDB
* Export MongoDB adapter from db package
* Pass black format
* Update README