mini_auth 0.1.0.pre

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.gitignore ADDED
@@ -0,0 +1,6 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ log/*
6
+
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
4
+
5
+ gem "rails", "~> 3.1.0"
data/README.md ADDED
@@ -0,0 +1,58 @@
1
+ mini_auth
2
+ =========
3
+
4
+ A minimal authentication module for Rails
5
+
6
+ Install
7
+ -------
8
+
9
+ Add to your Gemfile:
10
+
11
+ gem "mini_auth"
12
+
13
+ or install as a plugin
14
+
15
+ $ cd RAILS_ROOT
16
+ $ rails plugin install git://github.com/kuroda/mini_auth.git
17
+
18
+ Usage
19
+ -----
20
+
21
+ class CreateUsers < ActiveRecord::Migration
22
+ def change
23
+ create_table :users do |t|
24
+ t.string :name, :null => false
25
+ t.string :password_digest, :null => true
26
+
27
+ t.timestamps
28
+ end
29
+ end
30
+ end
31
+
32
+ class User < ActiveRecord::Base
33
+ include MiniAuth
34
+ end
35
+
36
+ a = User.new(:name => "alice", :password => "hotyoga")
37
+
38
+ a.save # => true
39
+ a.password_digest # => "$2a$10$F5YbEd..."
40
+ a.authenticate("hotyoga) # => true
41
+
42
+ a.update_attributes :name => "Alice"
43
+ a.authenticate("hotyoga") # => true
44
+
45
+ b = User.new(:name => "bob")
46
+
47
+ b.password = ""
48
+ b.valid? # => false
49
+ b.errors[:password] # => "can't be blank"
50
+
51
+ b.password = nil
52
+ b.valid? # => true
53
+ b.save!
54
+ b.password_digest # => nil
55
+ b.authenticate(nil) # => false
56
+
57
+ b.update_attributes :password_digest => 'dummy'
58
+ b.password_digest # => nil (unchanged)
data/Rakefile ADDED
@@ -0,0 +1,9 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ require 'rspec/core'
4
+ require 'rspec/core/rake_task'
5
+ RSpec::Core::RakeTask.new(:spec) do |spec|
6
+ spec.pattern = FileList['spec/**/*_spec.rb']
7
+ end
8
+
9
+ task :default => :spec
@@ -0,0 +1,3 @@
1
+ module MiniAuth
2
+ VERSION = "0.1.0.pre"
3
+ end
data/lib/mini_auth.rb ADDED
@@ -0,0 +1,26 @@
1
+ require "mini_auth/version"
2
+ require "bcrypt"
3
+
4
+ module MiniAuth
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ attr_accessor :password
9
+
10
+ validate do
11
+ if password && password.blank?
12
+ errors.add(:password, :blank)
13
+ end
14
+ end
15
+
16
+ before_save do
17
+ if password
18
+ self.password_digest = BCrypt::Password.create(password)
19
+ end
20
+ end
21
+ end
22
+
23
+ def authenticate(password)
24
+ password_digest && BCrypt::Password.new(password_digest) == password
25
+ end
26
+ end
data/mini_auth.gemspec ADDED
@@ -0,0 +1,24 @@
1
+ $:.push File.expand_path("../lib", __FILE__)
2
+ require "mini_auth/version"
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "mini_auth"
6
+ s.version = MiniAuth::VERSION
7
+ s.authors = ["Tsutomu Kuroda"]
8
+ s.email = ["t-kuroda@oiax.jp"]
9
+ s.homepage = ""
10
+ s.summary = %q{A minimal authentication module for Rails}
11
+ s.description = %q{A minimal authentication module for Rails}
12
+
13
+ s.rubyforge_project = "mini_auth"
14
+
15
+ s.files = `git ls-files`.split("\n")
16
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
+ s.require_paths = ["lib"]
19
+
20
+ s.add_development_dependency "sqlite3"
21
+ s.add_development_dependency "rspec"
22
+ s.add_development_dependency "rspec-rails"
23
+ s.add_runtime_dependency "bcrypt-ruby"
24
+ end
data/spec/fake_app.rb ADDED
@@ -0,0 +1,25 @@
1
+ # Establish connection to the database running on memory
2
+ ActiveRecord::Base.establish_connection(
3
+ :adapter => "sqlite3",
4
+ :database => ":memory:"
5
+ )
6
+
7
+ # Discard ActiveRecord's log
8
+ ActiveRecord::Base.logger = Logger.new('/dev/null')
9
+
10
+ # Define migration class
11
+ class CreateAllTables < ActiveRecord::Migration
12
+ def change
13
+ create_table(:users) { |t| t.string :name; t.string :password_digest }
14
+ end
15
+ end
16
+
17
+ # Run migrations
18
+ migration = CreateAllTables.new
19
+ migration.verbose = false
20
+ migration.change
21
+
22
+ # Models
23
+ class User < ActiveRecord::Base
24
+ include MiniAuth
25
+ end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe "authenticate" do
4
+ it "should authenticate with a valid password" do
5
+ u = User.new(:name => 'alice', :password => 'hotyoga')
6
+ u.save!
7
+
8
+ u.authenticate('hotyoga').should be_true
9
+ end
10
+
11
+ it "should not authenticate with a wrong password" do
12
+ u = User.new(:name => 'alice', :password => 'hotyoga')
13
+ u.save!
14
+
15
+ u.authenticate('wrong').should be_false
16
+ end
17
+
18
+ it "should not authenticate with ni; password" do
19
+ u = User.new(:name => 'alice', :password => nil)
20
+ u.save!
21
+
22
+ u.authenticate(nil).should be_false
23
+ end
24
+ end
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ describe "password" do
4
+ it "should accept nil password" do
5
+ u = User.new(:name => 'alice', :password => nil)
6
+ u.should be_valid
7
+ end
8
+
9
+ it "should reject blank password" do
10
+ u = User.new(:name => 'alice', :password => '')
11
+ u.should_not be_valid
12
+ u.should have(1).error_on(:password)
13
+ u.errors[:password].first.should == "can't be blank"
14
+ end
15
+ end
@@ -0,0 +1,19 @@
1
+ # Configure Rails envinronment
2
+ ENV["RAILS_ENV"] = "test"
3
+
4
+ require "rails/all"
5
+ require "rspec/rails"
6
+ require "mini_auth"
7
+
8
+ # Pull in the fake rails app
9
+ require 'fake_app'
10
+
11
+ # Load support files
12
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
13
+
14
+ # Configure RSpec
15
+ RSpec.configure do |config|
16
+ require 'rspec/expectations'
17
+ config.include RSpec::Matchers
18
+ config.mock_with :rspec
19
+ end
metadata ADDED
@@ -0,0 +1,100 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mini_auth
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0.pre
5
+ prerelease: 6
6
+ platform: ruby
7
+ authors:
8
+ - Tsutomu Kuroda
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-12-13 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: sqlite3
16
+ requirement: &11513420 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: *11513420
25
+ - !ruby/object:Gem::Dependency
26
+ name: rspec
27
+ requirement: &11512560 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *11512560
36
+ - !ruby/object:Gem::Dependency
37
+ name: rspec-rails
38
+ requirement: &11510640 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *11510640
47
+ - !ruby/object:Gem::Dependency
48
+ name: bcrypt-ruby
49
+ requirement: &11509260 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *11509260
58
+ description: A minimal authentication module for Rails
59
+ email:
60
+ - t-kuroda@oiax.jp
61
+ executables: []
62
+ extensions: []
63
+ extra_rdoc_files: []
64
+ files:
65
+ - .gitignore
66
+ - Gemfile
67
+ - README.md
68
+ - Rakefile
69
+ - lib/mini_auth.rb
70
+ - lib/mini_auth/version.rb
71
+ - mini_auth.gemspec
72
+ - spec/fake_app.rb
73
+ - spec/mini_auth/authenticate_spec.rb
74
+ - spec/mini_auth/password_spec.rb
75
+ - spec/spec_helper.rb
76
+ homepage: ''
77
+ licenses: []
78
+ post_install_message:
79
+ rdoc_options: []
80
+ require_paths:
81
+ - lib
82
+ required_ruby_version: !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ required_rubygems_version: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>'
92
+ - !ruby/object:Gem::Version
93
+ version: 1.3.1
94
+ requirements: []
95
+ rubyforge_project: mini_auth
96
+ rubygems_version: 1.8.10
97
+ signing_key:
98
+ specification_version: 3
99
+ summary: A minimal authentication module for Rails
100
+ test_files: []