devise_ichain_authenticatable 0.3.0 → 0.3.1
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/README.md +23 -6
- data/app/controllers/devise/ichain_sessions_controller.rb +0 -4
- data/app/views/devise/ichain_sessions/new_test.html.erb +5 -3
- data/lib/devise_ichain_authenticatable.rb +7 -2
- data/lib/devise_ichain_authenticatable/strategy.rb +8 -1
- data/lib/devise_ichain_authenticatable/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9f527cdc5099cd67334d3d9497ae0f4584df0292
|
4
|
+
data.tar.gz: 3419f6f040a85f47d948b8c1a13e55aa23fbc803
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 48911f54980f20aca91f8d656f7f0a479c743b5364b7a3baa5de73b6768ea708c9ee47329077f86cc694af9c3735d74db4f49ba3629fe05e5350ede4400e54b1
|
7
|
+
data.tar.gz: 4469b6c2bbd0fc5c87ca1913cdbd2451cdd796418be7a803dfec9a146b3e250cd237b9c206a1ecf616c8cd56fcf6355a266efec767b406c190f4fd73a9dec44c
|
data/README.md
CHANGED
@@ -90,6 +90,13 @@ Devise.setup do |config|
|
|
90
90
|
# Activate the test mode, useful when no real iChain is present, like in
|
91
91
|
# testing and development environments
|
92
92
|
# config.ichain_test_mode = false
|
93
|
+
|
94
|
+
# In test mode, you can skip asking for the user information by always
|
95
|
+
# forcing the following username. The user will be permanently signed in.
|
96
|
+
# config.ichain_force_test_username = "testuser"
|
97
|
+
|
98
|
+
# In test mode, force the following additional attributes
|
99
|
+
# config.ichain_force_test_attributes = {:email => "testuser@example.com"}
|
93
100
|
end
|
94
101
|
```
|
95
102
|
|
@@ -104,14 +111,24 @@ the following helpers would be available: `new_user_ichain_session_path`,
|
|
104
111
|
Test mode
|
105
112
|
---------
|
106
113
|
|
107
|
-
|
114
|
+
This gem provides a test mode, extremely useful during the development
|
115
|
+
phase, in which an iChain proxy is not usually configured or even available.
|
116
|
+
```ichain_registerable```will have no effect if test mode is enabled.
|
117
|
+
|
118
|
+
By default, if the test mode is enabled in the configuration file, anytime
|
108
119
|
authentication is required, a very simple form asking for the username and the
|
109
120
|
additional parameters will be displayed. The entered values will be completely
|
110
|
-
trusted with no check
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
121
|
+
trusted with no check and stored in the Rails' session.
|
122
|
+
|
123
|
+
In some situations this approach is not useful, either because the application
|
124
|
+
lacks sessions' management and/or user interface (for example, applications
|
125
|
+
based on [rails-api](https://github.com/rails-api/rails-api)), either because
|
126
|
+
you simply want to skip asking for the test user information. In those
|
127
|
+
cases, a username and/or a set of additional attributes can be forced using the
|
128
|
+
```ichain_force_test_username``` and ```ichain_force_test_attributes```
|
129
|
+
configuration options. If ```ichain_force_test_username``` is set, the username
|
130
|
+
will be used in every single request, which means that the user will be
|
131
|
+
permanently signed in.
|
115
132
|
|
116
133
|
Contact
|
117
134
|
-------
|
@@ -1,19 +1,16 @@
|
|
1
1
|
class Devise::IchainSessionsController < DeviseController
|
2
2
|
prepend_before_filter :require_no_authentication, :only => [ :new, :test ]
|
3
3
|
|
4
|
-
# GET /resource/sign_in
|
5
4
|
def new
|
6
5
|
return new_test if ::Devise.ichain_test_mode
|
7
6
|
self.resource = resource_class.new
|
8
7
|
@back_url = base_url + after_sign_in_path_for(resource_name)
|
9
|
-
# The slash at the end is very important
|
10
8
|
@login_url = resource_class.ichain_login_url
|
11
9
|
@context = ::Devise.ichain_context
|
12
10
|
@proxypath = ::Devise.ichain_proxypath
|
13
11
|
respond_with resource
|
14
12
|
end
|
15
13
|
|
16
|
-
# DELETE /resource/sign_out
|
17
14
|
def destroy
|
18
15
|
redirect_url = base_url + after_sign_out_path_for(resource_name)
|
19
16
|
if ::Devise.ichain_test_mode
|
@@ -23,7 +20,6 @@ class Devise::IchainSessionsController < DeviseController
|
|
23
20
|
set_flash_message :notice, :signed_out if signed_out && is_navigational_format?
|
24
21
|
redirect_to redirect_url
|
25
22
|
else
|
26
|
-
# The final slash is very important, indeed
|
27
23
|
logout_url = resource_class.ichain_logout_url
|
28
24
|
logout_url += "?" + {:url => redirect_url}.to_query
|
29
25
|
redirect_to logout_url
|
@@ -3,9 +3,11 @@
|
|
3
3
|
<%= form_tag(@login_url, :method => :post, :enctype => 'application/x-www-form-urlencoded') do %>
|
4
4
|
<div><%= label_tag :username, "Username" %><br />
|
5
5
|
<%= text_field_tag :username, "" %></div>
|
6
|
-
<%-
|
7
|
-
|
8
|
-
|
6
|
+
<%- if ::Devise.ichain_force_test_attributes.blank? -%>
|
7
|
+
<%- @fields.each do |field| %>
|
8
|
+
<div><%= label_tag "attributes[#{field}]", field.to_s.humanize %><br />
|
9
|
+
<%= text_field_tag "attributes[#{field}]", "" %></div>
|
10
|
+
<%- end -%>
|
9
11
|
<%- end -%>
|
10
12
|
|
11
13
|
<div><%= submit_tag "Sign in" %></div>
|
@@ -9,12 +9,16 @@ module Devise
|
|
9
9
|
autoload :IchainFailureApp, 'devise/ichain_failure_app'
|
10
10
|
|
11
11
|
# Configuration params
|
12
|
-
@@ichain_test_mode = false
|
13
12
|
@@ichain_base_url = nil
|
14
13
|
@@ichain_context = "default"
|
15
14
|
@@ichain_proxypath = "reverse"
|
16
15
|
@@ichain_username_header = "HTTP_X_USERNAME"
|
17
16
|
@@ichain_attribute_headers = {:email => "HTTP_X_EMAIL"}
|
17
|
+
|
18
|
+
@@ichain_test_mode = false
|
19
|
+
@@ichain_force_test_username = nil
|
20
|
+
@@ichain_force_test_attributes = nil
|
21
|
+
|
18
22
|
# The slashes at the end of the urls looks to be relevant
|
19
23
|
@@ichain_login_path = "ICSLogin/"
|
20
24
|
@@ichain_registration_path = "ICSLogin/auth-up/"
|
@@ -23,7 +27,8 @@ module Devise
|
|
23
27
|
mattr_accessor :ichain_test_mode, :ichain_base_url,
|
24
28
|
:ichain_login_path, :ichain_registration_path, :ichain_logout_path,
|
25
29
|
:ichain_context, :ichain_proxypath,
|
26
|
-
:ichain_username_header, :ichain_attribute_headers
|
30
|
+
:ichain_username_header, :ichain_attribute_headers,
|
31
|
+
:ichain_force_test_username, :ichain_force_test_attributes
|
27
32
|
end
|
28
33
|
|
29
34
|
Devise.add_module :ichain_authenticatable,
|
@@ -11,9 +11,16 @@ class Devise::Strategies::IchainAuthenticatable < Devise::Strategies::Authentica
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def authenticate!
|
14
|
+
proxy_user = nil
|
14
15
|
if ::Devise.ichain_test_mode
|
15
|
-
|
16
|
+
if ::Devise.ichain_force_test_username
|
17
|
+
proxy_user = ::Devise.ichain_force_test_username.to_s
|
18
|
+
elsif session[:ichain_test_username]
|
16
19
|
proxy_user = session[:ichain_test_username]
|
20
|
+
end
|
21
|
+
if ::Devise.ichain_force_test_attributes
|
22
|
+
attributes = ::Devise.ichain_force_test_attributes
|
23
|
+
else
|
17
24
|
attributes = session[:ichain_test_attributes] || {}
|
18
25
|
end
|
19
26
|
else
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: devise_ichain_authenticatable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ancor González Sosa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-10-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: devise
|
@@ -68,7 +68,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
68
68
|
version: '0'
|
69
69
|
requirements: []
|
70
70
|
rubyforge_project:
|
71
|
-
rubygems_version: 2.0.
|
71
|
+
rubygems_version: 2.0.3
|
72
72
|
signing_key:
|
73
73
|
specification_version: 4
|
74
74
|
summary: Devise extension to allow authentication via iChain
|