Commit graph

1,420 commits

Author SHA1 Message Date
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
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
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
Gabriel Luiz Freitas Almeida
d8f5efabad 🐛 fix(loading.py): add type hinting for TYPE_CHECKING to improve code readability
🐛 fix(loading.py): add optional user_id parameter to instantiate_class and instantiate_based_on_type functions to support user-specific custom components
 feat(loading.py): modify instantiate_custom_component function to use user_id parameter and improve code readability
2023-08-25 15:26:21 -03:00
Gabriel Luiz Freitas Almeida
1a50bcd183 🐛 fix(base.py): change return type of generator_build method to Generator[Vertex, None, None] for better type hinting and clarity
🐛 fix(base.py): add optional user_id parameter to _build and _build_list_of_nodes_and_update_params methods in Vertex class to support building with user-specific data
🐛 fix(base.py): add optional user_id parameter to _get_and_instantiate_class method in Vertex class to support building with user-specific data
🐛 fix(custom_component.py): add user_id attribute to CustomComponent class to store the user ID associated with the component
🐛 fix(custom_component.py): add user_id parameter to list_flows method in CustomComponent class to filter flows by user ID
🐛 fix(custom_component.py): add user_id parameter to get_flow method in CustomComponent class to filter flows by user ID
🐛 fix(conftest.py): add client parameter to active_user fixture in tests to fix missing dependency error
2023-08-25 15:26:21 -03:00
Gabriel Luiz Freitas Almeida
c268b2be17 🔥 refactor(models): remove Token model and references to it to simplify the codebase and remove unused code
🔥 refactor(test_custom_component.py): remove unused fixture and imports to clean up the test file
🔧 chore(test_custom_component.py): update component fixture to include user_id parameter for testing purposes
2023-08-25 15:26:20 -03:00
Gabriel Luiz Freitas Almeida
00e5f70fe1 🔀 chore(user.py): add relationship to flows in User model 2023-08-25 12:49:46 -03:00
Gabriel Luiz Freitas Almeida
b5e4df9943 🐛 fix(flows.py): add missing import statement for User model
🐛 fix(flows.py): add missing import statement for TYPE_CHECKING
 feat(flows.py): add user_id field to FlowCreate model to allow specifying the user for a new flow
 feat(flows.py): add user_id field to FlowRead model to include the user_id in the response
 feat(flows.py): add user_id field to Flow model and create a relationship with User model
 feat(flows.py): add current_user dependency to create_flow endpoint to set the user_id for a new flow
 feat(flows.py): add current_user dependency to read_flows endpoint to filter flows by current user
 feat(flows.py): add current_user dependency to read_flow endpoint to filter flow by current user
 feat(flows.py): add current_user dependency to update_flow endpoint to filter flow by current user
 feat(flows.py): add current_user dependency to delete_flow endpoint to filter flow by current user
 feat(flows.py): add current_user dependency to create_flows endpoint to set the user_id for new flows
 feat(flows.py): add current_user dependency to upload_file endpoint to set the user_id for new flows
 feat(flows.py): add current_user dependency to download_file endpoint to filter flows by current user
🐛 fix(flow.py): add missing import statement for User model
 feat(flow.py): add user_id field to Flow model to associate a flow with a user
2023-08-25 12:49:24 -03:00
Gabriel Luiz Freitas Almeida
16695c8241
Merge branch 'login' into authentication 2023-08-25 15:23:22 +00:00
Gabriel Luiz Freitas Almeida
a4aeff6d79 🔧 fix(api_key.py): import missing dependencies and fix type annotations in api_key.py
🔧 fix(api_key.py): fix type annotations and import in api_key.py
🔧 fix(api_key.py): fix type annotations and
2023-08-25 12:21:14 -03:00
Gabriel Luiz Freitas Almeida
950b9d179b 🔥 refactor(user/utils.py): remove unused code and imports from user/utils.py module
 feat(test_api_key.py): add tests for API key creation, retrieval, and deletion
 feat(test_user.py): remove unused fixtures and imports from test_user.py module
2023-08-25 12:05:54 -03:00
Gabriel Luiz Freitas Almeida
ba081e81b6 🔀 chore(user.py): add type hinting for ApiKey import to improve code readability
🔀 chore(user.py): add relationship between User and ApiKey models to establish a one-to-many relationship
2023-08-25 12:05:20 -03:00
Gabriel Luiz Freitas Almeida
7783f4532e 📦 chore(user/crud.py): add CRUD operations for User model in database
🔒 fix(user/crud.py): add validation to prevent duplicate usernames during user update
🔄 refactor(user/crud.py): update user attributes and last_login_at timestamp during user update
🐛 fix(user/crud.py): handle IntegrityError during user update and rollback transaction
2023-08-25 12:04:51 -03:00
Gabriel Luiz Freitas Almeida
e42686738c 📦 chore(api_key/crud.py): add CRUD functions for managing API keys in the database
This commit adds the following functions to the `api_key/crud.py` file:
- `get_api_keys`: Retrieves a list of API keys associated with a specific user ID from the database.
- `create_api_key`: Generates a random API key, hashes it, and creates a new `ApiKey` object in the database.
- `delete_api_key`: Deletes an API key from the database based on its ID.

These functions provide the necessary functionality for managing API keys in the application's database.
2023-08-25 12:04:20 -03:00
Gabriel Luiz Freitas Almeida
82fbeace06 🔀 chore(api_key): update import and export names in __init__.py for better clarity and consistency
🔀 chore(api_key): add UnmaskedApiKeyRead model to represent an unmasked API key

🔀 chore(api_key): add user relationship to ApiKey model for easier access to associated user

🔀 chore(api_key): add user_id field to ApiKeyBase and ApiKeyCreate models for easier user association

🔀 chore(api_key): add mask_api_key validator to ApiKeyRead model to mask the API key for security reasons
2023-08-25 12:03:51 -03:00
Gabriel Luiz Freitas Almeida
edd58705e4 🔨 refactor(schemas.py): update import statement for ApiKeyRead to reflect new file structure
🔨 refactor(schemas.py): update import statement for ApiKeyRead to reflect
2023-08-25 12:03:03 -03:00
Gabriel Luiz Freitas Almeida
eb02220aad feat(api_key.py): add GET and POST routes for retrieving and creating API keys
🐛 fix(api_key.py): fix delete_api_key route to use correct dependencies and handle exceptions properly
2023-08-25 12:02:32 -03:00
Gabriel Luiz Freitas Almeida
8d1e1b8710 🔒 chore(api_key.py): update hardcoded API key value to improve security
🔒 chore(api_key.py): update hardcoded API key value to improve security by removing the actual key from the code and adding a placeholder comment
2023-08-25 10:25:28 -03:00
Gabriel Luiz Freitas Almeida
81816baada 🔧 fix(login.py): update import statement from sqlalchemy.orm to sqlmodel.Session for Session class
🔧 fix(users.py): update type annotation for current_user parameter from Session to User
🔧 fix(utils.py): update import statement from sqlalchemy.orm to sqlmodel.Session
🔧 fix(utils.py): update type annotation for token parameter from Annotated to Union[Coroutine, str]
🔧 fix(utils.py): update type annotation for get_user_by_username function return type from User to Union[User, None]
🔧 fix(utils.py): update type annotation for get_user_by_id function return type from User to Union[User, None]
🔧 fix(manager.py): update type annotation for dependencies parameter in register_factory method from List to Optional[List]
2023-08-25 10:24:01 -03:00
Gabriel Luiz Freitas Almeida
7e3d329df9 🔧 chore(auth.py): add API_V1_STR constant to improve code readability and maintainability
🐛 fix(auth.py): update tokenUrl in oauth2_scheme to use API_V1_STR constant for consistency
2023-08-25 10:17:25 -03:00
Gabriel Luiz Freitas Almeida
92a7ae6be7 🐛 fix(utils.py): remove unnecessary type casting in get_user_by_username and get_user_by_id functions
🐛 fix(utils.py): fix update_user function to correctly update user attributes and handle username conflicts
2023-08-25 10:16:04 -03:00
Gabriel Luiz Freitas Almeida
4517f8ad5c 🔧 fix(service.py): add request parameter to run_oauth2_scheme method in AuthManager class to handle FastAPI request object
🔧 fix(utils.py): add request parameter to auth_scheme_dependency function to handle FastAPI request object
🔧 fix(utils.py): change get_current_active_user function to synchronous and remove async keyword
 feat(utils.py): add get_current_active_superuser function to check if the current user is an active superuser
2023-08-25 10:11:24 -03:00
Gabriel Luiz Freitas Almeida
e4cbc0a07f 🐛 fix(users.py): change router tag from "Login" to "Users" for better categorization
 feat(users.py): add status code 201 to the response of the add_user endpoint to indicate successful creation of a new user
🐛 fix(users.py): update the usage of UserCreate model to create a new User instance using User.from_orm(user) for better compatibility
 feat(users.py): add current_user parameter to the read_current_user endpoint to enforce authentication and authorization
 feat(users.py): add current_user parameter to the read_all_users endpoint to enforce authentication and authorization
 feat(users.py): add current_user parameter to the delete_user endpoint to enforce authentication and authorization. Also, add validation checks to prevent deleting own user account and unauthorized deletion of users.
2023-08-25 10:10:57 -03:00
Gabriel Luiz Freitas Almeida
43b2d62661 🔀 chore(router.py): add login_router to the APIRouter to include login functionality
🔀 chore(__init__.py): import and include login_router in the APIRouter to enable login functionality
🔀 chore(login.py): add tags to the login router to categorize it as "Login" in the API documentation
2023-08-25 10:10:19 -03:00
Gabriel Luiz Freitas Almeida
6b82b730cd 🔥 refactor(auth): remove unused code and dependencies in auth module
🔥 refactor(routers): remove unused code and dependencies in routers module
2023-08-25 10:09:37 -03:00
Gabriel Luiz Freitas Almeida
41ef2fd2f7 🔧 fix(alembic): fix indentation and formatting issues in add_apikey_table migration script
 feat(alembic): add support for creating apikey and user tables in the database
🔥 chore(alembic): remove flowstyle and component tables from the database schema
2023-08-24 17:42:53 -03:00
Gabriel Luiz Freitas Almeida
58121cc6ca 🔥 refactor(main.py): remove unused routers from the app to improve code cleanliness and reduce unnecessary imports 2023-08-24 17:42:33 -03:00
Gabriel Luiz Freitas Almeida
d9cbf17b1a 🔄 chore(router.py): add users_router and api_key_router to the APIRouter to include the new routes for users and api keys
🔄 chore(__init__.py): add users_router and api_key_router to the __all__ list to include the new routes for users and api keys
🆕 feat(api_key.py): add new routes for retrieving, creating, and deleting API keys
🆕 feat(login.py): add new routes for user login, auto login, and token refresh
🆕 feat(schemas.py): add new schemas for API key response and users response
🆕 feat(users.py): add new routes for adding, reading, updating, and deleting users
🗑️ chore(health.py): remove health router as it is no longer needed
🔄 chore(utils.py): update import statements for User model and update_user_last_login_at function
2023-08-24 17:41:41 -03:00
anovazzi1
24e84aa2fe Merge branch 'dev' into bugfix-msgSuccess 2023-08-24 17:39:52 -03:00
Gabriel Luiz Freitas Almeida
1a51cc0848 📦 feat(api_key): add ApiKey model and related classes for database operations
📦 feat(component): add Component model and related classes for database operations

📦 feat(flow): add Flow model and related classes for database operations

📦 feat(token): add Token model for authentication

📦 feat(user): add User model and related classes for database operations

📦 feat(user): add utility functions for user operations
2023-08-24 17:32:26 -03:00
DiogenesBR
fe3a9c61df fix the imports of orjson_dumps 2023-08-24 14:57:18 +00:00
Gabriel Luiz Freitas Almeida
63ca408506 🔧 chore(alembic): add ApiKey table and remove FlowStyle and Component tables
🔄 refactor(alembic): downgrade migration to recreate FlowStyle and Component tables and remove User and ApiKey tables
2023-08-23 21:43:14 -03:00
Gabriel Luiz Freitas Almeida
061a9c09ba Merge remote-tracking branch 'origin/main' into dev 2023-08-23 21:42:34 -03:00
Gabriel Luiz Freitas Almeida
130dc7ead6 🔧 fix(schemas.py): import ApiKeyRead from api_key module to fix missing import error
🔧 fix(models/__init__.py): add ApiKey to __all__ list to fix missing import error
 feat(models/api_key.py): add ApiKey model and its related classes to support API key functionality
2023-08-23 21:12:11 -03:00
Gabriel Luiz Freitas Almeida
cea4063637 🐛 fix(GetRequest.py): convert timeout to integer to avoid potential type errors
 feat(PostRequest.py): update display name to "POST Request" for better clarity and consistency
2023-08-22 17:53:55 -03:00
Gabriel Luiz Freitas Almeida
c6fc60d4b2 🔧 chore(GetRequest.py): add timeout parameter to the GetRequest component for configurable request timeout
📝 docs(GetRequest.py): update component documentation to include information about the new timeout parameter
2023-08-22 17:52:17 -03:00
Gabriel Luiz Freitas Almeida
c22a792a7f 📚 docs(GetRequest.py): add documentation link for the GET Request component
📚 docs(JSONDocumentBuilder.py): add documentation link for the JSON Document Builder component
📚 docs(PostRequest.py): add documentation link for the POST Request component
📚 docs(UpdateRequest.py): add documentation link for the Update Request component
2023-08-22 17:45:45 -03:00