Sha256: 32deb8c7a3c7a023c679ed0417383007d0a6232a3f389df4b840d6ab89685560

Contents?: true

Size: 1.45 KB

Versions: 14

Compression:

Stored size: 1.45 KB

Contents

require 'digest'

class Account

  include Locomotive::Mongoid::Document

  # devise modules
  devise :database_authenticatable, :recoverable, :rememberable, :trackable, :validatable

  # attr_accessible :email, :password, :password_confirmation # TODO

  ## attributes ##
  field :name
  field :locale, :default => 'en'
  field :switch_site_token

  ## validations ##
  validates_presence_of :name

  ## associations ##

  ## callbacks ##
  before_destroy :remove_memberships!

  ## methods ##

  def sites
    @sites ||= Site.where({ 'memberships.account_id' => self._id })
  end

  def reset_switch_site_token!
    self.switch_site_token = ActiveSupport::SecureRandom.base64(8).gsub("/", "_").gsub(/=+$/, "")
    self.save
  end

  def self.find_using_switch_site_token(token, age = 1.minute)
    return if token.blank?
    self.where(:switch_site_token => token, :updated_at.gt => age.ago.utc).first
  end

  def self.find_using_switch_site_token!(token, age = 1.minute)
    self.find_using_switch_site_token(token, age) || raise(Mongoid::Errors::DocumentNotFound.new(self, token))
  end

  protected

  def password_required?
    !persisted? || !password.blank? || !password_confirmation.blank?
  end

  def remove_memberships!
    self.sites.each do |site|
      site.memberships.delete_if { |m| m.account_id == self._id }

      if site.admin_memberships.empty?
        raise I18n.t('errors.messages.needs_admin_account')
      else
        site.save
      end
    end
  end

end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
locomotive_cms-1.0.0.beta.2 app/models/account.rb
locomotive_cms-1.0.0.beta app/models/account.rb
locomotive_cms-0.0.4.beta12 app/models/account.rb
locomotive_cms-0.0.4.beta11 app/models/account.rb
locomotive_cms-0.0.4.beta10 app/models/account.rb
locomotive_cms-0.0.4.beta9 app/models/account.rb
locomotive_cms-0.0.4.beta8 app/models/account.rb
locomotive_cms-0.0.4.beta7 app/models/account.rb
locomotive_cms-0.0.4.beta5 app/models/account.rb
locomotive_cms-0.0.4.beta4 app/models/account.rb
locomotive_cms-0.0.4.beta3 app/models/account.rb
locomotive_cms-0.0.4.beta2 app/models/account.rb
locomotive_cms-0.0.4.beta1 app/models/account.rb
locomotive_cms-0.0.4 app/models/account.rb