mirror of
https://github.com/All-Hands-AI/OpenHands.git
synced 2026-04-29 03:00:45 -04:00
* refactor session mgmt * defer file handling to runtime * add todo * refactor sessions a bit more * remove messages logic from FE * fix up socket handshake * refactor frontend auth a bit * first pass at redoing file explorer * implement directory suffix * fix up file tree * close agent on websocket close * remove session saving * move file refresh * remove getWorkspace * plumb path/code differently * fix build issues * fix the tests * fix npm build * add session rehydration * fix event serialization * logspam * fix user message rehydration * add get_event fn * agent state restoration * change history tracking for codeact * fix responsiveness of init * fix lint * lint * delint * fix prop * update tests * logspam * lint * fix test * revert codeact * change fileService to use API * fix up session loading * delint * delint * fix integration tests * revert test * fix up access to options endpoints * fix initial files load * delint * fix file initialization * fix mock server * fixl int * fix auth for html * Update frontend/src/i18n/translation.json Co-authored-by: Xingyao Wang <xingyao6@illinois.edu> * refactor sessions and sockets * avoid reinitializing the same session * fix reconnect issue * change up intro message * more guards on reinit * rename agent_session * delint * fix a bunch of tests * delint * fix last test * remove code editor context * fix build * fix any * fix dot notation * Update frontend/src/services/api.ts Co-authored-by: Boxuan Li <liboxuan@connect.hku.hk> * fix up error handling * Update opendevin/server/session/agent.py Co-authored-by: Boxuan Li <liboxuan@connect.hku.hk> * Update opendevin/server/session/agent.py Co-authored-by: Boxuan Li <liboxuan@connect.hku.hk> * Update frontend/src/services/session.ts Co-authored-by: Boxuan Li <liboxuan@connect.hku.hk> * fix build errs * fix else * add closed state * delint * Update opendevin/server/session/session.py Co-authored-by: Engel Nyst <enyst@users.noreply.github.com> --------- Co-authored-by: Xingyao Wang <xingyao6@illinois.edu> Co-authored-by: Graham Neubig <neubig@gmail.com> Co-authored-by: Boxuan Li <liboxuan@connect.hku.hk> Co-authored-by: Engel Nyst <enyst@users.noreply.github.com>
42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
import jwt
|
|
from jwt.exceptions import InvalidTokenError
|
|
|
|
from opendevin.core.config import config
|
|
from opendevin.core.logger import opendevin_logger as logger
|
|
|
|
|
|
def get_sid_from_token(token: str) -> str:
|
|
"""
|
|
Retrieves the session id from a JWT token.
|
|
|
|
Parameters:
|
|
token (str): The JWT token from which the session id is to be extracted.
|
|
|
|
Returns:
|
|
str: The session id if found and valid, otherwise an empty string.
|
|
"""
|
|
try:
|
|
# Decode the JWT using the specified secret and algorithm
|
|
payload = jwt.decode(token, config.jwt_secret, algorithms=['HS256'])
|
|
|
|
# Ensure the payload contains 'sid'
|
|
if 'sid' in payload:
|
|
return payload['sid']
|
|
else:
|
|
logger.error('SID not found in token')
|
|
return ''
|
|
except InvalidTokenError:
|
|
logger.error('Invalid token')
|
|
except Exception as e:
|
|
logger.exception('Unexpected error decoding token: %s', e)
|
|
return ''
|
|
|
|
|
|
def sign_token(payload: dict[str, object]) -> str:
|
|
"""Signs a JWT token."""
|
|
# payload = {
|
|
# "sid": sid,
|
|
# # "exp": datetime.now(timezone.utc) + timedelta(minutes=15),
|
|
# }
|
|
return jwt.encode(payload, config.jwt_secret, algorithm='HS256')
|