[FIX] website_sale_aplicoop: filtrar pedidos por grupo de consumo en controller eskaera_list y eskaera_shop

This commit is contained in:
snt 2026-04-07 23:19:30 +02:00
parent 5975e4713a
commit 39b9f887a9

View file

@ -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 ===")