sinatra_warden 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +11 -11
- data/LICENSE +1 -1
- data/README.rdoc +21 -13
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/lib/sinatra_warden.rb +3 -5
- data/lib/sinatra_warden/sinatra.rb +61 -46
- data/sinatra_warden.gemspec +91 -0
- data/spec/fixtures/testing_login.rb +1 -1
- data/spec/spec_helper.rb +2 -2
- metadata +85 -5
- data/lib/sinatra_warden/strategies/bcrypt_activerecord.rb +0 -21
- data/lib/sinatra_warden/strategies/bcrypt_datamapper.rb +0 -16
data/Gemfile
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
source "http://gemcutter.org"
|
2
2
|
|
3
|
-
gem 'sinatra',
|
4
|
-
gem 'warden',
|
3
|
+
gem 'sinatra', '>= 0.9.4'
|
4
|
+
gem 'warden', '~> 0.5.0'
|
5
5
|
|
6
|
-
gem 'rake', :only =>
|
7
|
-
gem 'rspec', '~> 1.2.9', :only =>
|
8
|
-
gem 'yard', :only =>
|
9
|
-
gem 'rack-test', '~> 0.5.0', :only =>
|
10
|
-
gem 'rcov', :only =>
|
6
|
+
gem 'rake', :only => :testing
|
7
|
+
gem 'rspec', '~> 1.2.9', :only => :testing, :require_as => 'spec'
|
8
|
+
gem 'yard', :only => :testing
|
9
|
+
gem 'rack-test', '~> 0.5.0', :only => :testing, :require_as => 'rack/test'
|
10
|
+
gem 'rcov', :only => :testing
|
11
11
|
|
12
|
-
gem 'do_sqlite3', '~> 0.10.0', :only =>
|
13
|
-
gem 'dm-core', '~> 0.10.1', :only =>
|
14
|
-
gem 'bcrypt-ruby', :only =>
|
12
|
+
gem 'do_sqlite3', '~> 0.10.0', :only => :testing
|
13
|
+
gem 'dm-core', '~> 0.10.1', :only => :testing
|
14
|
+
gem 'bcrypt-ruby', :only => :testing, :require_as => 'bcrypt'
|
15
15
|
|
16
|
-
disable_system_gems
|
16
|
+
disable_system_gems
|
data/LICENSE
CHANGED
data/README.rdoc
CHANGED
@@ -1,8 +1,6 @@
|
|
1
|
-
=
|
1
|
+
= Sinatra::Warden
|
2
2
|
|
3
|
-
|
4
|
-
authentication using Warden with Sinatra. In addition to a
|
5
|
-
collection of authentication strategies.
|
3
|
+
A Sinatra (http://github.com/sinatra/sinatra) module that provides authentication for your Sinatra application through Warden (http://github.com/hassox/warden).
|
6
4
|
|
7
5
|
== Usage
|
8
6
|
|
@@ -10,7 +8,7 @@ collection of authentication strategies.
|
|
10
8
|
require 'sinatra_warden'
|
11
9
|
|
12
10
|
class Application < Sinatra::Base
|
13
|
-
register
|
11
|
+
register Sinatra::Warden
|
14
12
|
|
15
13
|
get '/admin' do
|
16
14
|
authorize!('/login') # require session, redirect to '/login' instead of work
|
@@ -22,22 +20,32 @@ collection of authentication strategies.
|
|
22
20
|
haml :dashboard
|
23
21
|
end
|
24
22
|
end
|
23
|
+
|
24
|
+
== More Information
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
* Currently assumes you have a model named 'User' and an email & password field.
|
26
|
+
Please read the wiki (http://wiki.github.com/jsmestad/sinatra_warden) for more information on more advanced configurations.
|
29
27
|
|
30
28
|
== Note on Patches/Pull Requests
|
31
|
-
|
29
|
+
|
30
|
+
We use bundler on this project and disable system gems. Contributers should do the following:
|
31
|
+
|
32
|
+
$ git clone git://github.com/jsmestad/sinatra_warden.git
|
33
|
+
$ cd sinatra_warden
|
34
|
+
$ gem bundle
|
35
|
+
$ rake
|
36
|
+
|
32
37
|
* Fork the project.
|
33
38
|
* Make your feature addition or bug fix.
|
34
|
-
* Add tests for it. This is important so I don't break it in a
|
35
|
-
future version unintentionally.
|
39
|
+
* Add tests for it. This is important so I don't break it in a future version unintentionally.
|
36
40
|
* Commit, do not mess with rakefile, version, or history.
|
37
|
-
(if you want to have your own version, that is fine but
|
38
|
-
bump version in a commit by itself I can ignore when I pull)
|
39
41
|
* Send me a pull request. Bonus points for topic branches.
|
40
42
|
|
43
|
+
== Contributors
|
44
|
+
|
45
|
+
* Justin Smestad (http://github.com/jsmestad)
|
46
|
+
* Daniel Neighman (http://github.com/hassox)
|
47
|
+
* Shane Hanna (http://github.com/shanna)
|
48
|
+
|
41
49
|
== Copyright
|
42
50
|
|
43
51
|
Copyright (c) 2009 Justin Smestad. See LICENSE for details.
|
data/Rakefile
CHANGED
@@ -10,7 +10,7 @@ begin
|
|
10
10
|
gem.description = %Q{basic helpers and authentication methods for using warden with sinatra also providing some hooks into Rack::Flash}
|
11
11
|
gem.email = "justin.smestad@gmail.com"
|
12
12
|
gem.homepage = "http://github.com/jsmestad/sinatra_warden"
|
13
|
-
gem.authors = ["Justin Smestad"]
|
13
|
+
gem.authors = ["Justin Smestad", "Daniel Neighman"]
|
14
14
|
|
15
15
|
manifest = Bundler::Environment.load(File.dirname(__FILE__) + '/Gemfile')
|
16
16
|
manifest.dependencies.each do |d|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0
|
1
|
+
0.1.0
|
data/lib/sinatra_warden.rb
CHANGED
@@ -1,9 +1,7 @@
|
|
1
|
-
|
2
|
-
require '
|
1
|
+
Bundler.require_env
|
2
|
+
require File.join(File.dirname(__FILE__), 'sinatra_warden', 'sinatra')
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
Warden::Manager.before_failure do |env,opts|
|
4
|
+
Warden::Manager.before_failure do |env, opts|
|
7
5
|
# Sinatra is very sensitive to the request method
|
8
6
|
# since authentication could fail on any type of method, we need
|
9
7
|
# to set it for the failure app so it is routed to the correct block
|
@@ -1,57 +1,72 @@
|
|
1
|
-
module
|
2
|
-
module
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
1
|
+
module Sinatra
|
2
|
+
module Warden
|
3
|
+
module Helpers
|
4
|
+
|
5
|
+
# The main accessor for the warden proxy instance
|
6
|
+
def warden
|
7
|
+
request.env['warden']
|
8
|
+
end
|
7
9
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
10
|
+
# Proxy to the authenticated? method on warden
|
11
|
+
def authenticated?(*args)
|
12
|
+
warden.authenticated?(*args)
|
13
|
+
end
|
14
|
+
alias_method :logged_in?, :authenticated?
|
13
15
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
# Access the currently logged in user
|
17
|
+
def user(*args)
|
18
|
+
warden.user(*args)
|
19
|
+
end
|
20
|
+
alias_method :current_user, :user
|
19
21
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
22
|
+
# Set the currently logged in user
|
23
|
+
# @params [User] the user you want to log in
|
24
|
+
def user=(user)
|
25
|
+
warden.set_user user
|
26
|
+
end
|
27
|
+
alias_method :current_user=, :user=
|
25
28
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
+
# Require authorization for an action
|
30
|
+
# @params [String] path to redirect to if user is unauthenticated
|
31
|
+
def authorize!(failure_path=nil)
|
32
|
+
redirect(failure_path ? failure_path : options.auth_failure_path) unless authenticated?
|
33
|
+
end
|
29
34
|
end
|
30
|
-
end
|
31
35
|
|
32
|
-
|
33
|
-
|
36
|
+
def self.registered(app)
|
37
|
+
app.helpers Warden::Helpers
|
38
|
+
|
39
|
+
app.set :auth_failure_path, '/'
|
40
|
+
app.set :auth_success_path, lambda{ back }
|
34
41
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
end
|
42
|
+
app.set :auth_error_message, "Could not log you in."
|
43
|
+
app.set :auth_success_message, "You have logged in successfully."
|
44
|
+
app.set :auth_use_erb, false
|
45
|
+
app.set :auth_login_template, :login
|
40
46
|
|
41
|
-
|
42
|
-
|
43
|
-
|
47
|
+
app.post '/unauthenticated/?' do
|
48
|
+
status 401
|
49
|
+
flash[:error] = "Could not log you in." if defined?(Rack::Flash)
|
50
|
+
options.auth_use_erb ? erb(options.auth_login_template) : haml(options.auth_login_template)
|
51
|
+
end
|
44
52
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
redirect back
|
49
|
-
end
|
53
|
+
app.get '/login/?' do
|
54
|
+
options.auth_use_erb ? erb(options.auth_login_template) : haml(options.auth_login_template)
|
55
|
+
end
|
50
56
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
57
|
+
app.post '/login/?' do
|
58
|
+
env['warden'].authenticate!
|
59
|
+
flash[:success] = options.auth_success_message if defined?(Rack::Flash)
|
60
|
+
redirect options.auth_success_path
|
61
|
+
end
|
62
|
+
|
63
|
+
app.get '/logout/?' do
|
64
|
+
env['warden'].logout
|
65
|
+
flash[:success] = options.auth_error_message if defined?(Rack::Flash)
|
66
|
+
redirect options.auth_success_path
|
67
|
+
end
|
55
68
|
end
|
56
|
-
end
|
57
|
-
|
69
|
+
end # Warden
|
70
|
+
|
71
|
+
register Warden
|
72
|
+
end # Sinatra
|
@@ -0,0 +1,91 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{sinatra_warden}
|
8
|
+
s.version = "0.1.0"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Justin Smestad", "Daniel Neighman"]
|
12
|
+
s.date = %q{2009-11-03}
|
13
|
+
s.description = %q{basic helpers and authentication methods for using warden with sinatra also providing some hooks into Rack::Flash}
|
14
|
+
s.email = %q{justin.smestad@gmail.com}
|
15
|
+
s.executables = ["autospec", "rackup", "rake", "rcov", "spec", "yard-graph", "yardoc", "yri"]
|
16
|
+
s.extra_rdoc_files = [
|
17
|
+
"LICENSE",
|
18
|
+
"README.rdoc"
|
19
|
+
]
|
20
|
+
s.files = [
|
21
|
+
".document",
|
22
|
+
".gitignore",
|
23
|
+
"Gemfile",
|
24
|
+
"LICENSE",
|
25
|
+
"README.rdoc",
|
26
|
+
"Rakefile",
|
27
|
+
"VERSION",
|
28
|
+
"lib/sinatra_warden.rb",
|
29
|
+
"lib/sinatra_warden/sinatra.rb",
|
30
|
+
"sinatra_warden.gemspec",
|
31
|
+
"spec/fixtures/bcrypt_strategy.rb",
|
32
|
+
"spec/fixtures/testing_login.rb",
|
33
|
+
"spec/fixtures/user.rb",
|
34
|
+
"spec/sinatra_warden_spec.rb",
|
35
|
+
"spec/spec.opts",
|
36
|
+
"spec/spec_helper.rb"
|
37
|
+
]
|
38
|
+
s.homepage = %q{http://github.com/jsmestad/sinatra_warden}
|
39
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
40
|
+
s.require_paths = ["lib"]
|
41
|
+
s.rubygems_version = %q{1.3.5}
|
42
|
+
s.summary = %q{authentication system for using warden with sinatra}
|
43
|
+
s.test_files = [
|
44
|
+
"spec/fixtures/bcrypt_strategy.rb",
|
45
|
+
"spec/fixtures/testing_login.rb",
|
46
|
+
"spec/fixtures/user.rb",
|
47
|
+
"spec/sinatra_warden_spec.rb",
|
48
|
+
"spec/spec_helper.rb"
|
49
|
+
]
|
50
|
+
|
51
|
+
if s.respond_to? :specification_version then
|
52
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
53
|
+
s.specification_version = 3
|
54
|
+
|
55
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
56
|
+
s.add_runtime_dependency(%q<sinatra>, [">= 0.9.4"])
|
57
|
+
s.add_runtime_dependency(%q<warden>, ["~> 0.5.0"])
|
58
|
+
s.add_runtime_dependency(%q<rake>, [">= 0"])
|
59
|
+
s.add_runtime_dependency(%q<rspec>, ["~> 1.2.9"])
|
60
|
+
s.add_runtime_dependency(%q<yard>, [">= 0"])
|
61
|
+
s.add_runtime_dependency(%q<rack-test>, ["~> 0.5.0"])
|
62
|
+
s.add_runtime_dependency(%q<rcov>, [">= 0"])
|
63
|
+
s.add_runtime_dependency(%q<do_sqlite3>, ["~> 0.10.0"])
|
64
|
+
s.add_runtime_dependency(%q<dm-core>, ["~> 0.10.1"])
|
65
|
+
s.add_runtime_dependency(%q<bcrypt-ruby>, [">= 0"])
|
66
|
+
else
|
67
|
+
s.add_dependency(%q<sinatra>, [">= 0.9.4"])
|
68
|
+
s.add_dependency(%q<warden>, ["~> 0.5.0"])
|
69
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
70
|
+
s.add_dependency(%q<rspec>, ["~> 1.2.9"])
|
71
|
+
s.add_dependency(%q<yard>, [">= 0"])
|
72
|
+
s.add_dependency(%q<rack-test>, ["~> 0.5.0"])
|
73
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
74
|
+
s.add_dependency(%q<do_sqlite3>, ["~> 0.10.0"])
|
75
|
+
s.add_dependency(%q<dm-core>, ["~> 0.10.1"])
|
76
|
+
s.add_dependency(%q<bcrypt-ruby>, [">= 0"])
|
77
|
+
end
|
78
|
+
else
|
79
|
+
s.add_dependency(%q<sinatra>, [">= 0.9.4"])
|
80
|
+
s.add_dependency(%q<warden>, ["~> 0.5.0"])
|
81
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
82
|
+
s.add_dependency(%q<rspec>, ["~> 1.2.9"])
|
83
|
+
s.add_dependency(%q<yard>, [">= 0"])
|
84
|
+
s.add_dependency(%q<rack-test>, ["~> 0.5.0"])
|
85
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
86
|
+
s.add_dependency(%q<do_sqlite3>, ["~> 0.10.0"])
|
87
|
+
s.add_dependency(%q<dm-core>, ["~> 0.10.1"])
|
88
|
+
s.add_dependency(%q<bcrypt-ruby>, [">= 0"])
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
data/spec/spec_helper.rb
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
|
4
4
|
ENV['RACK_ENV'] ||= 'test'
|
5
5
|
project_root = File.expand_path(File.dirname(__FILE__))
|
6
6
|
require File.join(project_root, '..', 'vendor', 'gems', 'environment')
|
7
|
-
Bundler.require_env(:
|
7
|
+
Bundler.require_env(:testing)
|
8
8
|
|
9
9
|
require 'sinatra_warden'
|
10
10
|
require 'spec'
|
@@ -13,7 +13,7 @@ require 'spec/autorun'
|
|
13
13
|
DataMapper.setup(:default, 'sqlite3::memory:')
|
14
14
|
|
15
15
|
%w(fixtures support).each do |path|
|
16
|
-
Dir[ File.join(
|
16
|
+
Dir[ File.join(project_root, path, '/**/*.rb') ].each do |m|
|
17
17
|
require m
|
18
18
|
end
|
19
19
|
end
|
metadata
CHANGED
@@ -1,15 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sinatra_warden
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Smestad
|
8
|
+
- Daniel Neighman
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
12
|
|
12
|
-
date: 2009-
|
13
|
+
date: 2009-11-03 00:00:00 -07:00
|
13
14
|
default_executable:
|
14
15
|
dependencies:
|
15
16
|
- !ruby/object:Gem::Dependency
|
@@ -18,7 +19,7 @@ dependencies:
|
|
18
19
|
version_requirement:
|
19
20
|
version_requirements: !ruby/object:Gem::Requirement
|
20
21
|
requirements:
|
21
|
-
- -
|
22
|
+
- - ">="
|
22
23
|
- !ruby/object:Gem::Version
|
23
24
|
version: 0.9.4
|
24
25
|
version:
|
@@ -32,6 +33,86 @@ dependencies:
|
|
32
33
|
- !ruby/object:Gem::Version
|
33
34
|
version: 0.5.0
|
34
35
|
version:
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rake
|
38
|
+
type: :runtime
|
39
|
+
version_requirement:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: "0"
|
45
|
+
version:
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rspec
|
48
|
+
type: :runtime
|
49
|
+
version_requirement:
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.2.9
|
55
|
+
version:
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: yard
|
58
|
+
type: :runtime
|
59
|
+
version_requirement:
|
60
|
+
version_requirements: !ruby/object:Gem::Requirement
|
61
|
+
requirements:
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: "0"
|
65
|
+
version:
|
66
|
+
- !ruby/object:Gem::Dependency
|
67
|
+
name: rack-test
|
68
|
+
type: :runtime
|
69
|
+
version_requirement:
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ~>
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: 0.5.0
|
75
|
+
version:
|
76
|
+
- !ruby/object:Gem::Dependency
|
77
|
+
name: rcov
|
78
|
+
type: :runtime
|
79
|
+
version_requirement:
|
80
|
+
version_requirements: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: "0"
|
85
|
+
version:
|
86
|
+
- !ruby/object:Gem::Dependency
|
87
|
+
name: do_sqlite3
|
88
|
+
type: :runtime
|
89
|
+
version_requirement:
|
90
|
+
version_requirements: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - ~>
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: 0.10.0
|
95
|
+
version:
|
96
|
+
- !ruby/object:Gem::Dependency
|
97
|
+
name: dm-core
|
98
|
+
type: :runtime
|
99
|
+
version_requirement:
|
100
|
+
version_requirements: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ~>
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: 0.10.1
|
105
|
+
version:
|
106
|
+
- !ruby/object:Gem::Dependency
|
107
|
+
name: bcrypt-ruby
|
108
|
+
type: :runtime
|
109
|
+
version_requirement:
|
110
|
+
version_requirements: !ruby/object:Gem::Requirement
|
111
|
+
requirements:
|
112
|
+
- - ">="
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: "0"
|
115
|
+
version:
|
35
116
|
description: basic helpers and authentication methods for using warden with sinatra also providing some hooks into Rack::Flash
|
36
117
|
email: justin.smestad@gmail.com
|
37
118
|
executables:
|
@@ -58,8 +139,7 @@ files:
|
|
58
139
|
- VERSION
|
59
140
|
- lib/sinatra_warden.rb
|
60
141
|
- lib/sinatra_warden/sinatra.rb
|
61
|
-
-
|
62
|
-
- lib/sinatra_warden/strategies/bcrypt_datamapper.rb
|
142
|
+
- sinatra_warden.gemspec
|
63
143
|
- spec/fixtures/bcrypt_strategy.rb
|
64
144
|
- spec/fixtures/testing_login.rb
|
65
145
|
- spec/fixtures/user.rb
|
@@ -1,21 +0,0 @@
|
|
1
|
-
Warden::Manager.serialize_into_session{ |user| [user.class, user.id] }
|
2
|
-
Warden::Manager.serialize_from_session{ |klass, id| klass.find(id) }
|
3
|
-
|
4
|
-
Warden::Strategies.add(:bcrypt_activerecord) do
|
5
|
-
|
6
|
-
def valid?
|
7
|
-
params["login"] || params["password"]
|
8
|
-
end
|
9
|
-
|
10
|
-
def authenticate!
|
11
|
-
return fail! unless user = User.find(params["login"])
|
12
|
-
|
13
|
-
if user.password == params["password"]
|
14
|
-
success!(user)
|
15
|
-
else
|
16
|
-
errors.add(:login, "Login or Password incorrect")
|
17
|
-
fail!
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
require 'dm-core'
|
2
|
-
require 'bcrypt'
|
3
|
-
|
4
|
-
Warden::Manager.serialize_into_session{|user| user.id }
|
5
|
-
Warden::Manager.serialize_from_session{|id| User.get(id) }
|
6
|
-
|
7
|
-
Warden::Strategies.add(:bcrypt_datamapper) do
|
8
|
-
def valid?
|
9
|
-
params["email"] || params["password"]
|
10
|
-
end
|
11
|
-
|
12
|
-
def authenticate!
|
13
|
-
return fail!("Could not log in") unless user = User.first(:email => params["email"])
|
14
|
-
user.password == params["password"] ? success!(user) : fail!("Could not log in")
|
15
|
-
end
|
16
|
-
end
|