simple_auth 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -1
- data/Gemfile.lock +12 -12
- data/README.markdown +5 -1
- data/lib/simple_auth/action_controller.rb +6 -0
- data/lib/simple_auth/active_record.rb +27 -6
- data/lib/simple_auth/railtie.rb +3 -5
- data/lib/simple_auth/version.rb +1 -1
- data/simple_auth.gemspec +2 -2
- data/spec/controllers/require_logged_user_spec.rb +11 -2
- data/spec/simple_auth/active_record_spec.rb +15 -0
- metadata +3 -3
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -65,18 +65,18 @@ GEM
|
|
65
65
|
rake (>= 0.8.4)
|
66
66
|
thor (~> 0.14.0)
|
67
67
|
rake (0.8.7)
|
68
|
-
rspec (2.0.0
|
69
|
-
rspec-core (= 2.0.0
|
70
|
-
rspec-expectations (= 2.0.0
|
71
|
-
rspec-mocks (= 2.0.0
|
72
|
-
rspec-core (2.0.0
|
73
|
-
rspec-expectations (2.0.0
|
68
|
+
rspec (2.0.0)
|
69
|
+
rspec-core (= 2.0.0)
|
70
|
+
rspec-expectations (= 2.0.0)
|
71
|
+
rspec-mocks (= 2.0.0)
|
72
|
+
rspec-core (2.0.0)
|
73
|
+
rspec-expectations (2.0.0)
|
74
74
|
diff-lcs (>= 1.1.2)
|
75
|
-
rspec-mocks (2.0.0
|
76
|
-
rspec-core (= 2.0.0
|
77
|
-
rspec-expectations (= 2.0.0
|
78
|
-
rspec-rails (2.0.0
|
79
|
-
rspec (= 2.0.0
|
75
|
+
rspec-mocks (2.0.0)
|
76
|
+
rspec-core (= 2.0.0)
|
77
|
+
rspec-expectations (= 2.0.0)
|
78
|
+
rspec-rails (2.0.0)
|
79
|
+
rspec (= 2.0.0)
|
80
80
|
ruby-debug (0.10.3)
|
81
81
|
columnize (>= 0.1)
|
82
82
|
ruby-debug-base (~> 0.10.3.0)
|
@@ -103,7 +103,7 @@ PLATFORMS
|
|
103
103
|
|
104
104
|
DEPENDENCIES
|
105
105
|
rails (= 3.0.0)
|
106
|
-
rspec-rails (= 2.0.0
|
106
|
+
rspec-rails (= 2.0.0)
|
107
107
|
ruby-debug
|
108
108
|
ruby-debug19
|
109
109
|
sqlite3-ruby
|
data/README.markdown
CHANGED
@@ -57,7 +57,7 @@ After you set up the model, you can go to the controller.
|
|
57
57
|
@user_session = SimpleAuth::Session.new(params[:session])
|
58
58
|
|
59
59
|
if @user_session.save
|
60
|
-
redirect_to dashboard_path
|
60
|
+
redirect_to return_to(dashboard_path)
|
61
61
|
else
|
62
62
|
flash[:alert] = "Invalid username or password"
|
63
63
|
render :new
|
@@ -70,6 +70,8 @@ After you set up the model, you can go to the controller.
|
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
73
|
+
The `return_to` helper will give you the requested url (before the user logged in) or the default url.
|
74
|
+
|
73
75
|
You can restrict access by using 2 macros:
|
74
76
|
|
75
77
|
class SignupController < ApplicationController
|
@@ -112,6 +114,8 @@ There are some helpers:
|
|
112
114
|
current_user # controller & views
|
113
115
|
current_session # controller & views
|
114
116
|
when_logged(&block) # views
|
117
|
+
find_by_credential # model
|
118
|
+
find_by_credential! # model
|
115
119
|
|
116
120
|
If you're having problems to use any helper, include the module <tt>SimpleAuth::Helper</tt> on your <tt>ApplicationHelper</tt>.
|
117
121
|
|
@@ -9,6 +9,12 @@ module SimpleAuth
|
|
9
9
|
|
10
10
|
module InstanceMethods
|
11
11
|
private
|
12
|
+
def return_to(url = nil, &block)
|
13
|
+
url = session.fetch("return_to", url)
|
14
|
+
url = instance_eval(&block) if block_given?
|
15
|
+
url
|
16
|
+
end
|
17
|
+
|
12
18
|
def current_session
|
13
19
|
@current_session ||= SimpleAuth::Session.find
|
14
20
|
end
|
@@ -74,12 +74,12 @@ module SimpleAuth
|
|
74
74
|
end
|
75
75
|
|
76
76
|
module ClassMethods
|
77
|
-
#
|
78
|
-
# If the credential is valid, then an user is returned; otherwise nil is returned.
|
77
|
+
# Find user by its credential.
|
79
78
|
#
|
80
|
-
# User.
|
81
|
-
# User.
|
82
|
-
|
79
|
+
# User.find_by_credential "john@doe.com" # using e-mail
|
80
|
+
# User.find_by_credential "john" # using username
|
81
|
+
#
|
82
|
+
def find_by_credential(credential)
|
83
83
|
# Build a hash that will be passed to the finder
|
84
84
|
options = {:conditions => [[], {}]}
|
85
85
|
|
@@ -94,7 +94,28 @@ module SimpleAuth
|
|
94
94
|
options[:conditions][0] = options[:conditions][0].join(" OR ")
|
95
95
|
|
96
96
|
# Find the record using the conditions we built
|
97
|
-
|
97
|
+
SimpleAuth::Config.model_class.first(options)
|
98
|
+
end
|
99
|
+
|
100
|
+
# Find user by its credential. If no user is found, raise
|
101
|
+
# ActiveRecord::RecordNotFound exception.
|
102
|
+
#
|
103
|
+
# User.find_by_credential! "john@doe.com"
|
104
|
+
#
|
105
|
+
def find_by_credential!(credential)
|
106
|
+
record = find_by_credential(credential)
|
107
|
+
raise ::ActiveRecord::RecordNotFound, "couldn't find #{SimpleAuth::Config.model} using #{credential.inspect} as credential" unless record
|
108
|
+
record
|
109
|
+
end
|
110
|
+
|
111
|
+
# Receive a credential and a password and try to authenticate the specified user.
|
112
|
+
# If the credential is valid, then an user is returned; otherwise nil is returned.
|
113
|
+
#
|
114
|
+
# User.authenticate "johndoe", "test"
|
115
|
+
# User.authenticate "john@doe.com", "test"
|
116
|
+
#
|
117
|
+
def authenticate(credential, password)
|
118
|
+
record = find_by_credential(credential)
|
98
119
|
|
99
120
|
# If no record has been found
|
100
121
|
return nil unless record
|
data/lib/simple_auth/railtie.rb
CHANGED
@@ -4,20 +4,18 @@ module SimpleAuth
|
|
4
4
|
require "simple_auth/generator"
|
5
5
|
end
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
initializer "simple_auth.initialize" do |app|
|
8
|
+
::ActionController::Base.instance_eval do
|
9
9
|
include SimpleAuth::ActionController
|
10
10
|
helper SimpleAuth::Helper
|
11
11
|
prepend_before_filter :activate_simple_auth
|
12
12
|
helper_method :current_user, :current_session, :logged_in?
|
13
13
|
end
|
14
14
|
|
15
|
-
|
15
|
+
::ActiveRecord::Base.instance_eval do
|
16
16
|
include SimpleAuth::ActiveRecord
|
17
17
|
end
|
18
|
-
end
|
19
18
|
|
20
|
-
initializer "simple_auth.initialize" do |app|
|
21
19
|
::I18n.load_path += Dir[File.dirname(__FILE__) + "/../../config/locales/*.yml"]
|
22
20
|
end
|
23
21
|
end
|
data/lib/simple_auth/version.rb
CHANGED
data/simple_auth.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{simple_auth}
|
8
|
-
s.version = "1.0.
|
8
|
+
s.version = "1.0.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Nando Vieira"]
|
12
|
-
s.date = %q{2010-10-
|
12
|
+
s.date = %q{2010-10-14}
|
13
13
|
s.description = %q{When Authlogic & Devise are just too much.}
|
14
14
|
s.email = %q{fnando.vieira@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -19,9 +19,18 @@ describe ApplicationController do
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
+
it "should return the request url" do
|
23
|
+
get :index, :some => "param"
|
24
|
+
controller.send(:return_to, "/dashboard").should == "/stub_resources?some=param"
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should return the default url" do
|
28
|
+
controller.send(:return_to, "/dashboard").should == "/dashboard"
|
29
|
+
end
|
30
|
+
|
22
31
|
it "should set return to" do
|
23
|
-
get :index
|
24
|
-
session[:return_to].should == "/stub_resources"
|
32
|
+
get :index, :some => "param"
|
33
|
+
session[:return_to].should == "/stub_resources?some=param"
|
25
34
|
end
|
26
35
|
|
27
36
|
it "should set warning message" do
|
@@ -121,5 +121,20 @@ describe SimpleAuth::ActiveRecord do
|
|
121
121
|
it "should not authenticate using wrong password" do
|
122
122
|
User.authenticate("johndoe", "invalid").should be_nil
|
123
123
|
end
|
124
|
+
|
125
|
+
it "should return nil when no user has been found" do
|
126
|
+
User.find_by_credential("invalid").should be_nil
|
127
|
+
end
|
128
|
+
|
129
|
+
it "should raise error when no user has been found" do
|
130
|
+
expect {
|
131
|
+
User.find_by_credential!("invalid")
|
132
|
+
}.to raise_error(ActiveRecord::RecordNotFound)
|
133
|
+
end
|
134
|
+
|
135
|
+
it "should return user" do
|
136
|
+
User.find_by_credential(subject.email).should == subject
|
137
|
+
User.find_by_credential!(subject.email).should == subject
|
138
|
+
end
|
124
139
|
end
|
125
140
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 1
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 1.0.
|
8
|
+
- 2
|
9
|
+
version: 1.0.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Nando Vieira
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-10-
|
17
|
+
date: 2010-10-14 00:00:00 -03:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|