Commit graph

4,662 commits

Author SHA1 Message Date
Gabriel Luiz Freitas Almeida
048ea7f743 🔧 chore(Makefile): update pytest command to run tests in parallel using pytest-xdist plugin
📦 deps(pyproject.toml): add pytest-xdist as a development dependency to enable parallel test execution
2023-08-27 19:16:51 -03:00
Gabriel Luiz Freitas Almeida
ea4cd294c1 🔧 fix(test_endpoints.py): fix typo in function name 'created_api_key' to 'create_api_key' for consistency
 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
2023-08-27 19:16:39 -03:00
Gabriel Luiz Freitas Almeida
a700ab1f71 🐛 fix(endpoints.py): handle specific exceptions when processing flow to provide more informative error messages 2023-08-27 19:16:30 -03:00
Gabriel Luiz Freitas Almeida
7c2bbad5ab 🐛 fix(api_key.py): fix delete_api_key_route URL path by removing double slashes 2023-08-26 17:40:02 -03:00
Gabriel Luiz Freitas Almeida
e850c0cbc6 🔧 fix(api_key/crud.py): remove unused import statement for get_password_hash 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
2023-08-26 17:39:22 -03:00
Gabriel Luiz Freitas Almeida
9c77cc1875 🔧 fix(endpoints.py): update import statement for get_current_active_user function to match the new location
🔧 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
2023-08-26 17:39:08 -03:00
Gabriel Luiz Freitas Almeida
f687599ecc 🐛 fix(api_key.py): fix incorrect route prefix in APIRouter declaration 2023-08-26 17:38:56 -03:00
Gabriel Luiz Freitas Almeida
0f3bf9192d 🔒 chore(utils.py): refactor import statements and remove unused imports for better code organization and readability
🔒 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
2023-08-26 17:38:43 -03:00
Gabriel Luiz Freitas Almeida
ed06c3b4d9 🐛 fix(conftest.py): import missing Flow model in tests/conftest.py to fix NameError
 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
2023-08-26 17:38:21 -03:00
Gabriel Luiz Freitas Almeida
96c7d4c897 🔧 chore(api_key.py): remove index and unique constraints from api_key field in UnmaskedApiKeyRead model to align with database schema changes 2023-08-25 20:12:49 -03:00
Cristhian Zanforlin Lousa
512be8b9a7 Merge branch 'login' of https://github.com/logspace-ai/langflow into login 2023-08-25 20:06:16 -03:00
Cristhian Zanforlin Lousa
be0c7ce368 🐛 fix(ApiKeysPage): handle case when last_used_at date is invalid to prevent error in moment.js formatting
🎨 style(ApiKeysPage): improve table header className logic for better readability
2023-08-25 20:06:11 -03:00
Gabriel Luiz Freitas Almeida
3d82647b4f 🐛 fix(api_key/crud.py): update create_api_key function to return the generated API key instead of the unmasked API key 2023-08-25 20:05:47 -03:00
Gabriel Luiz Freitas Almeida
2151f1e63f 📦 chore(pyproject.toml): add pytest-mock as a development dependency for better testing capabilities 2023-08-25 20:03:16 -03:00
Gabriel Luiz Freitas Almeida
282e6b0c18 🐛 fix(endpoints.py): import validate_api_key function from auth.utils to fix missing dependency
 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
2023-08-25 20:03:15 -03:00
Gabriel Luiz Freitas Almeida
dc20de76b5 🔧 chore(api_key.py): improve error handling in delete_api_key_route function
🔧 chore(add_apikey_table.py): add hashed_api_key column to apikey table
🔧 chore(update_api_key.py): add migration script to update apikey table with hashed_api_key column
2023-08-25 20:03:14 -03:00
Cristhian Zanforlin Lousa
8c763d798e 🐛 fix(PaginatorComponent): add useEffect to update maxPageIndex when totalRowsCount changes
 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
2023-08-25 20:02:16 -03:00
Cristhian Zanforlin Lousa
d546647518 Merge branch 'login' of https://github.com/logspace-ai/langflow into login 2023-08-25 19:50:43 -03:00
Cristhian Zanforlin Lousa
9509edb66d 🔧 fix(App.tsx): remove unused imports and variables for better code cleanliness
 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
2023-08-25 19:50:38 -03:00
anovazzi1
8fda2e207c refactor(ApiKeysPage): update the message displayed when there are no keys assigned to the user for better clarity and user experience 2023-08-25 19:31:24 -03:00
anovazzi1
c296fc18af removed id column from api keys table 2023-08-25 19:29:43 -03:00
Cristhian Zanforlin Lousa
6867811626 Merge branch 'login' of https://github.com/logspace-ai/langflow into login 2023-08-25 19:08:44 -03:00
Cristhian Zanforlin Lousa
89d69af7f8 🐛 fix(authContext.tsx): initialize accessToken and refreshToken with values from cookies to maintain user session
 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"
2023-08-25 19:08:38 -03:00
anovazzi1
5efdde4aca fix(API): remove unused user_id parameter in getApiKey function
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
2023-08-25 18:50:37 -03:00
Gabriel Luiz Freitas Almeida
a31d1f104d 🐛 fix(api_key.py): add hashed_api_key field to ApiKey model to store hashed version of api_key
🐛 fix(crud.py): update create_api_key function to use hashed version of generated_api_key and mask the api_key for security reasons
2023-08-25 18:35:08 -03:00
anovazzi1
927379b245 fix(manager.py): catch all exceptions instead of just TypeError when loading JSON payload to handle any parsing errors
feat(index.tsx): add authentication token to WebSocket URL to authenticate the user
2023-08-25 18:15:59 -03:00
Cristhian Zanforlin Lousa
38eb1a2d79 Merge branch 'login' of https://github.com/logspace-ai/langflow into login 2023-08-25 17:54:57 -03:00
Cristhian Zanforlin Lousa
1f42910c55 🐛 fix(tabsContext.tsx): add delay to refreshFlows function to prevent race condition with API call
🐛 fix(typesContext.tsx): add delay to useEffect to prevent race condition with API call
2023-08-25 17:54:37 -03:00
igorrCarvalho
928d696751 Merge branch 'login' of github.com:logspace-ai/langflow into login 2023-08-25 17:49:08 -03:00
igorrCarvalho
10ba3381e0 Refactor: Move github stars context to darkContext 2023-08-25 17:48:39 -03:00
anovazzi1
d2f5a5d564 moved api interceptor 2023-08-25 17:21:54 -03:00
Gabriel Luiz Freitas Almeida
1f99f59581 🔧 chore(Chroma.py): add type ignore comment to import statement for chromadb module to suppress type checking error 2023-08-25 17:19:40 -03:00
anovazzi1
17cbc64273 update browser route context location 2023-08-25 17:17:09 -03:00
Cristhian Zanforlin Lousa
1ed89cbbad merge fix 2023-08-25 17:10:54 -03:00
Gabriel Luiz Freitas Almeida
4e1710bcc7 🐛 fix(chat.py): add missing import statement for Query from fastapi
🐛 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
2023-08-25 17:01:32 -03:00
Gabriel Luiz Freitas Almeida
fc32ee63e1 🐛 fix(alembic): change "user_id" column in "flow" table to be nullable to handle existing data without a user_id 2023-08-25 16:31:24 -03:00
Gabriel Luiz Freitas Almeida
a290a68605 🔧 chore(update_all_tables.py): remove unused code block to improve code readability and maintainability 2023-08-25 16:30:16 -03:00
Gabriel Luiz Freitas Almeida
812864eded 🔧 fix(test_agents_template.py): update test functions to include logged_in_headers parameter to test authenticated requests
🔧 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
2023-08-25 16:30:01 -03:00
Gabriel Luiz Freitas Almeida
1364fa0e0f 🔧 chore(conftest.py): change scope of client fixture to module and add autouse=True to ensure it is automatically used by all tests in the module 2023-08-25 16:29:51 -03:00
Gabriel Luiz Freitas Almeida
aa633ff2de 🐛 fix(utils.py): change auth_scheme_dependency function to be async to match its usage in get_current_user function 2023-08-25 16:29:43 -03:00
Gabriel Luiz Freitas Almeida
e2122567be 🐛 fix(base.py): remove unnecessary user_id parameter from _build_each_node_in_params_dict() method call in Vertex class 2023-08-25 16:29:34 -03:00
Gabriel Luiz Freitas Almeida
89ea8e45f6 🔧 chore(login.py): import get_current_active_user function to improve code readability and maintainability
 feat(login.py): add current_user dependency to refresh_token endpoint to ensure only authenticated users can refresh their tokens
2023-08-25 16:29:24 -03:00
Gabriel Luiz Freitas Almeida
132642347f 🔧 fix(endpoints.py): add current_user dependency to get_all endpoint to enforce authentication and authorization
🚀 feat(endpoints.py): import User model and get_current_active_user function to enable authentication and authorization in get_all endpoint
2023-08-25 16:29:15 -03:00
Gabriel Luiz Freitas Almeida
2af4508e5e feat(main.py): add health endpoint to check the status of the application 2023-08-25 16:28:56 -03:00
Gabriel Luiz Freitas Almeida
648bb25b3f 🔧 chore(update_all_tables.py): add missing index and foreign key constraints to apikey table
🔧 chore(update_all_tables.py): add missing index and foreign key constraints to flow table
2023-08-25 15:31:16 -03:00
Gabriel Luiz Freitas Almeida
8b99cc06c4 🔧 fix(update_all_tables.py): handle potential OperationalError when adding columns to 'apikey' table
 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
2023-08-25 15:28:49 -03:00
Gabriel Luiz Freitas Almeida
706cdc0874 🚀 feat(alembic): add migration script to update all tables
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.
2023-08-25 15:26:24 -03:00
Gabriel Luiz Freitas Almeida
853ce351c9 🐛 fix(chat.py): add missing import statement for get_current_active_user function
 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
2023-08-25 15:26:24 -03:00
Gabriel Luiz Freitas Almeida
b41b3038f3 🔄 refactor(login.py): update import statement for Token model to match new location in schemas module 2023-08-25 15:26:23 -03:00
Gabriel Luiz Freitas Almeida
3d650c8491 feat(schemas.py): add Token schema to represent access and refresh tokens in API responses 2023-08-25 15:26:22 -03:00