# FastAPI Users

FastAPI Users

Ready-to-use and customizable users management for FastAPI

[![build](https://github.com/fastapi-users/fastapi-users/workflows/Build/badge.svg)](https://github.com/fastapi-users/fastapi-users/actions) [![codecov](https://codecov.io/gh/fastapi-users/fastapi-users/branch/master/graph/badge.svg)](https://codecov.io/gh/fastapi-users/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-55-orange.svg?style=flat-square)](#contributors-)

--- **Documentation**: https://fastapi-users.github.io/fastapi-users/ **Source Code**: https://github.com/fastapi-users/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 social OAuth2 login flow * [X] Dependency callables to inject current user in route * [X] Pluggable password validation * [X] Customizable database backend * [X] [SQLAlchemy ORM async](https://docs.sqlalchemy.org/en/14/orm/extensions/asyncio.html) included * [X] [MongoDB with Beanie ODM](https://github.com/roman-right/beanie/) included * [X] Multiple customizable authentication backends * [X] Transports: Authorization header, Cookie * [X] Strategies: JWT, Database, Redis * [X] Full OpenAPI schema support, even with several authentication backends ## In a hurry? Discover Fief, the open-source authentication platform

Fief

Fief **Implementing registration, login, social auth is hard and painful. We know it. With our highly secure and open-source users management platform, you can focus on your app while staying in control of your users data.** * Based on **FastAPI Users**! * **Open-source**: self-host it for free or use our hosted version * **Bring your own database**: host your database anywhere, we'll take care of the rest * **Pre-built login and registration pages**: clean and fast authentication so you don't have to do it yourself * **Official Python client** with built-in **FastAPI integration**

It's free!

## 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

πŸ’΅

sandalwoodbox

πŸ›

Vlad Hoi

πŸ“–

Joe Nudell

πŸ›

Ben

πŸ’»

BoYanZh

πŸ“–

David Brochart

πŸ“– πŸ’»

Daan Beverdam

πŸ’»

StΓ©phane Raimbault

⚠️ πŸ›

Sondre LillebΓΈ Gundersen

πŸ“–

Maxim

πŸ“– πŸ›

scottdavort

πŸ’΅

John Dukewich

πŸ“–

Yasser Tahiri

πŸ’»

Brandon H. Goding

πŸ’»

PovilasK

πŸ’»

Just van den Broecke

πŸ’΅

jakemanger

πŸ› πŸ’»

Ikko Ashimine

πŸ’»

MatyΓ‘Ε‘ Richter

πŸ’»

Hazedd

πŸ› πŸ“–

Luis Roel

πŸ’΅

Alexandr Makurin

πŸ’» πŸ›

Leon Thurner

πŸ“–

Goran Mekić

πŸ“¦

Gaganpreet

πŸ’»

Joe Taylor

πŸ’»

Richard Friberg

πŸ›

Kenton Parton

πŸ’΅
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 make install ``` ### Run unit tests You can run all the tests with: ```bash make test ``` Alternatively, you can run `pytest` yourself. ```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.