Sha256: bf3a5968881ba4ccf9a5251df945234ee2ffef93379969ae8d1e4668e4985175

Contents?: true

Size: 1.33 KB

Versions: 7

Compression:

Stored size: 1.33 KB

Contents

module Spree
  class User < Spree::Base
    include UserMethods

    devise :database_authenticatable, :registerable, :recoverable,
           :rememberable, :trackable, :validatable, :encryptable
    devise :confirmable if Spree::Auth::Config[:confirmable]

    acts_as_paranoid
    after_destroy :scramble_email_and_password
    before_update { generate_spree_api_key if encrypted_password_changed? && spree_api_key.present? }

    has_many :orders

    before_validation :set_login

    users_table_name = User.table_name
    roles_table_name = Role.table_name

    scope :admin, -> { includes(:spree_roles).where("#{roles_table_name}.name" => "admin") }

    def self.admin_created?
      User.admin.count > 0
    end

    def admin?
      has_spree_role?('admin')
    end

    protected
      def password_required?
        !persisted? || password.present? || password_confirmation.present?
      end

    private

      def set_login
        # for now force login to be same as email, eventually we will make this configurable, etc.
        self.login ||= self.email if self.email
      end

      def scramble_email_and_password
        self.email = SecureRandom.uuid + "@example.net"
        self.login = self.email
        self.password = SecureRandom.hex(8)
        self.password_confirmation = self.password
        self.save
      end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
solidus_auth_devise-1.6.4 app/models/spree/user.rb
solidus_auth_devise-1.6.3 app/models/spree/user.rb
solidus_auth_devise-1.6.2 app/models/spree/user.rb
solidus_auth_devise-1.6.1 app/models/spree/user.rb
solidus_auth_devise-1.6.0 app/models/spree/user.rb
solidus_auth_devise-1.5.0 app/models/spree/user.rb
solidus_auth_devise-1.4.0 app/models/spree/user.rb