casino 3.0.0.pre.1 → 3.0.0.pre.2
Sign up to get free protection for your applications and to get access to all the features.
- data/app/assets/stylesheets/casino/{normalize.css → normalize.scss} +0 -0
- data/app/controllers/casino/application_controller.rb +8 -0
- data/app/processors/casino/login_credential_requestor_processor.rb +13 -9
- data/lib/casino/tasks/user.rake +32 -0
- data/lib/casino/version.rb +1 -1
- data/spec/controllers/sessions_controller_spec.rb +7 -0
- data/spec/model/service_rule_spec.rb +1 -1
- data/spec/processor/login_credential_requestor_spec.rb +10 -0
- metadata +4 -3
File without changes
|
@@ -7,6 +7,10 @@ class CASino::ApplicationController < ::ApplicationController
|
|
7
7
|
layout 'application'
|
8
8
|
before_filter :set_locale
|
9
9
|
|
10
|
+
unless Rails.env.development?
|
11
|
+
rescue_from ActionView::MissingTemplate, with: :missing_template
|
12
|
+
end
|
13
|
+
|
10
14
|
def cookies
|
11
15
|
super
|
12
16
|
end
|
@@ -31,4 +35,8 @@ class CASino::ApplicationController < ::ApplicationController
|
|
31
35
|
def http_accept_language
|
32
36
|
HttpAcceptLanguage::Parser.new request.env['HTTP_ACCEPT_LANGUAGE']
|
33
37
|
end
|
38
|
+
|
39
|
+
def missing_template(exception)
|
40
|
+
render plain: 'Format not supported', status: :not_acceptable
|
41
|
+
end
|
34
42
|
end
|
@@ -19,7 +19,12 @@ class CASino::LoginCredentialRequestorProcessor < CASino::Processor
|
|
19
19
|
@params = params || {}
|
20
20
|
@cookies = cookies || {}
|
21
21
|
@user_agent = user_agent || {}
|
22
|
-
|
22
|
+
begin
|
23
|
+
@service_url = clean_service_url(@params[:service]) unless @params[:service].nil?
|
24
|
+
rescue Addressable::URI::InvalidURIError => e
|
25
|
+
Rails.logger.warn "Service #{@params[:service]} not valid: #{e}"
|
26
|
+
end
|
27
|
+
if service_allowed?
|
23
28
|
handle_allowed_service
|
24
29
|
end
|
25
30
|
end
|
@@ -34,8 +39,8 @@ class CASino::LoginCredentialRequestorProcessor < CASino::Processor
|
|
34
39
|
end
|
35
40
|
|
36
41
|
def handle_logged_in
|
37
|
-
service_url_with_ticket = unless @
|
38
|
-
acquire_service_ticket(@ticket_granting_ticket, @
|
42
|
+
service_url_with_ticket = unless @service_url.nil?
|
43
|
+
acquire_service_ticket(@ticket_granting_ticket, @service_url, true).service_with_ticket_url
|
39
44
|
end
|
40
45
|
@listener.user_logged_in(service_url_with_ticket)
|
41
46
|
end
|
@@ -43,24 +48,23 @@ class CASino::LoginCredentialRequestorProcessor < CASino::Processor
|
|
43
48
|
def handle_not_logged_in
|
44
49
|
if gateway_request?
|
45
50
|
# we actually lie to the listener to simplify things
|
46
|
-
@listener.user_logged_in(@
|
51
|
+
@listener.user_logged_in(@service_url)
|
47
52
|
else
|
48
53
|
login_ticket = acquire_login_ticket
|
49
54
|
@listener.user_not_logged_in(login_ticket)
|
50
55
|
end
|
51
56
|
end
|
52
57
|
|
53
|
-
def
|
54
|
-
service_url
|
55
|
-
if service_url.nil? || CASino::ServiceRule.allowed?(service_url)
|
58
|
+
def service_allowed?
|
59
|
+
if @service_url.nil? || CASino::ServiceRule.allowed?(@service_url)
|
56
60
|
true
|
57
61
|
else
|
58
|
-
@listener.service_not_allowed(service_url)
|
62
|
+
@listener.service_not_allowed(@service_url)
|
59
63
|
false
|
60
64
|
end
|
61
65
|
end
|
62
66
|
|
63
67
|
def gateway_request?
|
64
|
-
@params[:gateway] == 'true' && @
|
68
|
+
@params[:gateway] == 'true' && @service_url
|
65
69
|
end
|
66
70
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'terminal-table'
|
2
|
+
|
3
|
+
namespace :casino do
|
4
|
+
namespace :user do
|
5
|
+
desc 'Search users by name.'
|
6
|
+
task :search, [:query] => :environment do |task, args|
|
7
|
+
users = CASino::User.where('username LIKE ?', "%#{args[:query]}%")
|
8
|
+
if users.any?
|
9
|
+
headers = ['User ID', 'Username', 'Authenticator', 'Two-factor authentication enabled?']
|
10
|
+
table = Terminal::Table.new :headings => headers do |t|
|
11
|
+
users.each do |user|
|
12
|
+
two_factor_enabled = user.active_two_factor_authenticator ? 'yes' : 'no'
|
13
|
+
t.add_row [user.id, user.username, user.authenticator, two_factor_enabled]
|
14
|
+
end
|
15
|
+
end
|
16
|
+
puts table
|
17
|
+
else
|
18
|
+
puts "No users found matching your query \"#{args[:query]}\"."
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
desc 'Deactivate two-factor authentication for a user.'
|
23
|
+
task :deactivate_two_factor_authentication, [:user_id] => :environment do |task, args|
|
24
|
+
if CASino::User.find(args[:user_id]).active_two_factor_authenticator
|
25
|
+
CASino::User.find(args[:user_id]).active_two_factor_authenticator.destroy
|
26
|
+
puts "Successfully deactivated two-factor authentication for user ##{args[:user_id]}."
|
27
|
+
else
|
28
|
+
puts "No two-factor authenticator found for user ##{args[:user_id]}."
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/lib/casino/version.rb
CHANGED
@@ -6,6 +6,13 @@ describe CASino::SessionsController do
|
|
6
6
|
CASino::LoginCredentialRequestorProcessor.any_instance.should_receive(:process)
|
7
7
|
get :new, use_route: :casino
|
8
8
|
end
|
9
|
+
|
10
|
+
context 'with an unsupported format' do
|
11
|
+
it 'sets the status code to 406' do
|
12
|
+
get :new, use_route: :casino, format: :xml
|
13
|
+
response.status.should == 406
|
14
|
+
end
|
15
|
+
end
|
9
16
|
end
|
10
17
|
|
11
18
|
describe 'POST "create"' do
|
@@ -109,6 +109,16 @@ describe CASino::LoginCredentialRequestorProcessor do
|
|
109
109
|
end
|
110
110
|
end
|
111
111
|
|
112
|
+
context 'with a broken service' do
|
113
|
+
let(:service) { '%3Atest' }
|
114
|
+
let(:params) { { service: service } }
|
115
|
+
|
116
|
+
it 'calls the #user_logged_in method on the listener' do
|
117
|
+
listener.should_receive(:user_logged_in).with(nil)
|
118
|
+
processor.process(params, cookies, user_agent)
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
112
122
|
context 'without a service' do
|
113
123
|
it 'calls the #user_logged_in method on the listener' do
|
114
124
|
listener.should_receive(:user_logged_in).with(nil)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: casino
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.0.pre.
|
4
|
+
version: 3.0.0.pre.2
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2014-
|
14
|
+
date: 2014-05-09 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: capybara
|
@@ -299,7 +299,7 @@ files:
|
|
299
299
|
- app/assets/javascripts/casino/sessions.js
|
300
300
|
- app/assets/stylesheets/casino.scss
|
301
301
|
- app/assets/stylesheets/casino/icons.scss
|
302
|
-
- app/assets/stylesheets/casino/normalize.
|
302
|
+
- app/assets/stylesheets/casino/normalize.scss
|
303
303
|
- app/authenticators/casino/static_authenticator.rb
|
304
304
|
- app/builders/casino/ticket_validation_response_builder.rb
|
305
305
|
- app/controllers/casino/api/v1/tickets_controller.rb
|
@@ -397,6 +397,7 @@ files:
|
|
397
397
|
- lib/casino/tasks.rb
|
398
398
|
- lib/casino/tasks/cleanup.rake
|
399
399
|
- lib/casino/tasks/service_rule.rake
|
400
|
+
- lib/casino/tasks/user.rake
|
400
401
|
- lib/casino/version.rb
|
401
402
|
- lib/generators/casino/install/USAGE
|
402
403
|
- lib/generators/casino/install/install_generator.rb
|