diff --git a/website_sale_aplicoop/controllers/website_sale.py b/website_sale_aplicoop/controllers/website_sale.py index 2f9de17..a777c25 100644 --- a/website_sale_aplicoop/controllers/website_sale.py +++ b/website_sale_aplicoop/controllers/website_sale.py @@ -1241,8 +1241,8 @@ class AplicoopWebsiteSale(WebsiteSale): def eskaera_list(self, **post): """Página de pedidos de grupo abiertos esta semana. - Muestra todos los pedidos abiertos de la compañía del usuario. - Seguridad controlada por record rule (company_id filtering). + Para usuarios portal: solo muestra pedidos de sus grupos de consumo asignados. + Para usuarios internos: muestra todos los pedidos de la compañía. """ group_order_obj = request.env["group.order"].sudo() current_user = request.env.user @@ -1252,9 +1252,16 @@ class AplicoopWebsiteSale(WebsiteSale): _logger.error("eskaera_list: User %d has no partner_id", current_user.id) return request.redirect("/web") - # Obtener pedidos activos para esta semana (ya filtrados por company_id via record rule) + # Obtener pedidos activos para esta semana (filtrados por company_id) active_orders = group_order_obj.get_active_orders_for_week() + # Para usuarios portal: filtrar solo por sus grupos de consumo + if current_user.share: + consumer_group_ids = current_user.partner_id.group_ids.ids + active_orders = active_orders.filtered( + lambda o: any(g.id in consumer_group_ids for g in o.group_ids) + ) + _logger.info("=== ESKAERA LIST ===") _logger.info("User: %s (ID: %d)", current_user.name, current_user.id) _logger.info("User company: %s", current_user.company_id.name) @@ -1482,8 +1489,14 @@ class AplicoopWebsiteSale(WebsiteSale): if group_order.state != "open": return request.redirect("/eskaera") - # Seguridad: record rule controla acceso por company_id - # No additional group validation needed + # Seguridad: para usuarios portal, verificar que pertenecen a un grupo de consumo + # que tiene acceso a este pedido + current_user = request.env.user + if current_user.share: + consumer_group_ids = current_user.partner_id.group_ids.ids + order_group_ids = group_order.group_ids.ids + if not any(gid in consumer_group_ids for gid in order_group_ids): + return request.redirect("/eskaera") # Print order cutoff date information _logger.info("=== ESKAERA SHOP ===")