about summary refs log tree commit diff
path: root/app/serializers/rest/admin/account_serializer.rb
blob: 959884c550539619e14920c00c34bde4c1436150 (plain) (blame)
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# frozen_string_literal: true

class REST::Admin::AccountSerializer < ActiveModel::Serializer
  attributes :id, :username, :domain, :created_at,
             :email, :ip, :confirmed, :suspended,
             :silenced, :sensitized, :disabled, :approved, :locale,
             :invite_request

  attribute :created_by_application_id, if: :created_by_application?
  attribute :invited_by_account_id, if: :invited?

  has_many :ips, serializer: REST::Admin::IpSerializer
  has_one :account, serializer: REST::AccountSerializer
  has_one :role, serializer: REST::RoleSerializer

  def id
    object.id.to_s
  end

  def email
    object.user_email
  end

  def role
    object.user_role
  end

  def suspended
    object.suspended?
  end

  def silenced
    object.silenced?
  end

  def sensitized
    object.sensitized?
  end

  def confirmed
    object.user_confirmed?
  end

  def disabled
    object.user_disabled?
  end

  def approved
    object.user_approved?
  end

  def account
    object
  end

  def locale
    object.user_locale
  end

  def created_by_application_id
    object.user&.created_by_application_id&.to_s&.presence
  end

  def invite_request
    object.user&.invite_request&.text
  end

  def invited_by_account_id
    object.user&.invite&.user&.account_id&.to_s&.presence
  end

  def invited?
    object.user&.invited?
  end

  def created_by_application?
    object.user&.created_by_application_id&.present?
  end

  def ips
    object.user&.ips
  end

  def ip
    ips&.first&.ip
  end
end