Metadata-Version: 2.1
Name: barter-fastapi-auth
Version: 0.1.1
Summary: Barter authentication package for FastApi
Home-page: https://github.com/kabilovtoha/barter_fastapi_auth
Author: akatoha
Author-email: kabilov <kabilov2011@gmail.com>
License: BSD
Project-URL: Homepage, https://github.com/kabilovtoha/barter_fastapi_auth
Project-URL: Bug Tracker, https://github.com/kabilovtoha/barter_fastapi_auth/issues
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: redis >=4.6.0
Requires-Dist: fastapi ==0.98.0
Requires-Dist: pydantic ==1.10.9
Requires-Dist: httpx >=0.24.1
Requires-Dist: factory-boy >=3.2.1
Requires-Dist: faker >=18.11.1

# Barter authentication package

This package allows you to authorize users through a shared redis

## Install package
```shell
pip install bater-fastapi-auth
```

## Define env variables

- `REDIS_AUTH_ACCESS_PREFIX` default ''
- `REDIS_AUTH_DB` default 0
- `REDIS_AUTH_HOST` default 127.0.0.1
- `REDIS_AUTH_PORT` default 6379
- `REDIS_AUTH_PASSWORD` default None
- `REDIS_AUTH_TOKEN_STORAGE` default 'headers' should be 'cookies'

## Define startapp and shutdown logic

```python
from contextlib import asynccontextmanager

from fastapi import FastAPI

from src.bater_fastapi_auth import token_config
from bater_fastapi_auth.providers import RedisSingleton

@asynccontextmanager
async def lifespan(app: FastAPI):
    RedisSingleton.init_redis(
        token_config.HOST,
        token_config.PORT,
        token_config.DB,
        token_config.PASSWORD
    )
    yield
    await RedisSingleton().close()


app = FastAPI(lifespan=lifespan)

```

## Use in view
```python
from bater_fastapi_auth import UserRedisAuth

@app.get("/")
async def read_root(user=Depends(UserRedisAuth())):
    return user.to_dict()

```
