simple_auth 2.0.4 → 3.0.0
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.
- checksums.yaml +4 -4
- data/.gitignore +3 -0
- data/.travis.yml +6 -9
- data/CHANGELOG.md +4 -0
- data/Gemfile +1 -1
- data/MIGRATE.md +40 -0
- data/README.md +34 -137
- data/Rakefile +8 -18
- data/bin/console +5 -0
- data/gemfiles/{rails_4_1.gemfile → rails_4_2.gemfile} +1 -1
- data/gemfiles/{rails_4_0.gemfile → rails_5_0.gemfile} +1 -1
- data/lib/simple_auth.rb +26 -11
- data/lib/simple_auth/action_controller.rb +53 -81
- data/lib/simple_auth/action_controller/require_login_action.rb +47 -0
- data/lib/simple_auth/config.rb +13 -36
- data/lib/simple_auth/generator.rb +2 -2
- data/lib/simple_auth/railtie.rb +0 -11
- data/lib/simple_auth/session.rb +19 -143
- data/lib/simple_auth/templates/install/initializer.rb +23 -0
- data/lib/simple_auth/version.rb +1 -6
- data/simple_auth.gemspec +6 -3
- data/test/controllers/admin/dashboard_controller_test.rb +31 -0
- data/test/controllers/dashboard_controller_test.rb +56 -0
- data/test/controllers/pages_controller_test.rb +16 -0
- data/test/generators/install_test.rb +13 -0
- data/test/support/dummy/app/controllers/admin/dashboard_controller.rb +35 -0
- data/{spec/support → test/support/dummy}/app/controllers/application_controller.rb +0 -0
- data/test/support/dummy/app/controllers/dashboard_controller.rb +23 -0
- data/test/support/dummy/app/controllers/pages_controller.rb +7 -0
- data/{spec/support → test/support/dummy}/app/models/user.rb +1 -1
- data/test/support/dummy/config/application.rb +17 -0
- data/test/support/dummy/config/initializers/simple_auth.rb +23 -0
- data/test/support/dummy/config/routes.rb +23 -0
- data/test/support/schema.rb +6 -0
- data/test/test_helper.rb +15 -0
- metadata +75 -65
- data/.rspec +0 -1
- data/gemfiles/rails_3_1.gemfile +0 -5
- data/gemfiles/rails_3_2.gemfile +0 -5
- data/lib/simple_auth/active_record.rb +0 -95
- data/lib/simple_auth/compat.rb +0 -2
- data/lib/simple_auth/compat/active_record.rb +0 -28
- data/lib/simple_auth/compat/config.rb +0 -17
- data/lib/simple_auth/exceptions.rb +0 -4
- data/lib/simple_auth/helper.rb +0 -12
- data/lib/simple_auth/rspec.rb +0 -29
- data/locales/en.yml +0 -5
- data/locales/pt-BR.yml +0 -5
- data/spec/controllers/redirect_logged_user_spec.rb +0 -87
- data/spec/controllers/require_logged_user_spec.rb +0 -146
- data/spec/schema.rb +0 -9
- data/spec/simple_auth/active_record_spec.rb +0 -146
- data/spec/simple_auth/compat_spec.rb +0 -45
- data/spec/simple_auth/config_spec.rb +0 -21
- data/spec/simple_auth/helper_spec.rb +0 -24
- data/spec/simple_auth/initializer_spec.rb +0 -9
- data/spec/simple_auth/session_spec.rb +0 -212
- data/spec/spec_helper.rb +0 -23
- data/spec/support/app/models/customer.rb +0 -3
- data/spec/support/app/models/person.rb +0 -4
- data/spec/support/app/views/dashboard/index.erb +0 -0
- data/spec/support/app/views/session/new.erb +0 -0
- data/spec/support/config/boot.rb +0 -16
- data/spec/support/config/database.yml +0 -3
- data/spec/support/config/routes.rb +0 -4
- data/templates/initializer.rb +0 -22
@@ -1,45 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe SimpleAuth, "compatibility mode" do
|
4
|
-
before do
|
5
|
-
SimpleAuth::Config.model = :customer
|
6
|
-
load "./lib/simple_auth/compat.rb"
|
7
|
-
require "customer"
|
8
|
-
end
|
9
|
-
|
10
|
-
after :all do
|
11
|
-
mod = SimpleAuth::ActiveRecord::InstanceMethods
|
12
|
-
mod.send :remove_method, :password=
|
13
|
-
mod.send :remove_method, :authenticate
|
14
|
-
end
|
15
|
-
|
16
|
-
it "finds user based on the hashing system" do
|
17
|
-
password_salt = SecureRandom.hex
|
18
|
-
password_hash = SimpleAuth::Config.crypter.call("test", password_salt)
|
19
|
-
password_digest = BCrypt::Password.create(password_hash, cost: BCrypt::Engine::MIN_COST)
|
20
|
-
|
21
|
-
ActiveRecord::Base.connection.execute <<-SQL
|
22
|
-
INSERT INTO customers
|
23
|
-
(email, login, password_digest, password_salt)
|
24
|
-
VALUES
|
25
|
-
('john@example.org', 'johndoe', '#{password_digest}', '#{password_salt}')
|
26
|
-
SQL
|
27
|
-
|
28
|
-
expect(Customer.authenticate("johndoe", "test")).to be_a(Customer)
|
29
|
-
end
|
30
|
-
|
31
|
-
it "assigns password_digest" do
|
32
|
-
customer = Customer.create(password: "test")
|
33
|
-
expect(customer.password_digest).to be_present
|
34
|
-
end
|
35
|
-
|
36
|
-
it "sets password" do
|
37
|
-
customer = Customer.create(password: "test", password_confirmation: "test")
|
38
|
-
expect(customer.password).to eql("test")
|
39
|
-
end
|
40
|
-
|
41
|
-
it "sets password confirmation" do
|
42
|
-
customer = Customer.create(password: "test", password_confirmation: "test")
|
43
|
-
expect(customer.password_confirmation).to eql("test")
|
44
|
-
end
|
45
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe SimpleAuth::Config do
|
4
|
-
it "yields SimpleAuth::Config class" do
|
5
|
-
SimpleAuth.setup do |config|
|
6
|
-
expect(config).to eq(SimpleAuth::Config)
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
it "uses [:email, :login] as credential attributes" do
|
11
|
-
expect(SimpleAuth::Config.credentials).to eq([:email, :login])
|
12
|
-
end
|
13
|
-
|
14
|
-
it "uses User as default model" do
|
15
|
-
expect(SimpleAuth::Config.model).to eq(:user)
|
16
|
-
end
|
17
|
-
|
18
|
-
it "disables session wipeout" do
|
19
|
-
expect(SimpleAuth::Config.wipeout_session).to be_falsey
|
20
|
-
end
|
21
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe SimpleAuth::Helper do
|
4
|
-
before do
|
5
|
-
@helper = Object.new
|
6
|
-
@helper.class_eval { attr_accessor :output_buffer }
|
7
|
-
@helper.extend(SimpleAuth::Helper)
|
8
|
-
@helper.extend(ActionView::Helpers::CaptureHelper)
|
9
|
-
end
|
10
|
-
|
11
|
-
it "includes module" do
|
12
|
-
ApplicationController.included_modules.include?(SimpleAuth::Helper)
|
13
|
-
end
|
14
|
-
|
15
|
-
it "renders block when user is logged" do
|
16
|
-
expect(@helper).to receive(:logged_in?).and_return(true)
|
17
|
-
expect(@helper.when_logged { "logged" }).to eq("logged")
|
18
|
-
end
|
19
|
-
|
20
|
-
it "doesn't render block when user is unlogged" do
|
21
|
-
expect(@helper).to receive(:logged_in?).and_return(false)
|
22
|
-
expect(@helper.when_logged { "logged" }).to be_nil
|
23
|
-
end
|
24
|
-
end
|
@@ -1,212 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe SimpleAuth::Session do
|
4
|
-
before do
|
5
|
-
User.delete_all
|
6
|
-
|
7
|
-
@user = User.create!(
|
8
|
-
:login => "johndoe",
|
9
|
-
:email => "john@doe.com",
|
10
|
-
:password => "test",
|
11
|
-
:password_confirmation => "test"
|
12
|
-
)
|
13
|
-
|
14
|
-
@session = Hash.new
|
15
|
-
@controller = ActionController::Base.new
|
16
|
-
allow(@controller).to receive_messages :session => @session, :reset_session => nil
|
17
|
-
|
18
|
-
SimpleAuth::Config.controller = @controller
|
19
|
-
@user_session = SimpleAuth::Session.new(:credential => "johndoe", :password => "test")
|
20
|
-
end
|
21
|
-
|
22
|
-
it "doesn't raise when trying to find a session without activating controller" do
|
23
|
-
SimpleAuth::Config.controller = nil
|
24
|
-
|
25
|
-
expect {
|
26
|
-
expect(SimpleAuth::Session.find).to be_nil
|
27
|
-
}.to_not raise_error
|
28
|
-
end
|
29
|
-
|
30
|
-
it "returns session key" do
|
31
|
-
SimpleAuth::Session.session_key == :user_id
|
32
|
-
end
|
33
|
-
|
34
|
-
it "returns record id" do
|
35
|
-
@session[:user_id] = 42
|
36
|
-
SimpleAuth::Session.record_id == 42
|
37
|
-
end
|
38
|
-
|
39
|
-
context "with valid credentials" do
|
40
|
-
before do
|
41
|
-
@user_session.save!
|
42
|
-
end
|
43
|
-
|
44
|
-
it "returns existing session" do
|
45
|
-
@user_session = SimpleAuth::Session.find
|
46
|
-
expect(@user_session).to be_valid
|
47
|
-
expect(@user_session.record).to eq(@user)
|
48
|
-
end
|
49
|
-
|
50
|
-
it "doesn't be new record" do
|
51
|
-
expect(@user_session).not_to be_new_record
|
52
|
-
end
|
53
|
-
|
54
|
-
it "is invalid when record is not authorized" do
|
55
|
-
allow(@controller).to receive_messages :authorized? => false
|
56
|
-
expect(@user_session).not_to be_valid
|
57
|
-
end
|
58
|
-
|
59
|
-
it "is valid when record is authorized" do
|
60
|
-
allow(@user_session.record).to receive_messages :authorized? => true
|
61
|
-
expect(@user_session).to be_valid
|
62
|
-
end
|
63
|
-
|
64
|
-
it "finds record" do
|
65
|
-
expect(@user_session.record).to eq(@user)
|
66
|
-
end
|
67
|
-
|
68
|
-
it "is saved" do
|
69
|
-
expect(@user_session.save).to be_truthy
|
70
|
-
end
|
71
|
-
|
72
|
-
it "resets session before saving" do
|
73
|
-
@session[:session_id] = "xWA1"
|
74
|
-
@user_session.save
|
75
|
-
expect(@session).not_to have_key(:session_id)
|
76
|
-
end
|
77
|
-
|
78
|
-
it "automatically saves session when calling create!" do
|
79
|
-
@user_session = SimpleAuth::Session.create!(:credential => "johndoe", :password => "test")
|
80
|
-
expect(@user_session).to be_valid
|
81
|
-
expect(@user_session.record).to eq(@user)
|
82
|
-
expect(@session[:user_id]).to eq(@user.id)
|
83
|
-
end
|
84
|
-
|
85
|
-
it "destroys session" do
|
86
|
-
expect(@user_session.destroy).to be_truthy
|
87
|
-
expect(@user_session.record).to be_nil
|
88
|
-
expect(@session).not_to have_key(:user)
|
89
|
-
end
|
90
|
-
|
91
|
-
it "initializes record session" do
|
92
|
-
@user_session.save
|
93
|
-
expect(@session[:user_id]).to eq(@user.id)
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
context "with invalid credentials" do
|
98
|
-
before do
|
99
|
-
@user_session.credential = "invalid"
|
100
|
-
@user_session.save
|
101
|
-
end
|
102
|
-
|
103
|
-
it "unsets previous record id when is not valid" do
|
104
|
-
@session[:user_id] = 1
|
105
|
-
expect(@user_session).not_to be_valid
|
106
|
-
expect(@session).not_to have_key(:user)
|
107
|
-
end
|
108
|
-
|
109
|
-
it "unsets previous record id when is not saved" do
|
110
|
-
@session[:user_id] = 1
|
111
|
-
expect(@user_session.save).to be_falsey
|
112
|
-
expect(@session).not_to have_key(:user)
|
113
|
-
end
|
114
|
-
|
115
|
-
it "is new record" do
|
116
|
-
expect(SimpleAuth::Session.new).to be_new_record
|
117
|
-
expect(@user_session).to be_new_record
|
118
|
-
end
|
119
|
-
|
120
|
-
it "has error message" do
|
121
|
-
expect(@user_session.errors.full_messages[0]).to eq("Invalid username or password")
|
122
|
-
end
|
123
|
-
|
124
|
-
it "doesn't return error messages for attributes" do
|
125
|
-
expect(@user_session.errors.on(:credential)).to be_nil
|
126
|
-
expect(@user_session.errors.on(:password)).to be_nil
|
127
|
-
end
|
128
|
-
|
129
|
-
it "returns empty array when trying to get errors by using hash syntax" do
|
130
|
-
expect(@user_session.errors[:credential]).to be_empty
|
131
|
-
expect(@user_session.errors[:password]).to be_empty
|
132
|
-
end
|
133
|
-
|
134
|
-
it "has errors" do
|
135
|
-
expect(@user_session.errors).not_to be_empty
|
136
|
-
end
|
137
|
-
|
138
|
-
it "doesn't find existing session" do
|
139
|
-
expect(SimpleAuth::Session.find).to be_nil
|
140
|
-
end
|
141
|
-
|
142
|
-
it "doesn't find record" do
|
143
|
-
expect(@user_session.record).to be_nil
|
144
|
-
end
|
145
|
-
|
146
|
-
it "doesn't be a valid session" do
|
147
|
-
expect(@user_session).not_to be_valid
|
148
|
-
end
|
149
|
-
|
150
|
-
it "unsets record store from session" do
|
151
|
-
expect(@session).not_to have_key(:user)
|
152
|
-
end
|
153
|
-
|
154
|
-
it "doesn't be saved" do
|
155
|
-
expect(@user_session.save).to be_falsey
|
156
|
-
end
|
157
|
-
|
158
|
-
it "raises error with save!" do
|
159
|
-
expect { @user_session.save! }.to raise_error(SimpleAuth::NotAuthorized)
|
160
|
-
end
|
161
|
-
|
162
|
-
it "raises error with create!" do
|
163
|
-
expect { SimpleAuth::Session.create!({}) }.to raise_error(SimpleAuth::NotAuthorized)
|
164
|
-
end
|
165
|
-
end
|
166
|
-
|
167
|
-
context "when destroying session" do
|
168
|
-
before do
|
169
|
-
@user_session.save!
|
170
|
-
end
|
171
|
-
|
172
|
-
it "keeps return to url" do
|
173
|
-
@session[:return_to] = "/some/path"
|
174
|
-
@user_session.destroy
|
175
|
-
expect(@session[:return_to]).to eq("/some/path")
|
176
|
-
end
|
177
|
-
|
178
|
-
it "removes record session" do
|
179
|
-
@user_session.destroy
|
180
|
-
expect(@session).not_to have_key(:user_id)
|
181
|
-
end
|
182
|
-
|
183
|
-
it "keeps keys composed by user_*" do
|
184
|
-
SimpleAuth::Config.wipeout_session = false
|
185
|
-
|
186
|
-
@session[:user_friends_count] = 42
|
187
|
-
@user_session.destroy
|
188
|
-
|
189
|
-
expect(@session[:user_friends_count]).to eq(42)
|
190
|
-
end
|
191
|
-
|
192
|
-
it "erases keys composed by user_*" do
|
193
|
-
SimpleAuth::Config.wipeout_session = true
|
194
|
-
|
195
|
-
@session[:user_friends_count] = 100
|
196
|
-
@session[:user_preferred_number] = 42
|
197
|
-
|
198
|
-
@user_session.destroy
|
199
|
-
|
200
|
-
expect(@session).not_to have_key(:user_friends_count)
|
201
|
-
expect(@session).not_to have_key(:user_preferred_number)
|
202
|
-
end
|
203
|
-
|
204
|
-
it "unsets current_user instance variable" do
|
205
|
-
@user_session.destroy
|
206
|
-
|
207
|
-
expect(SimpleAuth::Config.controller.send(:current_user)).to be_nil
|
208
|
-
expect(SimpleAuth::Config.controller.instance_variable_get("@current_user")).to be_nil
|
209
|
-
expect(SimpleAuth::Config.controller.instance_variable_get("@current_session")).to be_nil
|
210
|
-
end
|
211
|
-
end
|
212
|
-
end
|
data/spec/spec_helper.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
ENV["RAILS_ENV"] = "test"
|
2
|
-
require "bundler/setup"
|
3
|
-
Bundler.require
|
4
|
-
|
5
|
-
I18n.load_path += Dir[File.expand_path("../../locales/*.yml", __FILE__)]
|
6
|
-
I18n.enforce_available_locales = false
|
7
|
-
|
8
|
-
require "rails"
|
9
|
-
require "simple_auth"
|
10
|
-
require File.dirname(__FILE__) + "/support/config/boot"
|
11
|
-
require "rspec/rails"
|
12
|
-
|
13
|
-
$rails_version = Rails::VERSION::STRING
|
14
|
-
|
15
|
-
# Load database schema
|
16
|
-
load File.dirname(__FILE__) + "/schema.rb"
|
17
|
-
|
18
|
-
# Restore default configuration
|
19
|
-
RSpec.configure do |config|
|
20
|
-
config.before :each do
|
21
|
-
load File.dirname(__FILE__) + "/../lib/simple_auth/config.rb"
|
22
|
-
end
|
23
|
-
end
|
File without changes
|
File without changes
|
data/spec/support/config/boot.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
ENV["BUNDLE_GEMFILE"] = File.dirname(__FILE__) + "/../../../Gemfile"
|
2
|
-
require "bundler"
|
3
|
-
Bundler.setup
|
4
|
-
require "rails/all"
|
5
|
-
Bundler.require(:default)
|
6
|
-
|
7
|
-
module SimpleAuth
|
8
|
-
class Application < Rails::Application
|
9
|
-
config.root = File.dirname(__FILE__) + "/.."
|
10
|
-
config.active_support.deprecation = :log
|
11
|
-
config.secret_key_base = "secret"
|
12
|
-
config.eager_load = false
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
SimpleAuth::Application.initialize!
|
data/templates/initializer.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
# Use this file to setup SimpleAuth.
|
2
|
-
SimpleAuth.setup do |config|
|
3
|
-
# Set which attributes will be used for authentication.
|
4
|
-
config.credentials = [:email, :login]
|
5
|
-
|
6
|
-
# Set the login url.
|
7
|
-
config.login_url = proc { login_path }
|
8
|
-
|
9
|
-
# Logged users will be redirect to this url
|
10
|
-
# when +redirect_logged_user+ helper is used.
|
11
|
-
config.logged_url = proc { root_path }
|
12
|
-
|
13
|
-
# Automatically remove all session values that start with your model name.
|
14
|
-
#
|
15
|
-
# When an existing session is destroyed or a new session is created,
|
16
|
-
# SimpleAuth will remove the record id stored as <tt>#{SimpleAuth::Config.model}</tt>.
|
17
|
-
#
|
18
|
-
# Additionally, you can enable this option to remove any other key composed by
|
19
|
-
# <tt>#{SimpleAuth::Config.model}_*</tt>.
|
20
|
-
#
|
21
|
-
# config.wipeout_session = true
|
22
|
-
end
|