Session management API endpoints.
Provides endpoints for managing user sessions including listing,
viewing, and revoking active sessions.
Classes
Functions
list_sessions
list_sessions(
session: Session = Depends(get_session),
current_user: User = Depends(get_current_user),
)
List all active sessions for the current user.
Source code in fastauth/api/sessions.py
| @router.get("", response_model=SessionListResponse)
def list_sessions(
session: Session = Depends(get_session),
current_user: User = Depends(get_current_user),
):
"""
List all active sessions for the current user.
"""
adapters = AdapterFactory(session=session)
user_sessions = get_user_sessions(
sessions=adapters.sessions,
user_id=current_user.id,
)
return SessionListResponse(
sessions=[
SessionResponse(
id=s.id,
device=s.device,
ip_address=s.ip_address,
user_agent=s.user_agent,
last_active=s.last_active.isoformat(),
created_at=s.created_at.isoformat(),
)
for s in user_sessions
]
)
|
delete_all_sessions
delete_all_sessions(
session: Session = Depends(get_session),
current_user: User = Depends(get_current_user),
)
Delete all sessions for the current user except the current one.
Note: This will log out the user from all other devices.
Source code in fastauth/api/sessions.py
| @router.delete("/all", response_model=MessageResponse)
def delete_all_sessions(
session: Session = Depends(get_session),
current_user: User = Depends(get_current_user),
):
"""
Delete all sessions for the current user except the current one.
Note: This will log out the user from all other devices.
"""
adapters = AdapterFactory(session=session)
delete_all_user_sessions(
sessions=adapters.sessions,
user_id=current_user.id,
except_session_id=None,
)
return MessageResponse(message="All sessions deleted successfully")
|
delete_user_session
delete_user_session(
session_id: UUID,
session: Session = Depends(get_session),
current_user: User = Depends(get_current_user),
)
Delete a specific session. Users can only delete their own sessions.
Source code in fastauth/api/sessions.py
| @router.delete("/{session_id}", response_model=MessageResponse)
def delete_user_session(
session_id: uuid.UUID,
session: Session = Depends(get_session),
current_user: User = Depends(get_current_user),
):
"""
Delete a specific session. Users can only delete their own sessions.
"""
adapters = AdapterFactory(session=session)
try:
delete_session(
sessions=adapters.sessions,
session_id=session_id,
user_id=current_user.id,
)
except SessionNotFoundError:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail="Session not found",
)
return MessageResponse(message="Session deleted successfully")
|