Repository is archived
No commit activity in last 3 years
No release in over 3 years
A DataMapper plugin for adding authentication and encrypted passwords to your DataMapper models.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.0
~> 0.7

Runtime

>= 2.1.0, ~> 3.0
~> 1.0
~> 1.0
 Project Readme

dm-is-authenticatable

Description

A DataMapper plugin for adding authentication and encrypted passwords to your DataMapper models. Ideal for use with warden, sinatra_warden or padrino-warden.

Example

require 'dm-core'
require 'dm-is-authenticatable'

class User

  include DataMapper::Resource

  is :authenticatable

  property :id, Serial

  # Name of the Licence
  property :name, String

end
DataMapper.finalize

user = User.new(:name => 'bob')
user.password = 'secret'
# => "secret"

Validates confirmation of the password:

user.valid?
# => false

user.password_confirmation = 'secret'
# => "secret"

user.valid?
# => true

Uses BCryptHash by default:

user.encrypted_password
# => "$2a$10$kC./7/ClA7mJwqqWhO02hu7//ybbsn7QKi4p5PZN0R1.XeQ/oYBAC"

Handles finding and authenticating resources in the database:

user.save
# => true

User.authenticate(:name => 'bob', :password => 'secret')
# => #<User: ...>

Using dm-is-authenticatable with warden:

Warden::Manager.serialize_into_session { |user| user.id }
Warden::Manager.serialize_from_session { |id| User.get(id) }

Warden::Strategies.add(:password) do
  def valid?
    # must specify both name and password
    params['name'] && params['password']
  end

  def authenticate!
    attributes = {
      :name     => params['name'],
      :password => params['password']
    }

    if (user = User.authenticate(attributes))
      success! user
    else
      fail! 'Invalid user name or password'
    end
  end
end

Requirements

Install

$ gem install dm-is-authenticatable

License

Copyright (c) 2010-2013 Hal Brodigan

See {file:LICENSE.txt} for license information.