bcms_cas 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|