Skip to content

Commit

Permalink
refactor: Prefix redis keys
Browse files Browse the repository at this point in the history
  • Loading branch information
null2264 committed Sep 16, 2024
1 parent b84f4b8 commit 430206d
Showing 1 changed file with 9 additions and 3 deletions.
12 changes: 9 additions & 3 deletions nexus/core/middleware.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import json
import os
from base64 import b64decode, b64encode
from typing import Union

from cryptography.fernet import Fernet
from itsdangerous import BadSignature
Expand All @@ -13,6 +14,11 @@
from nexus.utils.session import snowflake


def redisKey(key: Union[int, str]) -> str:
"""Returns prefixed key for redis"""
return f"nexus-usr{key}"


class SessionMiddleware(Origin):
def __init__(self, *args, **kwargs) -> None:
super().__init__(*args, **kwargs)
Expand All @@ -35,7 +41,7 @@ async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None:
sessionId = _internal.get("__ssid")
sessionKey = _internal.get("__sskey").encode("utf-8")
scope["session"] = json.loads(
Fernet(sessionKey).decrypt(await self.redis.get(str(sessionId)) or b"").decode("utf-8")
Fernet(sessionKey).decrypt(await self.redis.get(redisKey(sessionId)) or b"").decode("utf-8")
)
scope["__ssid"] = sessionId
scope["__sskey"] = sessionKey
Expand All @@ -54,7 +60,7 @@ async def send_wrapper(message: Message) -> None:
# We have session data to persist.

await self.redis.set(
str(sessionId),
redisKey(sessionId),
Fernet(sessionKey).encrypt(json.dumps(scope["session"]).encode("utf-8")),
ex=self.max_age,
)
Expand All @@ -68,7 +74,7 @@ async def send_wrapper(message: Message) -> None:
headers.append("Set-Cookie", header_value)
elif not initial_session_was_empty:
# The session has been cleared.
await self.redis.delete(str(sessionId))
await self.redis.delete(redisKey(sessionId))

headers = MutableHeaders(scope=message)
header_value = self._construct_cookie(True)
Expand Down

0 comments on commit 430206d

Please sign in to comment.