Skip to main content

Sub-package for Deta Base support in FastAPI Users.

Project description

FastAPI Users DB Deta

https://img.shields.io/pypi/v/fastapi_users_db_deta.svg https://img.shields.io/travis/ak4zh/fastapi_users_db_deta.svg Documentation Status

Sub-package for Deta Base support in FastAPI Users.

Installation

To install FastAPI Users DB Deta in a project:

pip install -U fastapi_users_db_deta

Usage

Project structure:

.
├── users
│   ├── __init__.py
│   ├── models.py
│   ├── manager.py
└── main.py

users/models.py:

from fastapi_users import models
from fastapi_users.models import BaseOAuthAccountMixin


class User(models.BaseUser, BaseOAuthAccountMixin):
    pass


class UserCreate(models.BaseUserCreate):
    pass


class UserUpdate(models.BaseUserUpdate):
    pass


class UserDB(User, models.BaseUserDB):
    pass

users/manager.py:

from typing import Optional

import deta
from fastapi import Depends, Request
from fastapi_users import BaseUserManager, FastAPIUsers
from fastapi_users.authentication import JWTAuthentication, CookieAuthentication
from fastapi_users_db_deta import DetaBaseUserDatabase

from users.models import UserDB, UserCreate, UserUpdate, User

SECRET = 'secret'
DETA_PROJECT_KEY = 'deta_project_key'
DATABASE = deta.Deta(DETA_PROJECT_KEY)
UserBase = DATABASE.Base('users')
OAuthBase = DATABASE.Base('oauth_accounts')


class UserManager(BaseUserManager[UserCreate, UserDB]):
    user_db_model = UserDB
    reset_password_token_secret = SECRET
    verification_token_secret = SECRET


async def get_user_db():
    yield DetaBaseUserDatabase(UserDB, UserBase().db, OAuthBase().db)


async def get_user_manager(user_db=Depends(get_user_db)):
    yield UserManager(user_db)


jwt_authentication = JWTAuthentication(
    secret=SECRET, lifetime_seconds=5, tokenUrl="auth/jwt/login"
)
cookie_authentication = CookieAuthentication(
    secret=SECRET, lifetime_seconds=5, cookie_name='userAuthToken'
)

fastapi_users_app = FastAPIUsers(
    get_user_manager,
    [jwt_authentication, cookie_authentication],
    User,
    UserCreate,
    UserUpdate,
    UserDB,
)

current_active_user = fastapi_users_app.current_user(active=True)

main.py:

from fastapi import FastAPI

from users.manager import cookie_authentication, jwt_authentication, fastapi_users_app

app = FastAPI()

# include cookie auth router
app.include_router(
    fastapi_users_app.get_auth_router(
        cookie_authentication,
    ), prefix="/auth/cookie", tags=["auth"]
)

# include jwt auth router
app.include_router(
    fastapi_users_app.get_auth_router(
        jwt_authentication,
    ), prefix="/auth/jwt", tags=["auth"]
)

app.include_router(
    fastapi_users_app.get_register_router(), prefix="/auth", tags=["auth"]
)

app.include_router(
    fastapi_users_app.get_reset_password_router(),
    prefix="/auth",
    tags=["auth"],
)

app.include_router(
    fastapi_users_app.get_verify_router(),
    prefix="/auth",
    tags=["auth"],
)

app.include_router(
    fastapi_users_app.get_users_router(), prefix="/users", tags=["users"]
)

Credits

This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.

History

0.1.0 (2021-11-17)

  • First release on PyPI.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fastapi_users_db_deta-0.2.3.tar.gz (11.6 kB view details)

Uploaded Source

Built Distribution

fastapi_users_db_deta-0.2.3-py2.py3-none-any.whl (5.3 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file fastapi_users_db_deta-0.2.3.tar.gz.

File metadata

  • Download URL: fastapi_users_db_deta-0.2.3.tar.gz
  • Upload date:
  • Size: 11.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.14.0 pkginfo/1.8.2 requests/2.26.0 setuptools/57.0.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for fastapi_users_db_deta-0.2.3.tar.gz
Algorithm Hash digest
SHA256 bd0f9e93fa328e1cf30d983dcecc95a04a77ea42f9eb796791e14ea7473ba7dd
MD5 d70a5e4e9b1f2e0ade577cc895d1f38d
BLAKE2b-256 1163a2b055af5cb73b1c3eff63e79197a4b7958e97246043596a013def3b5c25

See more details on using hashes here.

File details

Details for the file fastapi_users_db_deta-0.2.3-py2.py3-none-any.whl.

File metadata

  • Download URL: fastapi_users_db_deta-0.2.3-py2.py3-none-any.whl
  • Upload date:
  • Size: 5.3 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.14.0 pkginfo/1.8.2 requests/2.26.0 setuptools/57.0.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for fastapi_users_db_deta-0.2.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 0d93e5ea9b6f1ffc90fde2784b9bb311250311c15fcde14ff968949028441f50
MD5 6e76073408e8624a9ddc27f784d0f9e6
BLAKE2b-256 280e5eed54c4e032626eb71ff6d9a1e109eb65556bc119909f7f87b8940b8c81

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page