diff --git a/app/mailers/identity_mailer.rb b/app/mailers/identity_mailer.rb deleted file mode 100644 index 58ac5d0b6..000000000 --- a/app/mailers/identity_mailer.rb +++ /dev/null @@ -1,7 +0,0 @@ -class IdentityMailer < ApplicationMailer - def email_change_confirmation(email_address:, token:, membership:) - @token = token - @membership = membership - mail to: email_address, subject: "Confirm your new email address" - end -end diff --git a/app/models/user/email_address_changeable.rb b/app/models/user/email_address_changeable.rb deleted file mode 100644 index 3dc5b6992..000000000 --- a/app/models/user/email_address_changeable.rb +++ /dev/null @@ -1,57 +0,0 @@ -module User::EmailAddressChangeable - EMAIL_CHANGE_TOKEN_PURPOSE = "change_email_address" - EMAIL_CHANGE_TOKEN_EXPIRATION = 30.minutes - - extend ActiveSupport::Concern - - class_methods do - def change_email_address_using_token(token) - parsed_token = SignedGlobalID.parse(token, for: EMAIL_CHANGE_TOKEN_PURPOSE) - membership = parsed_token&.find - - if parsed_token.nil? - raise ArgumentError, "The token is invalid" - elsif membership.nil? - raise ArgumentError, "The membership no longer exists" - elsif membership.identity.email_address != parsed_token.params.fetch("old_email_address") - raise ArgumentError, "The token was generated for a different email address" - else - new_email_address = parsed_token.params.fetch("new_email_address") - membership.change_email_address(new_email_address) - end - - membership - end - end - - def send_email_address_change_confirmation(new_email_address) - token = generate_email_address_change_token( - to: new_email_address, - expires_in: EMAIL_CHANGE_TOKEN_EXPIRATION - ) - - IdentityMailer.email_change_confirmation( - email_address: new_email_address, - token: token, - membership: self - ).deliver_later - end - - def change_email_address(new_email_address) - transaction do - new_identity = Identity.find_or_create_by!(email_address: new_email_address) - update!(identity: new_identity) - end - end - - private - def generate_email_address_change_token(from: identity.email_address, to:, **options) - options = options.reverse_merge( - for: EMAIL_CHANGE_TOKEN_PURPOSE, - old_email_address: from, - new_email_address: to, - ) - - to_sgid(**options).to_s - end -end diff --git a/test/mailers/previews/identity_mailer_preview.rb b/test/mailers/previews/identity_mailer_preview.rb deleted file mode 100644 index f39d1a4bc..000000000 --- a/test/mailers/previews/identity_mailer_preview.rb +++ /dev/null @@ -1,18 +0,0 @@ -class IdentityMailerPreview < ActionMailer::Preview - def email_change_confirmation - flunk "TODO:PLANB: need to figure out how to test this without setting a tenant" - # ApplicationRecord.current_tenant = "897362094" - - # identity = Identity.find_by(email_address: "david@37signals.com") - # membership = identity&.memberships&.find_by(tenant: ApplicationRecord.current_tenant) - - # new_email_address = "david.new@example.com" - # token = membership.send(:generate_email_address_change_token, to: new_email_address) - - # IdentityMailer.email_change_confirmation( - # email_address: new_email_address, - # token: token, - # membership: membership - # ) - end -end