Welcome to mirror list, hosted at ThFree Co, Russian Federation.

invitation_code.rb « models « app - github.com/diaspora/diaspora.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 1f941c81864fb1d20ee1732f91f566e65f8f4605 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# frozen_string_literal: true

class InvitationCode < ApplicationRecord
  belongs_to :user

  before_create :generate_token, :set_default_invite_count

  delegate :name, to: :user, prefix: true

  def to_param
    token
  end

  def can_be_used?
    count > 0 && AppConfig.settings.invitations.open?
  end

  def add_invites!
    update(count: count + 100)
  end

  def use!
    update(count: count - 1)
  end

  def generate_token
    loop do
      self.token = SecureRandom.hex(6)
      break unless InvitationCode.default_scoped.exists?(token: token)
    end
  end

  def self.default_inviter_or(user)
    if AppConfig.admins.account.present?
      inviter = User.find_by_username(AppConfig.admins.account.get)
    end
    inviter ||= user
    inviter
  end

  def set_default_invite_count
    self.count = AppConfig['settings.invitations.count'] || 25
  end
end