* 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>
FastAPI Users
Ready-to-use and customizable users management for FastAPI
Documentation: https://frankie567.github.io/fastapi-users/
Source Code: https://github.com/frankie567/fastapi-users
Add quickly a registration and authentication system to your FastAPI project. FastAPI Users is designed to be as customizable and adaptable as possible.
Features
- Extensible base user model
- Ready-to-use register, login, reset password and verify e-mail routes
- Ready-to-use OAuth2 flow
- Dependency callables to inject current user in route
- Customizable database backend
- SQLAlchemy async backend included thanks to encode/databases
- MongoDB async backend included thanks to mongodb/motor
- Tortoise ORM backend included
- Multiple customizable authentication backends
- JWT authentication backend included
- Cookie authentication backend included
- Full OpenAPI schema support, even with several authentication backends
Development
Setup environement
You should have Pipenv installed. Then, you can install the dependencies with:
pipenv install --dev
After that, activate the virtual environment:
pipenv shell
Run unit tests
You can run all the tests with:
make test
The command will start a MongoDB container for the related unit tests. So you should have Docker installed.
Alternatively, you can run pytest yourself. The MongoDB unit tests will be skipped if no server is available on your local machine:
pytest
There are quite a few unit tests, so you might run into ulimit issues where there are too many open file descriptors. You may be able to set a new, higher limit temporarily with:
ulimit -n 2048
Format the code
Execute the following command to apply isort and black formatting:
make format
License
This project is licensed under the terms of the MIT license.