class Identity < UntenantedRecord
  include Transferable

  has_many :memberships, dependent: :destroy
  has_many :magic_links, dependent: :destroy
  has_many :sessions, dependent: :destroy

  normalizes :email_address, with: ->(value) { value.strip.downcase }
  validates :email_address, presence: true

  def send_magic_link
    magic_links.create!.tap do |magic_link|
      MagicLinkMailer.sign_in_instructions(magic_link).deliver_later
    end
  end

  def staff?
    email_address.ends_with?("@37signals.com") || email_address.ends_with?("@basecamp.com")
  end
end
