Commit graph

1,352 commits

Author SHA1 Message Date
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
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
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
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
48965a8ba8 🐛 fix(endpoints.py): add check for empty custom_component_dict to prevent errors
🐛 fix(login.py): update import statement for auth utils module
🐛 fix(users.py): update import statement for auth utils module
🐛 fix(factory.py): remove unnecessary argument from create method
🐛 fix(test_cli.py): convert temp_dir to string before checking if it's in COMPONENTS_PATH
2023-08-21 19:14:58 -03:00
Gabriel Luiz Freitas Almeida
0a235ef8d5 🔀 refactor(manager.py): refactor service initialization in manager.py for better organization and readability
🔀 refactor(schema.py): add AUTH_MANAGER service type to the ServiceType enum for better organization and consistency
2023-08-21 16:58:22 -03:00
Gabriel Luiz Freitas Almeida
031ab7e4b7 📦 chore(factory.py): add AuthManagerFactory class to handle creation of AuthManager service
🐛 fix(service.py): add type hints and import for SettingsManager in AuthManager class
2023-08-21 16:58:09 -03:00
Gabriel Luiz Freitas Almeida
5d9e631ddf 🔨 refactor(factory.py): remove unused parameter 'settings_service' from create method in CacheManagerFactory class 2023-08-21 16:56:20 -03:00
Gabriel Luiz Freitas Almeida
712d57be53 🔄 refactor(factory.py): rename settings_service parameter to settings_manager for better clarity and consistency
🐛 fix(factory.py): update variable name in if condition from settings_service.settings.DATABASE_URL to settings_manager.settings.DATABASE_URL to fix incorrect variable reference
2023-08-21 16:56:07 -03:00
Gabriel Luiz Freitas Almeida
fa9ecd0039 🚀 feat(models/__init__.py): add User and Token models to __all__ list for better module importability 2023-08-21 16:55:45 -03:00
Gabriel Luiz Freitas Almeida
181620e538 🔧 fix(manager.py): import List from typing module to fix type hinting error
 feat(manager.py): add support for registering factories with dependencies to handle service creation
🔧 fix(manager.py): fix service creation logic to handle dependencies and create services in the correct order
 feat(manager.py): add support for initializing session manager with dependencies
2023-08-21 16:37:56 -03:00
Gabriel Luiz Freitas Almeida
b309d8be0e 🔒 chore(auth.py): import necessary modules and add password context and OAuth2 password bearer scheme for authentication
🔒 chore(auth.py): add password context using bcrypt scheme and OAuth2 password bearer scheme for authentication
2023-08-21 16:34:23 -03:00
Gabriel Luiz Freitas Almeida
244a967517 🔨 refactor(service.py): remove unused imports and unused functions in the AuthManager class
🔧 chore(service.py): refactor the AuthManager class to accept a settings_manager parameter in the constructor for better dependency injection
🔧 chore(service.py): refactor the run_oauth2_scheme method in the AuthManager class to use the oauth2_scheme from the settings_manager instead of a hardcoded value

 feat(auth/utils.py): add authentication and authorization utilities for user authentication and token generation
🔒 chore(auth/utils.py): add auth_scheme_dependency function to handle authentication scheme dependency
🔒 chore(auth/utils.py): add get_current_user function to retrieve the current authenticated user
🔒 chore(auth/utils.py): add get_current_active_user function to retrieve the current active authenticated user
🔒 chore(auth/utils.py): add verify_password function to verify the password
🔒 chore(auth/utils.py): add get_password_hash function to get the hashed password
🔒 chore(auth/utils.py): add create_token function to create a JWT token
🔒 chore(auth/utils.py): add create_super_user function to create a super user
🔒 chore(auth/utils.py): add create_user_longterm_token function to create a long-term token for a user
🔒 chore(auth/utils.py): add create_user_api_key function to create an API key for a user
🔒 chore(auth/utils.py): add get_user_id_from_token function to get the user ID from a token
🔒 chore(auth/utils.py): add create_user_tokens function to create access and refresh tokens for a user
🔒 chore(auth/utils.py): add create_refresh_token function to create new access and refresh tokens using a refresh token
🔒 chore(auth/utils.py): add authenticate_user function to authenticate a user with username and password
2023-08-21 16:33:56 -03:00
Gabriel Luiz Freitas Almeida
e6bd9a07d5 🔧 fix(auth.py): update import statements for User model and related functions to match new file structure
🔧 fix(auth.py): update import statements for settings_manager and related settings to match new file structure
🔧 fix(auth.py): update references to settings_manager.settings to settings_manager.auth_settings to match new file structure
🔧 fix(auth.py): update references to settings_manager.settings to settings_manager.auth_settings to match new file structure
🔧 fix(auth.py): update references to settings_manager.settings to settings_manager.auth_settings to match new file structure
🔧 fix(auth.py): update references to settings_manager.settings to settings_manager.auth_settings to match new file structure
🔧 fix(auth.py): update references to settings_manager.settings to settings_manager.auth_settings to match new file structure
🔧 fix(auth.py): update references to settings_manager.settings to settings_manager.auth_settings to match new file structure
🔧 fix(auth.py): update references to settings_manager.settings to settings_manager.auth_settings to match new file structure
🔧 fix(auth.py): update references to settings_manager.settings to settings_manager.auth_settings to match new file structure
🔧 fix(auth.py): update references to settings_manager.settings to settings_manager.auth_settings to match new file structure
🔧 fix(auth.py): update references to settings_manager.settings to settings_manager.auth_settings to match new file structure
🔧 fix(auth.py): update references to settings_manager.settings to settings_manager.auth_settings to match new file structure
🔧 fix(auth.py): update references to settings_manager.settings to settings_manager.auth_settings to match new file structure
🔧 fix(auth.py): update references to settings_manager.settings to settings_manager.auth_settings to match new file structure
🔧 fix(auth.py): update references to settings_manager.settings to settings_manager.auth_settings to match new file structure
🔧 fix(auth.py): update references to settings_manager.settings to settings_manager.auth_settings to match new file structure
🔧 fix(auth.py): update references to settings_manager.settings to settings_manager.auth_settings to match new file structure
🔧 fix(auth.py): update references to settings_manager.settings to settings_manager.auth_settings to match new file structure
🔧 fix(auth.py): update references to settings_manager.settings to settings_manager.auth_settings to match new file structure
🔧 fix(auth.py): update references to settings_manager.settings to settings_manager.auth_settings to match new file structure
2023-08-21 16:33:27 -03:00
Gabriel Luiz Freitas Almeida
f4d12f27e6 Adds new AuthSettings 2023-08-21 16:12:49 -03:00
Gabriel Luiz Freitas Almeida
3d5cf84095 📦 feat(models): add Token model to represent access and refresh tokens
📦 feat(models): add User model to represent user data

📦 feat(models): add UserAddModel, UserListModel, UserPatchModel, and UsersResponse models for user CRUD operations

📦 feat(models): add get_user_by_username and get_user_by_id functions to retrieve user data from the database

📦 feat(models): add update_user function to update user data in the database

📦 feat(models): add update_user_last_login_at function to update the last login timestamp of a user
2023-08-21 15:59:51 -03:00
gustavoschaedler
463831e8df Merge remote-tracking branch 'origin/dev' into authentication 2023-08-17 19:50:27 +01:00
gustavoschaedler
3c4db074e4 🔧 fix(base.py): update BASE_COMPONENTS_PATH to point to the correct directory
🔧 fix(base.py): improve readability by removing commented out code and adding line breaks
🔧 fix(base.py): improve readability by adding line breaks and indentation
🔧 fix(base.py): improve readability by adding line breaks and indentation
🔧 fix(base.py): improve readability by adding line breaks and indentation
🔧 fix(base.py): improve readability by adding line breaks and indentation
🔧 fix(base.py): improve readability by adding line breaks and indentation
🔧 fix(base.py): improve readability by adding line breaks and indentation
🔧 fix(base.py): improve readability by adding line breaks and indentation
🔧 fix(base.py): improve readability by adding line breaks and indentation
🔧 fix(base.py): improve readability by adding line breaks and indentation
🔧 fix(base.py): improve readability by adding line breaks and indentation
🔧 fix(base.py): improve readability by adding line breaks and indentation
🔧 fix(base.py): improve readability by adding line breaks and indentation
🔧 fix(base.py): improve readability by adding line breaks and indentation
🔧 fix(base.py): improve readability by adding line breaks and indentation
🔧 fix(base.py): improve readability by adding line breaks and indentation
🔧 fix(base.py): improve readability by adding line breaks and indentation
🔧 fix(base.py): improve readability by adding line breaks and indentation
🔧 fix(base.py): improve readability by adding line breaks and indentation
🔧 fix(base.py): improve readability by adding line breaks and indentation
🔧 fix(base.py): improve readability by adding line breaks and indentation
🔧 fix(base.py): improve readability by adding line breaks and indentation
🔧 fix(base.py): improve readability by adding line breaks and indentation
🔧 fix(base.py): improve readability by adding line breaks and indentation
🔧 fix(base.py): improve readability by adding line breaks and indentation
🔧 fix(base.py): improve readability by adding line breaks and indentation
🔧 fix(base.py): improve readability by adding line breaks and indentation
🔧 fix(base.py): improve readability by adding line breaks and indentation
🔧 fix(base.py): improve readability by adding line breaks and indentation
🔧 fix(base.py): improve readability by adding line breaks and
2023-08-17 19:30:46 +01:00
Gabriel Luiz Freitas Almeida
1b94fc9d92 🐛 fix(endpoints.py): fix duplicate loading of custom components from the same path
 feat(endpoints.py): improve performance by skipping duplicate loading of custom components from the same path
2023-08-17 10:26:17 -03:00
Lucas Oliveira
500fc98a00 Merge branch 'main' into dev 2023-08-17 10:13:38 -03:00
Gabriel Luiz Freitas Almeida
e210fc316a 🐛 fix(__main__.py): import and call initialize_settings_manager() to ensure settings manager is initialized
 feat(manager.py): add check to prevent duplicate registration of service factories in ServiceManager class
 feat(manager.py): add initialize_settings_manager() function to initialize the settings manager
2023-08-17 08:23:50 -03:00
Gabriel Luiz Freitas Almeida
87958c255e 🐛 fix(endpoints.py): change type annotation of session_id parameter in process_flow function to Union[None, str] to allow for None value
🐛 fix(schemas.py): change type annotation of session_id field in ProcessResponse schema to Optional[str] to allow for None value
🐛 fix(run.py): change return type annotation of build_sorted_vertices_with_caching function to Tuple[Any, Dict] to specify the return types
🐛 fix(process.py): change return type annotation of load_langchain_object function to Tuple[Union[Chain, VectorStore], Dict[str, Any], str] to include the session_id value in the return tuple
2023-08-16 21:43:35 -03:00
Gabriel Luiz Freitas Almeida
199ea3b1b8 🔧 fix(process.py): refactor process_graph_cached function for better readability and maintainability
 feat(process.py): add clear_caches_if_needed function to clear cache if clear_cache flag is set
 feat(process.py): add load_langchain_object function to load langchain_object and artifacts from data_graph
 feat(process.py): add process_inputs function to process inputs and add artifacts to inputs
 feat(process.py): add generate_result function to generate result and thought based on langchain_object and inputs
2023-08-16 21:29:17 -03:00
Gabriel Luiz Freitas Almeida
2f928c7d84 Merge remote-tracking branch 'origin/dev' into add_session_id 2023-08-16 19:31:29 -03:00
Gabriel Luiz Freitas Almeida
7539ba3166 Merge remote-tracking branch 'origin/dev' into fix_db_location 2023-08-16 19:21:47 -03:00
gustavoschaedler
98a24d331c 🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key.py): remove unnecessary empty line
🔧 fix(api_key
2023-08-16 21:00:39 +01:00
gustavoschaedler
4eeb9449cb 🔧 fix(main.py): reformat import statements to improve readability and maintainability
 feat(main.py): add support for API key routes to enable API key management functionality
📝 docs(api_key.py): add API key routes for retrieving, creating, and deleting API keys
2023-08-16 20:20:18 +01:00
gustavoschaedler
91fcf33506 🐛 fix(auth.py): import get_session from correct module to fix import error
 feat(auth.py): add support for creating user API key and getting user ID from token
🐛 fix(base.py): fix typo in API_KEY_SECRET_KEY variable name
🐛 fix(base.py): fix typo in FIRST_SUPERUSER and FIRST_SUPERUSER_PASSWORD variable names
🐛 fix(base.py): fix indentation in load_settings_from_yaml function
2023-08-15 23:47:50 +01:00
gustavoschaedler
effbddbcb0 🐛 fix(base.py): set AUTO_LOGIN to True to enable automatic login as a super user
🔧 chore(base.py): improve readability by formatting logger.debug statements
2023-08-15 20:56:10 +01:00
Gabriel Luiz Freitas Almeida
69d03f64b1 🔧 fix(base.py): remove redundant imports and nested class declaration
 feat(base.py): add validation logic to set the DATABASE_URL value based on environment variables and file paths
2023-08-15 16:37:21 -03:00
Gabriel Luiz Freitas Almeida
6e3a6ce8c3 🐛 fix(base.py): set CONFIG_DIR to default value if not provided to improve functionality
 feat(base.py): add support for setting CONFIG_DIR to a cache directory if not provided to improve file management
🐛 fix(base.py): set DATABASE_URL to default value if not provided to improve functionality
 feat(base.py): add support for setting DATABASE_URL to LANGFLOW_DATABASE_URL environment variable if not provided to improve configurability
🐛 fix(base.py): raise ValueError if CONFIG_DIR is not set when using sqlite database to improve error handling
 feat(base.py): add support for copying existing sqlite database to new location if CONFIG_DIR is set to improve migration process
2023-08-15 16:33:47 -03:00
gustavoschaedler
3cd8aff96e 🐛 fix(auth.py): change create_user_longterm_token to use create_super_user to ensure super user exists before creating token
 feat(auth.py): add create_super_user function to create super user if it doesn't exist
🐛 fix(login.py): remove hardcoded user_id and use create_user_longterm_token without arguments
🐛 fix(users.py): remove redundant password hashing in add_super_user_for_testing_purposes_delete_me_before_merge_into_dev
🐛 fix(base.py): change AUTO_LOGIN default value to False and add FIRST_SUPERUSER and FIRST_SUPERUSER_PASSWORD settings
2023-08-15 20:32:53 +01:00
gustavoschaedler
695a337c6c 🔧 fix(auth.py): move SECRET_KEY, ALGORITHM, ACCESS_TOKEN_EXPIRE_MINUTES, and REFRESH_TOKEN_EXPIRE_MINUTES to environment variables for better security and configurability
 feat(auth.py): add support for loading settings from environment variables in create_token and create_user_tokens functions
🔧 fix(auth.py): use settings_manager to access SECRET_KEY, ALGORITHM, ACCESS_TOKEN_EXPIRE_MINUTES, and REFRESH_TOKEN_EXPIRE_MINUTES in create_token and create_user_tokens functions
🔧 fix(auth.py): use settings_manager to access SECRET_KEY and ALGORITHM in get_current_user function
 feat(auth.py): add create_user_longterm_token function to create long-term access token for auto login
 feat(login.py): add auto_login endpoint to automatically log in as a super user if AUTO_LOGIN is enabled in the settings
🔧 fix(settings/base.py): add SECRET_KEY, ALGORITHM, ACCESS_TOKEN_EXPIRE_MINUTES, REFRESH_TOKEN_EXPIRE_MINUTES, and AUTO_LOGIN settings to the base settings class
 feat(settings/base.py): add AUTO_LOGIN setting to control whether auto login is enabled or not
🔧 fix(settings/base.py): use secrets.token_hex(32) to generate a random SECRET_KEY instead of hardcoding it
🔧 fix(settings/base.py): update comments and formatting in the base settings class
 feat(settings/base.py): add AUTO_LOGIN setting to control whether auto login is enabled or not
🔧 fix(settings/base.py): update comments and formatting in the base settings class
🔧 fix(settings/base.py): update comments and formatting in the base settings class
🔧 fix(settings/base.py): update comments and formatting in the base settings class
🔧 fix(settings/base.py): update comments and formatting in the base settings class
🔧 fix(settings/base.py): update comments and formatting in the base settings class
🔧 fix(settings/base.py): update comments and formatting in the base settings class
🔧 fix(settings/base.py): update comments and formatting in the base settings class
🔧 fix(settings/base.py): update comments and formatting in the base settings class
🔧 fix(settings/base.py): update comments and formatting in the base settings class
🔧 fix(settings/base.py): update comments and formatting in the base settings class
🔧 fix(settings/base.py): update comments and formatting in the base settings

🔥 refactor(settings.py): remove unused imports and code, clean up formatting and comments
🔀 chore(settings.py): merge duplicated code into reusable functions
📝 docs(settings.py): add missing docstrings and comments for better code documentation
🔧 chore(settings.py): update settings file to improve readability and maintainability
2023-08-15 20:00:02 +01:00
gustavoschaedler
c752872fc3 🐛 fix(auth.py): add optional parameter 'update_last_login' to 'create_user_tokens' function to allow updating last login only when needed
🐛 fix(auth.py): add optional parameter 'db' to 'create_refresh_token' function to allow passing the database session
 feat(login.py): pass 'update_last_login=True' to 'create_user_tokens' function to update last login when user successfully logs in
🐛 fix(ApiModal/index.tsx): fix formatting of 'codesArray' array to improve readability
🐛 fix(formModal/index.tsx): fix formatting of 'getWebSocketUrl' function to improve readability
🐛 fix(vite.config.ts): fix typo in comment
2023-08-15 16:50:40 +01:00
Gabriel Luiz Freitas Almeida
e63d6aa943 🐛 fix(endpoints.py): fix comparison of path variable to string in get_all() function to prevent duplicate processing of paths 2023-08-15 10:04:40 -03:00
Gabriel Luiz Freitas Almeida
b6d063a0fd 🐛 fix(settings.py): convert Path object to string before appending to list to avoid type error
🐛 fix(settings.py): check if value is already in the list before appending to avoid duplicates
2023-08-15 09:15:28 -03:00
gustavoschaedler
ab61edfbf9 Merge remote-tracking branch 'origin/dev' into authentication 2023-08-14 22:52:57 +01:00
gustavoschaedler
e9a94d7374 🐛 fix(auth.py): remove unnecessary blank line
🐛 fix(auth.py): add validation for inactive users and users waiting for approval in authenticate_user function
 feat(login.py): remove unnecessary blank line
2023-08-14 22:46:55 +01:00
gustavoschaedler
501d7399a8 🔒 chore(auth.py): add support for retrieving current user and current active user
🔒 chore(auth.py): add support for creating user tokens with user id

🔒 chore(auth.py): add support for updating last_login_at when creating user tokens

🔒 chore(auth.py): add support for updating user information

🔒 chore(login.py): add support for retrieving current active user in login route

🐛 fix(users.py): fix import order and remove unused imports to improve code readability
 feat(users.py): add support for pagination in read_all_users endpoint to retrieve a list of users with pagination
🔧 refactor(users.py): rename update_user function to patch_user for better semantics and consistency
🔧 refactor(users.py): refactor update_user function to use update_user function from models module for better code organization and reusability
 feat(users.py): add support for creating a superuser for testing purposes in add_super_user_for_testing_purposes_delete_me_before_merge_into_dev endpoint
2023-08-14 21:18:47 +01:00
Gabriel Luiz Freitas Almeida
e0f625e793 🐛 fix(utils.py): add condition to check if prompt has 'partial' attribute before calling it to prevent error 2023-08-14 17:17:57 -03:00