✨ feat(test_endpoints.py): add test case for handling invalid API key in 'test_process_flow_invalid_api_key' function
✨ feat(test_endpoints.py): add test case for handling invalid flow ID in 'test_process_flow_invalid_id' function
✨ feat(test_endpoints.py): add test case for handling flow not found in 'test_process_flow_invalid_id' function
✨ feat(test_endpoints.py): add test case for testing process flow without autologin in 'test_process_flow_without_autologin' function
✨ feat(api_key/crud.py): prepend 'lf-' to generated API key for better identification and readability
✨ feat(api_key/crud.py): add check_key function to validate API key and update total uses and last used at timestamp
🔧 fix(endpoints.py): update import statement for api_key_security function to match the new location
🔧 fix(endpoints.py): update dependencies argument in router.post calls to use a list instead of multiple lines for better readability
🔧 fix(endpoints.py): remove valid argument from process_flow function as it is no longer needed
🔧 fix(api_key.py): remove hashed_api_key field as it is no longer used
🔧 fix(api_key.py): add total_uses field to track the number of times the API key has been used
🔧 fix(api_key.py): add is_active field to track the status of the API key
🔒 chore(utils.py): refactor auth_scheme_dependency to use OAuth2PasswordBearer for better security
🔒 chore(utils.py): refactor validate_api_key to use check_key function from crud module for better code reuse
🔒 chore(utils.py): add api_key_security function to handle API key authentication logic
🔒 chore(utils.py): refactor get_current_user to use oauth2_login dependency for better security
🔒 chore(utils.py): remove unused validate_api_key function
🔒 chore(auth.py): remove unused oauth2_scheme variable for better code organization
✨ feat(conftest.py): add fixture 'flow' to create a test flow in tests/conftest.py
🐛 fix(test_endpoints.py): import missing get_settings_manager function in tests/test_endpoints.py to fix NameError
✨ feat(test_endpoints.py): add test case 'test_process_flow_without_autologin' to test flow processing without auto login
🐛 fix(test_endpoints.py): fix incorrect endpoint URL in test case 'test_process_flow_without_autologin' in tests/test_endpoints.py
✨ feat(test_endpoints.py): add test case 'test_process_flow_fails_autologin_off' to test flow processing failure when auto login is off
✨ feat(endpoints.py): add validation of API key in process_flow endpoint to ensure only valid requests are processed
🔧 chore(utils.py): add validate_api_key function to validate API key against database
🔧 chore(test_endpoints.py): add test case for process_flow endpoint to test API key validation and processing
✨ feat(ApiKeysPage): add Header component to the page layout for better organization and structure
🐛 fix(ApiKeysPage): fix import order to follow convention and improve readability
🐛 fix(ApiKeysPage): fix indentation and formatting issues for better code readability
✨ feat(ApiKeysPage): add conditional rendering for displaying a message when user has no assigned keys
🐛 fix(ApiKeysPage): fix indentation and formatting issues for better code readability
✨ feat(ApiKeysPage): add table component to display the list of keys with their details
🐛 fix(ApiKeysPage): fix indentation and formatting issues for better code readability
✨ feat(ApiKeysPage): add ConfirmationModal component for deleting keys with appropriate title and content
🐛 fix(ApiKeysPage): fix indentation and formatting issues for better code readability
✨ feat(authContext.tsx): move autoLogin logic from App component to AuthProvider to improve separation of concerns
🔧 fix(index.tsx): reorder context providers to ensure correct execution order
🔧 fix(tabsContext.tsx): add comment to clarify the purpose of the useEffect hook
🔧 fix(typesContext.tsx): add comment to clarify the purpose of the useEffect hook
🔧 fix(routes.tsx): rename ProtectedAdminRoute to ProtectedRoute for consistency
✨ feat(authContext.tsx): add support for process.env.PORT environment variable to be able to run app on a configurable port
🐛 fix(tabsContext.tsx): import missing AuthContext and use getAuthentication function to conditionally fetch data
🐛 fix(typesContext.tsx): import missing AuthContext and use getAuthentication function to conditionally fetch data
🐛 fix(api.tsx): add check to not refresh token if refreshToken is "auto"
fix(API): remove unused user_id parameter in createApiKey function and add name parameter
fix(API): change deleteApiKey parameter from user_id to api_key
fix(SecretKeyModal): change createApiKey parameter from data to apiKeyName
fix(ApiKeysPage): remove unused user_id parameter in getApiKey function and add console.log for debugging
🐛 fix(chat.py): add missing import statement for Session from sqlmodel
🐛 fix(chat.py): add missing import statement for get_session from langflow.services.utils
🐛 fix(chat.py): add missing import statement for get_current_user from langflow.services.auth.utils
🐛 fix(chat.py): add missing import statement for HTTPException from fastapi
🐛 fix(chat.py): add missing import statement for get_current_active_user from langflow.services.auth.utils
🐛 fix(chat.py): add missing import statement for WebSocket from fastapi
🐛 fix(chat.py): add missing import statement for WebSocketException from fastapi
🐛 fix(chat.py): add missing import statement for status from fastapi
🐛 fix(chat.py): add missing import statement for APIRouter from fastapi
🐛 fix(chat.py): add missing import statement for Depends from fastapi
🐛 fix(chat.py): add missing import statement for HTTPException from fastapi
🐛 fix(chat.py): add missing import statement for get_current_active_user from langflow.services.auth.utils
🐛 fix(chat.py): add missing import statement for get_current_user from langflow.services.auth.utils
🐛 fix(chat.py): add missing import statement for get_session from langflow.services.utils
🐛 fix(chat.py): add missing import statement for Session from sqlmodel
🐛 fix(chat.py): add missing import statement for HTTPException from fastapi
🐛 fix(chat.py): add missing import statement for get_current_user from langflow.services.auth.utils
🐛 fix(chat.py): add missing import statement for HTTPException from fastapi
🐛 fix(chat.py): add missing import statement for get_current_user from langflow.services.auth.utils
🐛 fix(chat.py): add missing import statement for HTTPException from fastapi
🐛 fix(chat.py): add missing import statement for get_current_user from langflow.services.auth.utils
🐛 fix(chat.py): add missing import statement for HTTPException from fastapi
🐛 fix(chat.py): add missing import statement for get_current_user from langflow.services.auth.utils
🐛 fix(chat.py): add missing import statement for HTTPException from fastapi
🐛 fix(chat.py): add missing import statement for get_current_user from langflow
🔧 fix(test_chains_template.py): update test functions to include logged_in_headers parameter to test authenticated requests
🔧 fix(test_endpoints.py): update test_get_all function to include logged_in_headers parameter to test authenticated requests
🔧 fix(test_llms_template.py): update test functions to include logged_in_headers parameter to test authenticated requests
🔧 fix(test_prompts_template.py): update test functions to include logged_in_headers parameter to test authenticated requests
🔧 fix(test_vectorstore_template.py): update test functions to include logged_in_headers parameter to test authenticated requests
✨ feat(update_all_tables.py): add support for 'user_id' column in 'apikey' table
✨ feat(update_all_tables.py): add support for 'created_at' column in 'apikey' table
✨ feat(update_all_tables.py): add support for index on 'name' column in 'apikey' table
✨ feat(update_all_tables.py): add support for index on 'user_id' column in 'apikey' table
✨ feat(update_all_tables.py): add foreign key constraint on 'user_id' column in 'apikey' table
🔧 fix(update_all_tables.py): handle potential OperationalError when dropping 'create_at' column from 'apikey' table
✨ feat(update_all_tables.py): add support for 'user_id' column in 'flow' table
✨ feat(update_all_tables.py): add support for index on 'user_id' column in 'flow' table
✨ feat(update_all_tables.py): add foreign key constraint on 'user_id' column in 'flow' table
🔧 fix(update_all_tables.py): handle potential OperationalError when dropping foreign key constraint from 'flow' table
🔧 fix(update_all_tables.py): handle potential OperationalError when dropping index on 'user_id' column from 'flow' table
🔧 fix(update_all_tables.py): handle potential OperationalError when dropping 'user_id' column from 'flow' table
🔧 fix(update_all_tables.py): handle potential OperationalError when adding 'create_at' column to 'apikey' table
🔧 fix(update_all_tables.py): handle potential OperationalError when dropping foreign key constraint from 'apikey' table
🔧 fix(update_all_tables.py): handle potential OperationalError when dropping index on 'user_id' column from 'apikey' table
🔧 fix(update_all_tables.py): handle potential OperationalError when dropping index on 'name' column from 'apikey' table
🔧 fix(update_all_tables.py): handle potential OperationalError when altering 'name' column in 'apikey' table
🔧 fix(update_all_tables.py): handle potential OperationalError when dropping 'user_id' column from 'apikey' table
🔧 fix(update_all_tables.py): handle potential OperationalError when dropping 'created_at' column from 'apikey' table
This commit adds a new migration script to update all tables in the database. The script includes the following changes:
- Added columns 'created_at' and 'user_id' to the 'apikey' table
- Altered the 'name' column in the 'apikey' table to allow null values
- Created indexes on the 'name' and 'user_id' columns in the 'apikey' table
- Created a foreign key constraint between the 'apikey' table and the 'user' table
- Added the 'user_id' column to the 'flow' table
- Created an index on the 'user_id' column in the 'flow' table
- Created a foreign key constraint between the 'flow' table and the 'user' table
- Removed the 'create_at' column from the 'apikey' table
This migration script is designed to be used with Alembic for database schema updates.
✨ feat(chat.py): add current_user dependency to chat and init_build endpoints to enforce authentication and authorization
🔧 refactor(chat.py): pass user_id to vertex.build() method in stream_build endpoint to associate the build with the current user