# FastAPI Users

FastAPI Users

Ready-to-use and customizable users management for FastAPI

[![build](https://github.com/frankie567/fastapi-users/workflows/Build/badge.svg)](https://github.com/frankie567/fastapi-users/actions) [![codecov](https://codecov.io/gh/frankie567/fastapi-users/branch/master/graph/badge.svg)](https://codecov.io/gh/frankie567/fastapi-users) [![PyPI version](https://badge.fury.io/py/fastapi-users.svg)](https://badge.fury.io/py/fastapi-users) [![Downloads](https://pepy.tech/badge/fastapi-users)](https://pepy.tech/project/fastapi-users) [![All Contributors](https://img.shields.io/badge/all_contributors-26-orange.svg?style=flat-square)](#contributors-) [![GitHub Sponsors](https://img.shields.io/github/sponsors/frankie567?style=social)](https://github.com/sponsors/frankie567) --- **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](https://fastapi.tiangolo.com/) project. **FastAPI Users** is designed to be as customizable and adaptable as possible. ## Features * [X] Extensible base user model * [X] Ready-to-use register, login, reset password and verify e-mail routes * [X] Ready-to-use OAuth2 flow * [X] Dependency callables to inject current user in route * [X] Customizable database backend * [X] SQLAlchemy async backend included thanks to [encode/databases](https://www.encode.io/databases/) * [X] MongoDB async backend included thanks to [mongodb/motor](https://github.com/mongodb/motor) * [X] [Tortoise ORM](https://tortoise-orm.readthedocs.io/en/latest/) backend included * [X] [ormar](https://collerek.github.io/ormar/) backend included * [X] Multiple customizable authentication backends * [X] JWT authentication backend included * [X] Cookie authentication backend included * [X] Full OpenAPI schema support, even with several authentication backends ## Contributors and sponsors βœ¨β˜•οΈ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):

FranΓ§ois Voron

🚧

Paolo Dina

πŸ’΅ πŸ’»

Dmytro Ohorodnik

πŸ›

Matthew D. Scholefield

πŸ›

roywes

πŸ› πŸ’»

Satwik Kansal

πŸ“–

Edd Salkield

πŸ’» πŸ“–

mark-todd

πŸ’» πŸ“–

lill74

πŸ› πŸ’»

SelfhostedPro

πŸ›‘οΈ πŸ’»

Oskar Gmerek

πŸ“–

Martin Collado

πŸ› πŸ’»

Eric Lopes

πŸ“– πŸ›‘οΈ

Beau Breon

πŸ’»

Niyas Mohammed

πŸ“–

prostomarkeloff

πŸ“– πŸ’»

Marius MΓ©zerette

πŸ› πŸ€”

Nickolas Grigoriadis

πŸ›

Open Data Coder

πŸ€”

Mohammed Alshehri

πŸ€”

Tyler Renelle

πŸ€”

collerek

πŸ’»

Robert Bracco

πŸ’΅

Augusto Herrmann

πŸ“–

Smithybrewer

πŸ›

silllli

πŸ“–

alexferrari88

πŸ’΅
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! ## Development ### Setup environment You should create a virtual environment and activate it: ```bash python -m venv venv/ ``` ```bash source venv/bin/activate ``` And then install the development dependencies: ```bash pip install -r requirements.dev.txt ``` ### Run unit tests You can run all the tests with: ```bash make test ``` The command will start a MongoDB container for the related unit tests. So you should have [Docker](https://www.docker.com/get-started) installed. Alternatively, you can run `pytest` yourself. The MongoDB unit tests will be skipped if no server is available on your local machine: ```bash 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: ```bash ulimit -n 2048 ``` ### Format the code Execute the following command to apply `isort` and `black` formatting: ```bash make format ``` ## License This project is licensed under the terms of the MIT license.