Sha256: 41b4ccbd0fdee9c77ca7e6132c86979adf4c43b74d7d2215acbc553d0f686836

Contents?: true

Size: 1.76 KB

Versions: 96

Compression:

Stored size: 1.76 KB

Contents

require 'digest/sha1'

module Goldberg
  class User < ActiveRecord::Base
    include Goldberg::Model

    belongs_to :role, :class_name => 'Goldberg::Role'
    
    validates_presence_of :name, :role_id, :password
    validates_uniqueness_of :name
    
    attr_accessor :clear_password
    attr_accessor :confirm_password

    def before_validation
      if self.clear_password  # Only update password if changed
        self.password_salt = self.object_id.to_s + rand.to_s
        self.password = Digest::SHA1.hexdigest(self.password_salt +
                                               self.clear_password)
      end
    end
      
    def before_save
      if self.self_reg_confirmation_required
        self.set_confirmation_key
      end
    end
    
    def after_save
      self.clear_password = nil
    end
    
    def check_password(clear_password)
      self.password == Digest::SHA1.hexdigest(self.password_salt.to_s +
                                              clear_password)
    end

    def set_confirmation_key
      self.confirmation_key = Digest::SHA1.hexdigest(self.object_id.to_s +
                                                       rand.to_s)
    end

    def email_valid?
      self.email &&
        self.email.length > 0 &&
        # http://regexlib.com/DisplayPatterns.aspx
        self.email =~ /\A.+@[^\.].*\.[a-z]{2,}\z/
    end

    def get_start_path
      if self.start_path and self.start_path.length > 0
        self.start_path
      else
        self.role.get_start_path
      end
    end

    class << self
      def random_password
        letters = ('A' .. 'Z').to_a + ('a' .. 'z').to_a
        password = (1 .. 6).collect do
          letters[ (rand * letters.length).to_i ]
        end
        password.to_s
      end
    end  # class methods
    
  end
end

Version data entries

96 entries across 96 versions & 1 rubygems

Version Path
six-updater-web-0.24.15 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/user.rb
six-updater-web-0.24.14 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/user.rb
six-updater-web-0.24.13 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/user.rb
six-updater-web-0.24.12 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/user.rb
six-updater-web-0.24.11 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/user.rb
six-updater-web-0.24.10 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/user.rb
six-updater-web-0.24.9 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/user.rb
six-updater-web-0.24.8 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/user.rb
six-updater-web-0.24.7 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/user.rb
six-updater-web-0.24.6 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/user.rb
six-updater-web-0.24.5 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/user.rb
six-updater-web-0.24.4 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/user.rb
six-updater-web-0.24.3 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/user.rb
six-updater-web-0.24.2 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/user.rb
six-updater-web-0.24.1 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/user.rb
six-updater-web-0.24.0 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/user.rb
six-updater-web-0.23.7 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/user.rb
six-updater-web-0.23.6 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/user.rb
six-updater-web-0.23.5 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/user.rb
six-updater-web-0.23.4 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/user.rb