2025-10-07 12:38:06 -04:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
|
|
class Family::MembershipPolicy < ApplicationPolicy
|
|
|
|
|
def show?
|
2025-10-11 08:17:48 -04:00
|
|
|
return false unless user
|
|
|
|
|
|
2025-10-07 12:38:06 -04:00
|
|
|
user.family == record.family
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def update?
|
2025-10-11 08:17:48 -04:00
|
|
|
return false unless user
|
|
|
|
|
|
2025-10-07 12:38:06 -04:00
|
|
|
# Users can update their own settings
|
|
|
|
|
return true if user == record.user
|
|
|
|
|
|
|
|
|
|
# Family owners can update any member's settings
|
2025-10-11 08:17:48 -04:00
|
|
|
show? && user.family_owner?
|
2025-10-07 12:38:06 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def destroy?
|
2025-10-11 08:17:48 -04:00
|
|
|
return false unless user
|
|
|
|
|
|
2025-10-07 12:38:06 -04:00
|
|
|
# Users can remove themselves (handled by family leave logic)
|
|
|
|
|
return true if user == record.user
|
|
|
|
|
|
|
|
|
|
# Family owners can remove other members
|
2025-10-11 08:17:48 -04:00
|
|
|
update?
|
2025-10-07 12:38:06 -04:00
|
|
|
end
|
|
|
|
|
end
|