Fix HasPermission check to handle nil member_id gracefully
This commit is contained in:
parent
403eda3908
commit
5c0786ebca
1 changed files with 12 additions and 2 deletions
|
|
@ -348,12 +348,22 @@ defmodule Mv.Authorization.Checks.HasPermission do
|
||||||
"Member" ->
|
"Member" ->
|
||||||
# User.member_id → Member.id (inverse relationship)
|
# User.member_id → Member.id (inverse relationship)
|
||||||
# Filter: member.id == actor.member_id
|
# Filter: member.id == actor.member_id
|
||||||
{:filter, expr(id == ^actor.member_id)}
|
# If actor has no member_id, return no results (use false or impossible condition)
|
||||||
|
if is_nil(actor.member_id) do
|
||||||
|
{:filter, expr(false)}
|
||||||
|
else
|
||||||
|
{:filter, expr(id == ^actor.member_id)}
|
||||||
|
end
|
||||||
|
|
||||||
"CustomFieldValue" ->
|
"CustomFieldValue" ->
|
||||||
# CustomFieldValue.member_id → Member.id → User.member_id
|
# CustomFieldValue.member_id → Member.id → User.member_id
|
||||||
# Filter: custom_field_value.member_id == actor.member_id
|
# Filter: custom_field_value.member_id == actor.member_id
|
||||||
{:filter, expr(member_id == ^actor.member_id)}
|
# If actor has no member_id, return no results
|
||||||
|
if is_nil(actor.member_id) do
|
||||||
|
{:filter, expr(false)}
|
||||||
|
else
|
||||||
|
{:filter, expr(member_id == ^actor.member_id)}
|
||||||
|
end
|
||||||
|
|
||||||
_ ->
|
_ ->
|
||||||
# Fallback for other resources
|
# Fallback for other resources
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue