Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

ActiveRecord macro that helps encrypt passwords and generate api tokens before_save.

branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

README.rdoc

HasDigest

HasDigest is an ActiveRecord macro that makes it easy to write things like encrypted passwords and api tokens before_save. Digest attributes may either stand alone or depend on the values of other attributes. Digests with dependencies are also magically salted for models having a salt attribute.

See the documentation for the has_digest method for options.

Installation

As a gem:

config.gem 'matthewtodd-has_digest', :lib => 'has_digest', :source => 'http://gems.github.com'

As a plugin:

script/plugin install git://github.com/matthewtodd/has_digest.git

Usage

In your model:

class User < ActiveRecord::Base
  has_digest :encrypted_password, :depends => :password
end

In your migrations:

class CreateUsers < ActiveRecord::Migration
  def self.up
    create_table :users do |t|
      t.string :salt, :encrypted_password, :limit => 40
    end
  end

  def self.down
    drop_table :users
  end
end

In your tests:

class UserTest < ActiveSupport::TestCase
  should_have_digest :encrypted_password, :depends => :password
end

Back in your model:

class User < ActiveRecord::Base
  def authenticate(password)
    encrypted_password == digest(salt, password)
  end
end

Copyright © 2008 Matthew Todd, released under the MIT license

Something went wrong with that request. Please try again.