refactor: email sync changes
This commit is contained in:
parent
2693f67d33
commit
001fca1d16
7 changed files with 108 additions and 121 deletions
|
|
@ -93,8 +93,11 @@ defmodule Mv.Accounts.User do
|
|||
# complex checks that are not supported in atomic operations.
|
||||
require_atomic? false
|
||||
|
||||
# Sync email changes to linked member
|
||||
change Mv.Accounts.User.Changes.SyncEmailToMember
|
||||
# Sync email changes to linked member (User → Member)
|
||||
# Only runs when email is being changed
|
||||
change Mv.EmailSync.Changes.SyncUserEmailToMember do
|
||||
where [changing(:email)]
|
||||
end
|
||||
end
|
||||
|
||||
create :create_user do
|
||||
|
|
@ -118,8 +121,8 @@ defmodule Mv.Accounts.User do
|
|||
on_missing: :ignore
|
||||
)
|
||||
|
||||
# Override member email with user email when linking
|
||||
change Mv.Accounts.User.Changes.OverrideMemberEmailOnLink
|
||||
# Sync user email to member when linking (User → Member)
|
||||
change Mv.EmailSync.Changes.SyncUserEmailToMember
|
||||
end
|
||||
|
||||
update :update_user do
|
||||
|
|
@ -147,10 +150,11 @@ defmodule Mv.Accounts.User do
|
|||
on_missing: :unrelate
|
||||
)
|
||||
|
||||
# Sync email changes to linked member
|
||||
change Mv.Accounts.User.Changes.SyncEmailToMember
|
||||
# Override member email with user email when linking
|
||||
change Mv.Accounts.User.Changes.OverrideMemberEmailOnLink
|
||||
# Sync email changes and handle linking (User → Member)
|
||||
# Runs when email OR member relationship changes
|
||||
change Mv.EmailSync.Changes.SyncUserEmailToMember do
|
||||
where any([changing(:email), changing(:member)])
|
||||
end
|
||||
end
|
||||
|
||||
# Admin action for direct password changes in admin panel
|
||||
|
|
@ -200,8 +204,8 @@ defmodule Mv.Accounts.User do
|
|||
|> Ash.Changeset.change_attribute(:oidc_id, user_info["sub"] || user_info["id"])
|
||||
end
|
||||
|
||||
# Override member email with user email when linking (if member relationship exists)
|
||||
change Mv.Accounts.User.Changes.OverrideMemberEmailOnLink
|
||||
# Sync user email to member when linking (User → Member)
|
||||
change Mv.EmailSync.Changes.SyncUserEmailToMember
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -281,9 +285,8 @@ defmodule Mv.Accounts.User do
|
|||
# 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.Accounts.User.Changes.SyncEmailToMember
|
||||
# Mv.Accounts.User.Changes.OverrideMemberEmailOnLink
|
||||
# Mv.Membership.Member.Changes.SyncEmailToUser
|
||||
# See: Mv.EmailSync.Changes.SyncUserEmailToMember
|
||||
# Mv.EmailSync.Changes.SyncMemberEmailToUser
|
||||
attribute :email, :ci_string do
|
||||
allow_nil? false
|
||||
public? true
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue