Class: PostfixAdmin::Admin

Inherits:
ApplicationRecord show all
Includes:
HasPassword
Defined in:
lib/postfix_admin/models/admin.rb

Constant Summary

Constants inherited from ApplicationRecord

PostfixAdmin::ApplicationRecord::RE_DOMAIN_NAME_LIKE, PostfixAdmin::ApplicationRecord::RE_DOMAIN_NAME_LIKE_BASE, PostfixAdmin::ApplicationRecord::RE_DOMAIN_NAME_LIKE_WITH_ANCHORS, PostfixAdmin::ApplicationRecord::RE_EMAIL_LIKE, PostfixAdmin::ApplicationRecord::RE_EMAIL_LIKE_BASE, PostfixAdmin::ApplicationRecord::RE_EMAIL_LIKE_WITH_ANCHORS

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from HasPassword

#scheme_prefix

Methods inherited from ApplicationRecord

#active_str, #has_timestamp_columns?, #inactive?, #set_current_time_to_timestamp_columns

Instance Attribute Details

#domain_idsObject

Returns the value of attribute domain_ids.



36
37
38
# File 'lib/postfix_admin/models/admin.rb', line 36

def domain_ids
  @domain_ids
end

Instance Method Details

#has_admin?(admin) ⇒ Boolean

Returns:

  • (Boolean)


78
79
80
# File 'lib/postfix_admin/models/admin.rb', line 78

def has_admin?(admin)
  self == admin || super_admin?
end

#has_domain?(domain) ⇒ Boolean

Returns:

  • (Boolean)


82
83
84
# File 'lib/postfix_admin/models/admin.rb', line 82

def has_domain?(domain)
  !rel_domains.where(domain: ["ALL", domain.domain]).empty?
end

#has_superadmin_column?Boolean

Returns:

  • (Boolean)


74
75
76
# File 'lib/postfix_admin/models/admin.rb', line 74

def has_superadmin_column?
  has_attribute?(:superadmin)
end

#reloadObject



44
45
46
47
# File 'lib/postfix_admin/models/admin.rb', line 44

def reload
  @super_admin = nil
  super
end

#super_admin=(value) ⇒ Object



61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/postfix_admin/models/admin.rb', line 61

def super_admin=(value)
  if value
    domain_ids = self.rel_domain_ids.dup
    domain_ids << "ALL"
    self.rel_domain_ids = domain_ids
    self.superadmin = true if has_superadmin_column?
  else
    domain_admins.where(domain: "ALL").delete_all
    self.superadmin = false if has_superadmin_column?
  end
  save!
end

#super_admin?Boolean

Returns:

  • (Boolean)


49
50
51
52
53
54
55
56
57
58
59
# File 'lib/postfix_admin/models/admin.rb', line 49

def super_admin?
  if @super_admin.nil?
    @super_admin = if has_superadmin_column?
      self.superadmin && rel_domains.exists?("ALL")
    else
      rel_domains.exists?("ALL")
    end
  else
    @super_admin
  end
end