dm-is-authenticatable
- Source
- Issues
- Documentation
- [Email](mailto:postmodern.mod3 at gmail.com)
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
- bcrypt-ruby ~> 3.0, >= 2.1.0
- dm-core ~> 1.0
- dm-types ~> 1.0
- dm-validations ~> 1.0
Install
$ gem install dm-is-authenticatable
License
Copyright (c) 2010-2013 Hal Brodigan
See {file:LICENSE.txt} for license information.