[FIX] website_sale_aplicoop: filtrar pedidos por grupo de consumo en controller eskaera_list y eskaera_shop
This commit is contained in:
parent
5975e4713a
commit
39b9f887a9
1 changed files with 18 additions and 5 deletions
|
|
@ -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 ===")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue