Browse Source

fix: token cookie issue

Timothy Jaeryang Baek 5 months ago
parent
commit
45ad6776de
1 changed files with 27 additions and 0 deletions
  1. 27 0
      backend/open_webui/routers/auths.py

+ 27 - 0
backend/open_webui/routers/auths.py

@@ -84,6 +84,26 @@ async def get_session_user(
     data = decode_token(token)
     data = decode_token(token)
     expires_at = data.get("exp")
     expires_at = data.get("exp")
 
 
+    if int(time.time()) > expires_at:
+        raise HTTPException(
+            status_code=status.HTTP_401_UNAUTHORIZED,
+            detail=ERROR_MESSAGES.INVALID_TOKEN,
+        )
+
+    # Set the cookie token
+    response.set_cookie(
+        key="token",
+        value=token,
+        expires=(
+            datetime.datetime.fromtimestamp(expires_at, datetime.timezone.utc)
+            if expires_at
+            else None
+        ),
+        httponly=True,  # Ensures the cookie is not accessible via JavaScript
+        samesite=WEBUI_AUTH_COOKIE_SAME_SITE,
+        secure=WEBUI_AUTH_COOKIE_SECURE,
+    )
+
     user_permissions = get_permissions(
     user_permissions = get_permissions(
         user.id, request.app.state.config.USER_PERMISSIONS
         user.id, request.app.state.config.USER_PERMISSIONS
     )
     )
@@ -288,6 +308,13 @@ async def ldap_auth(request: Request, response: Response, form_data: LdapForm):
                 response.set_cookie(
                 response.set_cookie(
                     key="token",
                     key="token",
                     value=token,
                     value=token,
+                    expires=(
+                        datetime.datetime.fromtimestamp(
+                            expires_at, datetime.timezone.utc
+                        )
+                        if expires_at
+                        else None
+                    ),
                     httponly=True,  # Ensures the cookie is not accessible via JavaScript
                     httponly=True,  # Ensures the cookie is not accessible via JavaScript
                     samesite=WEBUI_AUTH_COOKIE_SAME_SITE,
                     samesite=WEBUI_AUTH_COOKIE_SAME_SITE,
                     secure=WEBUI_AUTH_COOKIE_SECURE,
                     secure=WEBUI_AUTH_COOKIE_SECURE,