add action changes for email sync

This commit is contained in:
Moritz 2025-10-16 17:51:31 +02:00
parent 91c5e17994
commit 5a0a261cd6
Signed by: moritz
GPG key ID: 1020A035E5DD0824
7 changed files with 331 additions and 0 deletions

View file

@ -48,6 +48,9 @@ defmodule Mv.Membership.Member do
# If no user provided, that's fine (optional relationship)
on_missing: :ignore
)
# Override member email with user email when linking
change Mv.Membership.Member.Changes.OverrideEmailFromUserOnLink
end
update :update_member do
@ -89,6 +92,11 @@ defmodule Mv.Membership.Member do
# If no user provided, remove existing relationship (allows user removal)
on_missing: :unrelate
)
# Override member email with user email when linking
change Mv.Membership.Member.Changes.OverrideEmailFromUserOnLink
# Sync email changes to linked user
change Mv.Membership.Member.Changes.SyncEmailToUser
end
end
@ -189,6 +197,14 @@ defmodule Mv.Membership.Member do
constraints min_length: 1
end
# IMPORTANT: Email Synchronization
# When member and user are linked, emails are automatically synced bidirectionally.
# User.email is the source of truth - when a link is established, member.email
# is overridden to match user.email. Subsequent changes to either email will
# sync to the other resource.
# See: Mv.Membership.Member.Changes.SyncEmailToUser
# Mv.Membership.Member.Changes.OverrideEmailFromUserOnLink
# Mv.Accounts.User.Changes.SyncEmailToMember
attribute :email, :string do
allow_nil? false
constraints min_length: 5, max_length: 254