4602cd3cdd
User are marked as verified after a join code is redeemed. The user is redirected to Users::VerificationsController, either: - after submitting a valid magic link code, - or immediately after redeeming the join code (if they're already authenticated with the correct identity) Account owners are automatically verified when the account is created (because they have already provided a magic link code at that point). This sets up for later commits that will backfill existing users and require verification before sending notification emails. Co-Authored-By: Claude <noreply@anthropic.com>
44 lines
1.2 KiB
Ruby
44 lines
1.2 KiB
Ruby
class User < ApplicationRecord
|
|
include Accessor, Assignee, Attachable, Avatar, Configurable, EmailAddressChangeable,
|
|
Mentionable, Named, Notifiable, Role, Searcher, Watcher
|
|
include Timelined # Depends on Accessor
|
|
|
|
belongs_to :account
|
|
belongs_to :identity, optional: true
|
|
|
|
has_many :comments, inverse_of: :creator, dependent: :destroy
|
|
|
|
has_many :filters, foreign_key: :creator_id, inverse_of: :creator, dependent: :destroy
|
|
has_many :closures, dependent: :nullify
|
|
has_many :pins, dependent: :destroy
|
|
has_many :pinned_cards, through: :pins, source: :card
|
|
has_many :exports, class_name: "Account::Export", dependent: :destroy
|
|
|
|
scope :with_avatars, -> { preload(:account, :avatar_attachment) }
|
|
|
|
def deactivate
|
|
transaction do
|
|
accesses.destroy_all
|
|
update! active: false, identity: nil
|
|
close_remote_connections
|
|
end
|
|
end
|
|
|
|
def setup?
|
|
name != identity.email_address
|
|
end
|
|
|
|
def verified?
|
|
verified_at.present?
|
|
end
|
|
|
|
def verify
|
|
update!(verified_at: Time.current) unless verified?
|
|
end
|
|
|
|
private
|
|
def close_remote_connections
|
|
ActionCable.server.remote_connections.where(current_user: self).disconnect(reconnect: false)
|
|
end
|
|
end
|