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)


80
81
82
# File 'lib/postfix_admin/models/admin.rb', line 80

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

#has_domain?(domain) ⇒ Boolean

Returns:

  • (Boolean)


84
85
86
# File 'lib/postfix_admin/models/admin.rb', line 84

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

#has_superadmin_column?Boolean

Returns:

  • (Boolean)


76
77
78
# File 'lib/postfix_admin/models/admin.rb', line 76

def has_superadmin_column?
  has_attribute?(:superadmin)
end

#reloadObject



46
47
48
49
# File 'lib/postfix_admin/models/admin.rb', line 46

def reload
  @super_admin = nil
  super
end

#super_admin=(value) ⇒ Object



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

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)


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

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