/fastapi-users

Ready-to-use and customizable users management for FastAPI

Primary LanguagePythonMIT LicenseMIT

FastAPI Users

FastAPI Users

Ready-to-use and customizable users management for FastAPI

build codecov PyPI version Downloads

All 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 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 social OAuth2 login flow
  • Dependency callables to inject current user in route
  • Pluggable password validation
  • Customizable database backend
  • Multiple customizable authentication backends
    • Transports: Authorization header, Cookie
    • Strategies: JWT, Database, Redis
  • 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):


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

💵

Adrian Ciołek

🐛

⭕Alexander Rymdeko-Harvey

📖

schwannden

🚧 💻

Jimmy Angel Pérez Díaz

🛡️

Austin Orr

🚧

Carlo Eugster

🛡️

Vittorio Zamboni

💻

Andrey

📖

Can H. Tartanoglu

🐛

Filipe Nascimento

🛡️

This project follows the all-contributors specification. Contributions of any kind welcome!

Development

Setup environment

You should create a virtual environment and activate it:

python -m venv venv/
source venv/bin/activate

And then install the development dependencies:

make install

Run unit tests

You can run all the tests with:

make test

Alternatively, you can run pytest yourself.

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.