Barter authentication package
Project description
Barter authentication package
This package allows you to authorize users through a shared redis
Install package
pip install barter-auth
Define env variables
REDIS_AUTH_URL
default 'redis://localhost:6378/1' # depracatedREDIS_AUTH_HOST
default '127.0.0.1'REDIS_AUTH_PORT
default 6379REDIS_AUTH_PASSWORD
default NoneREDIS_AUTH_DB
default 0REDIS_AUTH_ACCESS_PREFIX
default = 'access'REDIS_AUTH_REFRESH_PREFIX
default = 'refresh'REDIS_AUTH_TOTP_PREFIX
default = 'totp'REDIS_AUTH_PROFILE_PREFIX
default = 'profile'REDIS_AUTH_TOKEN_STORAGE
default = 'headers'
Use in view
# in django
from rest_framework.permissions import AllowAny, IsAuthenticated
from barter_auth.auth import ApiTokenRedisAuthentication
class SomeView(APIView):
authentication_classes = [ApiTokenRedisAuthentication]
permission_classes = [IsAuthenticated]
# barter_auth BaseUser() is available in request.user in DRF APIView
Use in AppConfig for request.profie
# you can add request user or profile in apps django config <app_name>.apps.py
from django.apps import AppConfig
from django.http import HttpRequest
def get_profile(self):
from barter_auth.providers import RedisProfileClient
from barter_auth.models import AnonymousProfile
from apps.profiles.models import Profile
print(' + app get_profile')
if self.user.is_authenticated:
try:
return RedisProfileClient().get_profile(uuid=self.headers.get('Profile'))
# return Profile.objects.get(uuid=self.headers.get('Profile'), user_id=int(self.user.id))
except Profile.DoesNotExist:
pass
except ValueError:
pass
return AnonymousProfile()
class ProfilesConfig(AppConfig):
name = "apps.<appp_name>"
def ready(self):
HttpRequest.profile = property(get_profile)
in the same way for request.user
# you can add request user or profile in apps django config <app_name>.apps.py
from django.apps import AppConfig
from django.http import HttpRequest
def get_user(self):
from barter_auth.providers import RedisAccessClient
from barter_auth.auth import (
get_token_from_header, get_token_from_cookies,
)
from django.contrib.auth.models import AnonymousUser
token = get_token_from_header(self)
if not token:
token = get_token_from_cookies(self)
if token:
token_service = RedisAccessClient()
user = token_service.get_user(token)
return user or AnonymousUser()
return AnonymousUser()
class ProfilesConfig(AppConfig):
name = "apps.<appp_name>"
def ready(self):
HttpRequest.user = property(get_user)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
barter_auth-0.1.2.tar.gz
(8.9 kB
view hashes)
Built Distribution
Close
Hashes for barter_auth-0.1.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 37e8f4b806a912ccbbd6ccb66c2098d2c87d178857cb868f9a79c34e98dcd232 |
|
MD5 | 6e5b5c1d2877e4336276cd8a2260758f |
|
BLAKE2b-256 | 1208d778bc82c65781b85cc4c14cbc3e3fdf36b29e191917d0843ac6ca96b348 |