about summary refs log tree commit diff
path: root/app/serializers/rest/admin/account_serializer.rb
diff options
context:
space:
mode:
authorReverite <github@reverite.sh>2019-06-26 20:31:07 -0700
committerReverite <github@reverite.sh>2019-06-26 20:31:07 -0700
commit3fa90982efda2109ddf90d81f5ed3449f8282642 (patch)
treee5514f4c72c9ffb44059a2afb7fdf24d0348bbd4 /app/serializers/rest/admin/account_serializer.rb
parent714940de498e93a8bf40dcda1835217df18741bf (diff)
parent9ef25877dfda12cf31ec586294e4d4908f5be4f0 (diff)
Merge branch 'glitch' into production
Diffstat (limited to 'app/serializers/rest/admin/account_serializer.rb')
-rw-r--r--app/serializers/rest/admin/account_serializer.rb77
1 files changed, 77 insertions, 0 deletions
diff --git a/app/serializers/rest/admin/account_serializer.rb b/app/serializers/rest/admin/account_serializer.rb
new file mode 100644
index 000000000..f579d3302
--- /dev/null
+++ b/app/serializers/rest/admin/account_serializer.rb
@@ -0,0 +1,77 @@
+# frozen_string_literal: true
+
+class REST::Admin::AccountSerializer < ActiveModel::Serializer
+  attributes :id, :username, :domain, :created_at,
+             :email, :ip, :role, :confirmed, :suspended,
+             :silenced, :disabled, :approved, :locale,
+             :invite_request
+
+  attribute :created_by_application_id, if: :created_by_application?
+  attribute :invited_by_account_id, if: :invited?
+
+  has_one :account, serializer: REST::AccountSerializer
+
+  def id
+    object.id.to_s
+  end
+
+  def email
+    object.user_email
+  end
+
+  def ip
+    object.user_current_sign_in_ip.to_s.presence
+  end
+
+  def role
+    object.user_role
+  end
+
+  def suspended
+    object.suspended?
+  end
+
+  def silenced
+    object.silenced?
+  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
+end