| import logging | |
| logger = logging.getLogger(__name__) | |
| async def get_role_based_max_depth(user_role: str | None, credential_service) -> int: | |
| """ | |
| Fetches max crawl depth from database based on user role. | |
| Physically isolated for Phase 4.6.16 modularization. | |
| Args: | |
| user_role: The role of the user (sales, marketing, manager, admin) | |
| credential_service: The credential service instance to fetch settings | |
| Returns: | |
| int: The maximum crawl depth allowed for the role (default: 1) | |
| """ | |
| if not user_role: | |
| return 1 | |
| role_map = { | |
| "sales": "CRAWL_MAX_DEPTH_SALES", | |
| "marketing": "CRAWL_MAX_DEPTH_MARKETING", | |
| "manager": "CRAWL_MAX_DEPTH_MANAGER", | |
| "admin": "CRAWL_MAX_DEPTH_ADMIN", | |
| "system_admin": "CRAWL_MAX_DEPTH_ADMIN", | |
| } | |
| setting_key = role_map.get(user_role.lower()) | |
| if setting_key: | |
| try: | |
| # Use credential_service to fetch from archon_settings | |
| settings = await credential_service.get_credentials_by_category("crawler_rbac") | |
| return int(settings.get(setting_key, 1)) | |
| except Exception as e: | |
| logger.warning(f"Failed to fetch RBAC crawl depth for {user_role}: {e}") | |
| return 1 | |
| return 1 | |