diff options
| author | Bobby <[email protected]> | 2023-06-02 15:17:30 -0400 |
|---|---|---|
| committer | Bobby <[email protected]> | 2023-06-02 15:17:30 -0400 |
| commit | 1ac450ad7db8d75b77037158ef4e80bc810a8573 (patch) | |
| tree | ed70bb68417ac7e38029ab06d5320b4d1b97a60b /middleware | |
| parent | f3c455d198ef5aaed09efd7b197bc815f183f7b9 (diff) | |
| download | thatcomputerscientist-1ac450ad7db8d75b77037158ef4e80bc810a8573.tar.xz thatcomputerscientist-1ac450ad7db8d75b77037158ef4e80bc810a8573.zip | |
Try Fix: User information
Diffstat (limited to 'middleware')
| -rw-r--r-- | middleware/uuidmiddleware.py | 77 |
1 files changed, 41 insertions, 36 deletions
diff --git a/middleware/uuidmiddleware.py b/middleware/uuidmiddleware.py index 3348f95d..84e29722 100644 --- a/middleware/uuidmiddleware.py +++ b/middleware/uuidmiddleware.py @@ -1,7 +1,7 @@ import uuid - -from django.conf import settings -from django.core.cache import cache +import redis +import json +redis_instance = redis.StrictRedis(host='localhost', port=6379, db=0) class UserUUIDMiddleware: @@ -25,45 +25,50 @@ def userTrackingContextProcessor(request): # get the user's uuid from the cookie user_uuid = request.COOKIES.get('user_uuid') - - print(user_uuid) - - return { - 'anonymous_users': 0, + invalid_response = { + 'anonymous_users': 1, 'logged_in_users':0, 'admin_users': 0, } - # if user_uuid: - # # get the user's permissions - # is_authenticated = request.user.is_authenticated - # is_staff = request.user.is_staff + if not user_uuid: + return invalid_response + + # see if we can connect to redis + try: + redis_instance.ping() + print('connected to redis') + except redis.exceptions.ConnectionError: + return invalid_response + + user_data = { + 'is_authenticated': request.user.is_authenticated, + 'is_staff': request.user.is_staff, + } - # # refresh online users every 300 seconds, with auto deleting expired keys - # cache.set(f"presence_{user_uuid}", { - # 'is_authenticated': is_authenticated, - # 'is_staff': is_staff, - # }, 300) + # refresh online users every 300 seconds, with auto deleting expired keys + redis_instance.set(f"presence_{user_uuid}", json.dumps(user_data), ex=300) - # # get all online users - # online_now = cache.keys('presence_*') + # get all online users + online_now = redis_instance.keys('presence_*') - # # separate online users into anonymous, logged in, and admin users - # anonymous_users = [] - # logged_in_users = [] - # admin_users = [] + # separate online users into anonymous, logged in, and admin users + anonymous_users = [] + logged_in_users = [] + admin_users = [] - # for user in online_now: - # user_data = cache.get(user) - # if user_data['is_authenticated'] == False and user_data['is_staff'] == False: - # anonymous_users.append(user_data) - # elif user_data['is_authenticated'] == True and user_data['is_staff'] == False: - # logged_in_users.append(user_data) - # if user_data['is_staff'] == True: - # admin_users.append(user_data) + for user in online_now: + user_data = redis_instance.get(user) + user_data = json.loads(user_data) + if user_data['is_authenticated'] == False and user_data['is_staff'] == False: + anonymous_users.append(user_data) + elif user_data['is_authenticated'] == True and user_data['is_staff'] == False: + logged_in_users.append(user_data) + if user_data['is_staff'] == True: + admin_users.append(user_data) - # return { - # 'anonymous_users': len(anonymous_users), - # 'logged_in_users': len(logged_in_users), - # 'admin_users': len(admin_users), - # } + return { + 'anonymous_users': len(anonymous_users), + 'logged_in_users': len(logged_in_users), + 'admin_users': len(admin_users), + } |
