bcms_cas 1.0.1 → 1.1.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.
- data/README.markdown +18 -52
- data/app/models/cas_user.rb +9 -5
- data/app/models/cms/temporary_user.rb +27 -0
- data/lib/{cas → bcms_cas}/authentication.rb +7 -9
- data/lib/bcms_cas/configuration.rb +25 -0
- data/lib/{cas → bcms_cas}/login_portlet_extension.rb +5 -2
- data/lib/{cas → bcms_cas}/utils.rb +0 -0
- data/lib/bcms_cas.rb +3 -2
- data/rails/init.rb +3 -0
- data/rails_generators/bcms_cas/bcms_cas_generator.rb +16 -0
- data/rails_generators/bcms_cas/templates/initializer.rb +3 -0
- data/rails_generators/bcms_cas/templates/login_portlet_helper.rb +4 -0
- data/rails_generators/bcms_cas/templates/render.html.erb +18 -0
- data/test/unit/cas/configuration_test.rb +25 -0
- data/test/unit/cas/login_portlet_test.rb +11 -0
- data/test/unit/cas_user_test.rb +12 -8
- data/test/unit/cms/temporary_user_test.rb +42 -0
- data/test/unit/helpers/login_portlet_helper_test.rb +6 -0
- metadata +55 -17
data/README.markdown
CHANGED
@@ -7,8 +7,6 @@ as an example of a server.
|
|
7
7
|
This module will allow user to login to the public area of the CMS, using the Login Form Portlet. It does not handle users that need to
|
8
8
|
log into the CMS administrative area. It also handles single logout by redirecting the user to cas /logout service.
|
9
9
|
|
10
|
-
As of 1.0.1, this is now managed via gemcutter.
|
11
|
-
|
12
10
|
## A. Instructions
|
13
11
|
Here are the necessary steps to install this module.
|
14
12
|
|
@@ -16,7 +14,7 @@ Here are the necessary steps to install this module.
|
|
16
14
|
2. Install the rubycas-client gem (See B below)
|
17
15
|
3. Install the bcms_cas module, and configure it to point to your CAS server (see C below).
|
18
16
|
4. Migrate the database to add the CAS Group (See D below)
|
19
|
-
5.
|
17
|
+
5. Create a Login Form to submit to the CAS server. (See E below)
|
20
18
|
|
21
19
|
## B. Installing RubyCAS-Client
|
22
20
|
This project depends on RubyCAS-client (http://code.google.com/p/rubycas-client/). RubyCAS-Client is a standard Rails PluginGem, and the instructions
|
@@ -28,66 +26,33 @@ This will add the latest version of a gem. The bcms_cas module will require the
|
|
28
26
|
make any configuration changes in your rails project.
|
29
27
|
|
30
28
|
## C. Installing/Configuring the Module
|
31
|
-
To install a BrowserCMS module
|
32
|
-
|
33
|
-
configuration options you need. Add the following to your config/initializers/browsercms.rb:
|
29
|
+
To install a BrowserCMS module see the following instructions http://www.browsercms.org/doc/guides/html/installing_modules.html . After you add the gem to your
|
30
|
+
environment.rb, run the following command to generate the necessary configuration files.
|
34
31
|
|
32
|
+
$ ./script/generate bcms_cas
|
35
33
|
|
36
|
-
|
37
|
-
|
38
|
-
:extra_attributes_session_key => :cas_extra_attributes
|
39
|
-
)
|
34
|
+
This will generate several files. You will then need to edit one of them to point to the CAS server. Edit the config/initializers/bcms_cas.rb and change the server_url
|
35
|
+
value to whatever domain name your cas server is located at. The file should look similar to this:
|
40
36
|
|
41
|
-
|
42
|
-
|
37
|
+
Cas::Module.configure do |config|
|
38
|
+
config.server_url = "https://cas.yourdomainname.com"
|
39
|
+
end
|
43
40
|
|
44
|
-
|
41
|
+
Next edit the production.rb to make sure your SITE_DOMAIN variable in production is correctly set to the right top level domain. This will be needed
|
42
|
+
to allow redirects between the servers to happen correctly (it requires Absolute URLs).
|
45
43
|
|
46
|
-
|
47
|
-
The :extra_attributes_session_key may not be needed, depending on what type of Authenticator your CAS server is using. You can
|
48
|
-
safely leave it out if you are just using the normal CMS logic. A CAS server can send additional information back, and these will be stored as
|
49
|
-
session variables that can be accessed in other methods.
|
44
|
+
SITE_DOMAIN="www.yourdomainname.com"
|
50
45
|
|
51
|
-
## D.
|
46
|
+
## D. Configure the 'CAS Authenticated User' Group
|
52
47
|
When you run rake db:migrate, this module will add a new group to the CMS called 'CAS Authenticated Users'. All users that
|
53
48
|
log in successfully will be assigned to members of this group. You will potentially want to rename this group to something
|
54
49
|
that more accurately reflects who these users are (i.e. Members, Staff, etc) and then set which sections of the website this
|
55
50
|
group can visit.
|
56
51
|
|
57
|
-
## E.
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
<%= login_ticket_tag %>
|
62
|
-
<%= service_url_tag %>
|
63
|
-
<p>
|
64
|
-
<%= label_tag :login %>
|
65
|
-
<%= text_field_tag :username, @login %>
|
66
|
-
</p>
|
67
|
-
<p>
|
68
|
-
<%= label_tag :password %>
|
69
|
-
<%= password_field_tag :password %>
|
70
|
-
</p>
|
71
|
-
<p>
|
72
|
-
<%= label_tag :remember_me %>
|
73
|
-
<%= check_box_tag :remember_me, '1', @remember_me %>
|
74
|
-
</p>
|
75
|
-
<p><%= submit_tag "Login" %></p>
|
76
|
-
<% end %>
|
77
|
-
|
78
|
-
The key changes are:
|
79
|
-
|
80
|
-
1. The form needs to submit directly to the CAS server
|
81
|
-
2. You need to add helpers for login_ticket_tag and service_url_tag. These generate hidden parameters CAS services need.
|
82
|
-
3. Change the username parameter from :login to :username
|
83
|
-
|
84
|
-
You must also create a file in your project called: app/portlets/helpers/login_portlet_helper.rb, with the following contents:
|
85
|
-
|
86
|
-
module LoginPortletHelper
|
87
|
-
include Cas::Login
|
88
|
-
end
|
89
|
-
|
90
|
-
This will add the needed methods for the above class.
|
52
|
+
## E. Create a Login Form
|
53
|
+
|
54
|
+
Via the BrowserCMS UI, create a page and place a Login Form portlet on it. It should use the newly generated login view created by the bcms_cas generator. If
|
55
|
+
the module is configured correctly, then logging in should correctly establish a CAS session.
|
91
56
|
|
92
57
|
F. Known Issues
|
93
58
|
|
@@ -99,4 +64,5 @@ F. Known Issues
|
|
99
64
|
* The CAS Login page has to be styled to match the look and feel of the site.
|
100
65
|
* If the user types in wrong username/pw on CMS login form, they will be left on the CAS Login page, with message.
|
101
66
|
* Every hit to a page with the login form portlet is fetching a LT from CAS. This is potentially slow. [Performance]
|
67
|
+
* A user that logs in as a CAS user and then as a cmsadmin will experience odd UI permission problems. This is due to CMS login not correctly clearing all session state.
|
102
68
|
|
data/app/models/cas_user.rb
CHANGED
@@ -1,20 +1,24 @@
|
|
1
1
|
#
|
2
|
-
# This represents a user was
|
2
|
+
# This represents a user was authenticated using a CAS service. Their user data is not saved in the database (in the users table_,
|
3
3
|
# but is retrieved from an external service and stored purely as session data.
|
4
4
|
#
|
5
5
|
#
|
6
|
-
class CasUser <
|
6
|
+
class CasUser < Cms::TemporaryUser
|
7
7
|
|
8
8
|
GROUP_NAME = "cas_group"
|
9
9
|
|
10
10
|
def initialize(attributes={})
|
11
11
|
super({ :first_name => "CAS", :last_name => "User"}.merge(attributes))
|
12
|
-
@guest = false
|
13
12
|
end
|
14
13
|
|
15
14
|
# Using a single group for now. (This will need to be mapped to more groups later).
|
16
|
-
def
|
17
|
-
@
|
15
|
+
def groups
|
16
|
+
@groups ||= [group]
|
18
17
|
end
|
19
18
|
|
19
|
+
# @deprecated
|
20
|
+
# This exists only for backwards compatibility for when this used to inherit from GuestUser. It should be removed in 1.2.
|
21
|
+
def group
|
22
|
+
Group.find_by_code(GROUP_NAME)
|
23
|
+
end
|
20
24
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Cms
|
2
|
+
|
3
|
+
# This represents a 'temporary' user who is never stored in the database, but lives only as a limited duration (generally tied to a session)
|
4
|
+
# This can be used to represent an externally verified user who should be granted access to areas of the site.
|
5
|
+
class TemporaryUser < User
|
6
|
+
|
7
|
+
# Shouldn't save these users to the db.
|
8
|
+
def save(perform_validations=true)
|
9
|
+
false
|
10
|
+
end
|
11
|
+
|
12
|
+
# Shouldn't save these users to the db.
|
13
|
+
def save!(perform_validation=true)
|
14
|
+
raise NotImplementedError
|
15
|
+
end
|
16
|
+
|
17
|
+
# Determines if this user has access to the CMS UI.
|
18
|
+
#
|
19
|
+
# Note: This overrides User.cms_access? which is implicitly dependant on groups being a proxy/has_many Array, rather than
|
20
|
+
# just an array of groups.
|
21
|
+
def cms_access?
|
22
|
+
groups.each do |g|
|
23
|
+
return true if g.cms_access?
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'bcms_cas/utils'
|
2
2
|
require 'casclient'
|
3
3
|
require 'casclient/frameworks/rails/filter'
|
4
4
|
|
@@ -20,25 +20,23 @@ module Cas
|
|
20
20
|
|
21
21
|
# Each instance of the controller will gain these methods.
|
22
22
|
module InstanceMethods
|
23
|
+
|
24
|
+
# This exists because we want to force this to happen AFTER login_from_cas_ticket. There may be a better way to do this.
|
23
25
|
def check_access_to_page_normally
|
24
|
-
logger.warn "Checking auth using normal Cms filter."
|
25
26
|
check_access_to_page
|
26
27
|
end
|
27
28
|
|
28
29
|
# Attempts to set the current user based on the session attribute set by CAS.
|
29
30
|
def login_from_cas_ticket
|
30
|
-
logger.debug "
|
31
|
+
logger.debug "Checking for cas login. The current_user is '#{@current_user.login}'." if @current_user
|
31
32
|
if session[:cas_user]
|
32
|
-
logger.warn "Who is @current_user '#{@current_user.login}'?" if @current_user
|
33
|
-
logger.warn "Who is User.current '#{User.current.login}'?" if User.current
|
34
|
-
|
35
33
|
user = CasUser.new(:login=>session[:cas_user])
|
36
34
|
|
37
35
|
# Having to set both of these feels very duplicative. Ideally I would like a way
|
38
|
-
# to set only once, but calling current_user= has
|
36
|
+
# to set only once, but calling current_user= has side effects.
|
39
37
|
@current_user = User.current = user
|
40
38
|
|
41
|
-
logger.
|
39
|
+
logger.debug "CasUser information found in session. Setting current_user as '#{user.login}" if @current_user
|
42
40
|
end
|
43
41
|
@current_user
|
44
42
|
end
|
@@ -57,7 +55,7 @@ module Cas
|
|
57
55
|
module InstanceMethods
|
58
56
|
|
59
57
|
def destroy_with_cas
|
60
|
-
logger.
|
58
|
+
logger.debug "Logging user out of both cms and CAS server."
|
61
59
|
logout_user
|
62
60
|
Cas::Utils.logout(self, "http://#{SITE_DOMAIN}/")
|
63
61
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Cas
|
2
|
+
|
3
|
+
module Module
|
4
|
+
|
5
|
+
class << self
|
6
|
+
|
7
|
+
attr_accessor :configuration
|
8
|
+
|
9
|
+
def configure()
|
10
|
+
self.configuration ||= Configuration.new
|
11
|
+
yield(configuration)
|
12
|
+
self.configuration.execute
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
class Configuration
|
18
|
+
attr_accessor :server_url
|
19
|
+
|
20
|
+
def execute
|
21
|
+
params = {:cas_base_url => server_url, :extra_attributes_session_key => :cas_extra_attributes}
|
22
|
+
CASClient::Frameworks::Rails::Filter.configure(params)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -16,7 +16,10 @@ module Cas::LoginPortlet
|
|
16
16
|
|
17
17
|
##
|
18
18
|
# Returns the URL to the CAS login service.
|
19
|
-
|
20
|
-
|
19
|
+
#
|
20
|
+
def login_url_tag
|
21
|
+
CASClient::Frameworks::Rails::Filter.login_url(@controller)
|
21
22
|
end
|
23
|
+
|
24
|
+
alias_method :login_url, :login_url_tag
|
22
25
|
end
|
File without changes
|
data/lib/bcms_cas.rb
CHANGED
data/rails/init.rb
CHANGED
@@ -0,0 +1,16 @@
|
|
1
|
+
class BcmsCasGenerator < Rails::Generator::Base
|
2
|
+
|
3
|
+
def manifest
|
4
|
+
record do |m|
|
5
|
+
m.template "initializer.rb", "config/initializers/bcms_cas.rb"
|
6
|
+
|
7
|
+
# Provide a different default template for the Login Form.
|
8
|
+
m.directory File.join('app/views/portlets/login')
|
9
|
+
m.template "render.html.erb", "app/views/portlets/login/render.html.erb"
|
10
|
+
|
11
|
+
# Provide a helper for Login Form Portlet (this is a workaround for a core CMS bug where portlet helpers are not loaded from gems)
|
12
|
+
m.directory File.join('app/portlets/helpers')
|
13
|
+
m.template "login_portlet_helper.rb", "app/portlets/helpers/login_portlet_helper.rb"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<%%# This will override the 'Stock' view provided by the LoginFormPortlet in order to make it work with CAS. -%>
|
2
|
+
<%% form_tag login_url_tag do %>
|
3
|
+
<%%= login_ticket_tag %>
|
4
|
+
<%%= service_url_tag %>
|
5
|
+
<p>
|
6
|
+
<%%= label_tag :login %>
|
7
|
+
<%%= text_field_tag :username, @login %>
|
8
|
+
</p>
|
9
|
+
<p>
|
10
|
+
<%%= label_tag :password %>
|
11
|
+
<%%= password_field_tag :password %>
|
12
|
+
</p>
|
13
|
+
<p>
|
14
|
+
<%%= label_tag :remember_me %>
|
15
|
+
<%%= check_box_tag :remember_me, '1', @remember_me %>
|
16
|
+
</p>
|
17
|
+
<p><%%= submit_tag "Login" %></p>
|
18
|
+
<%% end %>
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
require 'mocha'
|
3
|
+
|
4
|
+
class CasConfigurationTest < ActiveSupport::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
|
8
|
+
end
|
9
|
+
|
10
|
+
def teardown
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
test "Simplified syntax for configuration that hides the details of the RubyCas-Client" do
|
15
|
+
expected_params = {:cas_base_url => "https://some.domain.com", :extra_attributes_session_key => :cas_extra_attributes}
|
16
|
+
CASClient::Frameworks::Rails::Filter.expects(:configure).with(expected_params)
|
17
|
+
|
18
|
+
Cas::Module.configure do |config|
|
19
|
+
config.server_url = "https://some.domain.com"
|
20
|
+
end
|
21
|
+
|
22
|
+
cfg = Cas::Module.configuration
|
23
|
+
assert_equal "https://some.domain.com", cfg.server_url
|
24
|
+
end
|
25
|
+
end
|
@@ -7,6 +7,10 @@ end
|
|
7
7
|
|
8
8
|
class LoginPortletTest < ActiveSupport::TestCase
|
9
9
|
|
10
|
+
def setup
|
11
|
+
@obj = LoginObject.new
|
12
|
+
end
|
13
|
+
|
10
14
|
test "service_url_tag" do
|
11
15
|
obj = LoginObject.new
|
12
16
|
assert obj.respond_to?(:service_url_tag)
|
@@ -30,4 +34,11 @@ class LoginPortletTest < ActiveSupport::TestCase
|
|
30
34
|
assert_equal "http://example.com", obj.login_url
|
31
35
|
end
|
32
36
|
|
37
|
+
test "Alias (to avoid helper conflicts)" do
|
38
|
+
CASClient::Frameworks::Rails::Filter.expects(:login_url).returns("http://example.com")
|
39
|
+
|
40
|
+
assert_equal "http://example.com", @obj.login_url_tag
|
41
|
+
end
|
42
|
+
|
43
|
+
|
33
44
|
end
|
data/test/unit/cas_user_test.rb
CHANGED
@@ -3,22 +3,20 @@ require 'test_helper'
|
|
3
3
|
class CasUserTest < ActiveSupport::TestCase
|
4
4
|
|
5
5
|
def setup
|
6
|
-
@
|
7
|
-
@
|
8
|
-
@
|
9
|
-
@
|
6
|
+
@viewable_section = Section.create!(:name=>"root", :root=>true, :path=>"/")
|
7
|
+
@viewable_page = Page.create!(:name=>"Home", :section=>@viewable_section, :path=>"/p")
|
8
|
+
@cas_group = Group.create!(:name=>"G", :code=>"cas_group")
|
9
|
+
@cas_group.sections = Section.all
|
10
10
|
end
|
11
11
|
|
12
12
|
test "group returns the cas_group" do
|
13
13
|
user = CasUser.new
|
14
|
-
|
15
|
-
assert_equal @g, user.group
|
14
|
+
assert_equal @cas_group, user.group
|
16
15
|
end
|
17
16
|
|
18
17
|
test "cas_user should be able to view all sections (based on group)" do
|
19
18
|
user = CasUser.new
|
20
|
-
|
21
|
-
assert user.able_to_view?(@p)
|
19
|
+
assert user.able_to_view?(@viewable_page)
|
22
20
|
end
|
23
21
|
|
24
22
|
test "setting login" do
|
@@ -31,5 +29,11 @@ class CasUserTest < ActiveSupport::TestCase
|
|
31
29
|
assert !user.guest?
|
32
30
|
end
|
33
31
|
|
32
|
+
test "determine if a user has cms_access" do
|
33
|
+
user = CasUser.new
|
34
|
+
user.groups << @cas_group
|
34
35
|
|
36
|
+
@cas_group.expects(:cms_access?).returns(true)
|
37
|
+
assert_equal true, user.cms_access?
|
38
|
+
end
|
35
39
|
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class TemporaryUserTest < ActiveSupport::TestCase
|
4
|
+
|
5
|
+
MINIMUM_VALID_ATTRIBUTES = {:login=>"abc@bm.com", :password=>"123", :password_confirmation=>"123", :email=>"abc@bm.com"}
|
6
|
+
def setup
|
7
|
+
@user = Cms::TemporaryUser.new(MINIMUM_VALID_ATTRIBUTES)
|
8
|
+
end
|
9
|
+
|
10
|
+
def teardown
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
test "Should not be able to save or save!" do
|
15
|
+
|
16
|
+
assert_equal false, @user.save
|
17
|
+
assert_equal true, @user.valid?
|
18
|
+
|
19
|
+
assert_raise NotImplementedError do
|
20
|
+
@user.save!
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
test "Shouldn't be able to update attributes" do
|
25
|
+
assert_equal false, @user.update_attribute(:login, "OTHER")
|
26
|
+
assert_equal false, @user.update_attributes({:login =>"OTHER"})
|
27
|
+
end
|
28
|
+
|
29
|
+
test "Should belong to no groups by default" do
|
30
|
+
assert_equal 0, @user.groups.size
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
class GuestUserTest <ActiveSupport::TestCase
|
36
|
+
|
37
|
+
test "Verify save behavior of Guest is similar to TemporaryUser" do
|
38
|
+
guest = GuestUser.new(TemporaryUserTest::MINIMUM_VALID_ATTRIBUTES)
|
39
|
+
assert_equal false, guest.save()
|
40
|
+
assert_equal true, guest.valid?
|
41
|
+
end
|
42
|
+
end
|
@@ -7,4 +7,10 @@ class LoginPortletHelperTest < ActionView::TestCase
|
|
7
7
|
ticket = Cas::Utils.expects(:fetch_lt_from_cas).with().returns("ABC")
|
8
8
|
assert_equal hidden_field_tag( :lt, "ABC"), login_ticket_tag
|
9
9
|
end
|
10
|
+
|
11
|
+
test "Get login URL" do
|
12
|
+
@controller = mock
|
13
|
+
CASClient::Frameworks::Rails::Filter.expects(:login_url).with(@controller).returns("http://someurl.com")
|
14
|
+
assert_equal "http://someurl.com", login_url_tag
|
15
|
+
end
|
10
16
|
end
|
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bcms_cas
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 19
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 1
|
8
|
+
- 1
|
9
|
+
- 0
|
10
|
+
version: 1.1.0
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- BrowserMedia
|
@@ -9,29 +15,38 @@ autorequire:
|
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
17
|
|
12
|
-
date: 2010-
|
18
|
+
date: 2010-09-30 00:00:00 -04:00
|
13
19
|
default_executable:
|
14
20
|
dependencies:
|
15
21
|
- !ruby/object:Gem::Dependency
|
16
22
|
name: browsercms
|
17
|
-
|
18
|
-
|
19
|
-
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
20
26
|
requirements:
|
21
27
|
- - ">="
|
22
28
|
- !ruby/object:Gem::Version
|
23
|
-
|
24
|
-
|
29
|
+
hash: 5
|
30
|
+
segments:
|
31
|
+
- 3
|
32
|
+
- 1
|
33
|
+
version: "3.1"
|
34
|
+
type: :runtime
|
35
|
+
version_requirements: *id001
|
25
36
|
- !ruby/object:Gem::Dependency
|
26
37
|
name: rubycas-client
|
27
|
-
|
28
|
-
|
29
|
-
|
38
|
+
prerelease: false
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
30
41
|
requirements:
|
31
42
|
- - ">="
|
32
43
|
- !ruby/object:Gem::Version
|
44
|
+
hash: 3
|
45
|
+
segments:
|
46
|
+
- 0
|
33
47
|
version: "0"
|
34
|
-
|
48
|
+
type: :runtime
|
49
|
+
version_requirements: *id002
|
35
50
|
description: Allows a BrowserCMS project to connect to a CAS server to authenticate users.
|
36
51
|
email: github@browsermedia.com
|
37
52
|
executables: []
|
@@ -42,14 +57,29 @@ extra_rdoc_files:
|
|
42
57
|
- README.markdown
|
43
58
|
files:
|
44
59
|
- app/models/cas_user.rb
|
60
|
+
- app/models/cms/temporary_user.rb
|
45
61
|
- db/migrate/20091002162550_add_cas_user_group.rb
|
46
62
|
- lib/bcms_cas.rb
|
63
|
+
- lib/bcms_cas/authentication.rb
|
64
|
+
- lib/bcms_cas/configuration.rb
|
65
|
+
- lib/bcms_cas/login_portlet_extension.rb
|
47
66
|
- lib/bcms_cas/routes.rb
|
48
|
-
- lib/
|
49
|
-
- lib/cas/login_portlet_extension.rb
|
50
|
-
- lib/cas/utils.rb
|
67
|
+
- lib/bcms_cas/utils.rb
|
51
68
|
- rails/init.rb
|
69
|
+
- rails_generators/bcms_cas/bcms_cas_generator.rb
|
70
|
+
- rails_generators/bcms_cas/templates/initializer.rb
|
71
|
+
- rails_generators/bcms_cas/templates/login_portlet_helper.rb
|
72
|
+
- rails_generators/bcms_cas/templates/render.html.erb
|
52
73
|
- README.markdown
|
74
|
+
- test/performance/browsing_test.rb
|
75
|
+
- test/test_helper.rb
|
76
|
+
- test/unit/cas/cas_authentication_test.rb
|
77
|
+
- test/unit/cas/configuration_test.rb
|
78
|
+
- test/unit/cas/login_portlet_test.rb
|
79
|
+
- test/unit/cas_user_test.rb
|
80
|
+
- test/unit/cas_utils_test.rb
|
81
|
+
- test/unit/cms/temporary_user_test.rb
|
82
|
+
- test/unit/helpers/login_portlet_helper_test.rb
|
53
83
|
has_rdoc: true
|
54
84
|
homepage: http://browsercms.org
|
55
85
|
licenses: []
|
@@ -60,21 +90,27 @@ rdoc_options:
|
|
60
90
|
require_paths:
|
61
91
|
- lib
|
62
92
|
required_ruby_version: !ruby/object:Gem::Requirement
|
93
|
+
none: false
|
63
94
|
requirements:
|
64
95
|
- - ">="
|
65
96
|
- !ruby/object:Gem::Version
|
97
|
+
hash: 3
|
98
|
+
segments:
|
99
|
+
- 0
|
66
100
|
version: "0"
|
67
|
-
version:
|
68
101
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
102
|
+
none: false
|
69
103
|
requirements:
|
70
104
|
- - ">="
|
71
105
|
- !ruby/object:Gem::Version
|
106
|
+
hash: 3
|
107
|
+
segments:
|
108
|
+
- 0
|
72
109
|
version: "0"
|
73
|
-
version:
|
74
110
|
requirements: []
|
75
111
|
|
76
112
|
rubyforge_project: browsercms
|
77
|
-
rubygems_version: 1.3.
|
113
|
+
rubygems_version: 1.3.7
|
78
114
|
signing_key:
|
79
115
|
specification_version: 3
|
80
116
|
summary: A CAS Module for BrowserCMS
|
@@ -82,7 +118,9 @@ test_files:
|
|
82
118
|
- test/performance/browsing_test.rb
|
83
119
|
- test/test_helper.rb
|
84
120
|
- test/unit/cas/cas_authentication_test.rb
|
121
|
+
- test/unit/cas/configuration_test.rb
|
85
122
|
- test/unit/cas/login_portlet_test.rb
|
86
123
|
- test/unit/cas_user_test.rb
|
87
124
|
- test/unit/cas_utils_test.rb
|
125
|
+
- test/unit/cms/temporary_user_test.rb
|
88
126
|
- test/unit/helpers/login_portlet_helper_test.rb
|