devise_ldap_authenticatable 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. data/.gitignore +5 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +4 -1
  4. data/Rakefile +52 -0
  5. data/VERSION +1 -0
  6. data/devise_ldap_authenticatable.gemspec +166 -0
  7. data/lib/devise_ldap_authenticatable.rb +3 -0
  8. data/lib/devise_ldap_authenticatable/ldap_adapter.rb +14 -4
  9. data/lib/devise_ldap_authenticatable/model.rb +26 -26
  10. data/lib/devise_ldap_authenticatable/version.rb +1 -1
  11. data/lib/generators/devise_ldap_authenticatable/install_generator.rb +2 -0
  12. data/rails/init.rb +2 -0
  13. data/test/devise_ldap_authenticatable_test.rb +8 -0
  14. data/test/ldap/base.ldif +54 -0
  15. data/test/ldap/clear.ldif +20 -0
  16. data/test/ldap/local.schema +6 -0
  17. data/test/ldap/run-server.sh +4 -0
  18. data/test/ldap/slapd-test.conf +106 -0
  19. data/test/rails_app/Gemfile +22 -0
  20. data/test/rails_app/Rakefile +7 -0
  21. data/test/rails_app/app/controllers/application_controller.rb +4 -0
  22. data/test/rails_app/app/controllers/posts_controller.rb +15 -0
  23. data/test/rails_app/app/helpers/application_helper.rb +2 -0
  24. data/test/rails_app/app/helpers/posts_helper.rb +2 -0
  25. data/test/rails_app/app/models/post.rb +2 -0
  26. data/test/rails_app/app/models/user.rb +10 -0
  27. data/test/rails_app/app/views/layouts/application.html.erb +26 -0
  28. data/test/rails_app/app/views/posts/index.html.erb +2 -0
  29. data/test/rails_app/config.ru +4 -0
  30. data/test/rails_app/config/application.rb +46 -0
  31. data/test/rails_app/config/boot.rb +13 -0
  32. data/test/rails_app/config/cucumber.yml +8 -0
  33. data/test/rails_app/config/database.yml +25 -0
  34. data/test/rails_app/config/environment.rb +5 -0
  35. data/test/rails_app/config/environments/development.rb +22 -0
  36. data/test/rails_app/config/environments/production.rb +46 -0
  37. data/test/rails_app/config/environments/test.rb +34 -0
  38. data/test/rails_app/config/initializers/backtrace_silencers.rb +7 -0
  39. data/test/rails_app/config/initializers/devise.rb +140 -0
  40. data/test/rails_app/config/initializers/inflections.rb +10 -0
  41. data/test/rails_app/config/initializers/mime_types.rb +5 -0
  42. data/test/rails_app/config/initializers/secret_token.rb +7 -0
  43. data/test/rails_app/config/initializers/session_store.rb +8 -0
  44. data/test/rails_app/config/ldap.yml +33 -0
  45. data/test/rails_app/config/ldap_with_uid.yml +30 -0
  46. data/test/rails_app/config/locales/devise.en.yml +39 -0
  47. data/test/rails_app/config/locales/en.yml +5 -0
  48. data/test/rails_app/config/routes.rb +64 -0
  49. data/test/rails_app/db/migrate/20100708120302_create_posts.rb +14 -0
  50. data/test/rails_app/db/migrate/20100708120448_devise_create_users.rb +26 -0
  51. data/test/rails_app/db/schema.rb +41 -0
  52. data/test/rails_app/db/seeds.rb +7 -0
  53. data/test/rails_app/features/manage_logins.feature +34 -0
  54. data/test/rails_app/features/step_definitions/login_steps.rb +16 -0
  55. data/test/rails_app/features/step_definitions/web_steps.rb +219 -0
  56. data/test/rails_app/features/support/env.rb +58 -0
  57. data/test/rails_app/features/support/paths.rb +38 -0
  58. data/test/rails_app/lib/tasks/.gitkeep +0 -0
  59. data/test/rails_app/lib/tasks/cucumber.rake +53 -0
  60. data/test/rails_app/public/404.html +26 -0
  61. data/test/rails_app/public/422.html +26 -0
  62. data/test/rails_app/public/500.html +26 -0
  63. data/test/rails_app/public/images/rails.png +0 -0
  64. data/test/rails_app/public/javascripts/application.js +2 -0
  65. data/test/rails_app/public/javascripts/controls.js +965 -0
  66. data/test/rails_app/public/javascripts/dragdrop.js +974 -0
  67. data/test/rails_app/public/javascripts/effects.js +1123 -0
  68. data/test/rails_app/public/javascripts/prototype.js +4874 -0
  69. data/test/rails_app/public/javascripts/rails.js +118 -0
  70. data/test/rails_app/public/stylesheets/.gitkeep +0 -0
  71. data/test/rails_app/script/cucumber +10 -0
  72. data/test/rails_app/script/rails +6 -0
  73. data/test/rails_app/test/factories/users.rb +9 -0
  74. data/test/rails_app/test/functional/posts_controller_test.rb +58 -0
  75. data/test/rails_app/test/performance/browsing_test.rb +9 -0
  76. data/test/rails_app/test/test_helper.rb +22 -0
  77. data/test/rails_app/test/unit/helpers/posts_helper_test.rb +4 -0
  78. data/test/rails_app/test/unit/post_test.rb +8 -0
  79. data/test/rails_app/test/unit/user_test.rb +172 -0
  80. data/test/test_helper.rb +3 -0
  81. metadata +140 -30
@@ -0,0 +1,54 @@
1
+ # ldapadd -x -h localhost -p 3389 -D "cn=admin,dc=test,dc=com" -w secret -f base.ldif
2
+
3
+ dn: dc=test,dc=com
4
+ objectClass: dcObject
5
+ objectClass: organizationalUnit
6
+ dc: test
7
+ ou: Test
8
+
9
+ dn: ou=people,dc=test,dc=com
10
+ objectClass: organizationalUnit
11
+ ou: people
12
+
13
+ dn: ou=groups,dc=test,dc=com
14
+ objectClass: organizationalUnit
15
+ ou: groups
16
+
17
+ # example.user@test.com, people, test.com
18
+ dn: cn=example.user@test.com,ou=people,dc=test,dc=com
19
+ objectClass: inetOrgPerson
20
+ objectClass: authorizations
21
+ sn: User
22
+ uid: example_user
23
+ mail: example.user@test.com
24
+ cn: example.user@test.com
25
+ authorizationRole: blogUser
26
+ userPassword:: e1NTSEF9ZXRYaE9NcjRjOGFiTjlqYUxyczZKSll5MFlaZUF1NURCVWhhY0E9PQ=
27
+ =
28
+
29
+ # example.admin@test.com, people, test.com
30
+ dn: cn=example.admin@test.com,ou=people,dc=test,dc=com
31
+ objectClass: inetOrgPerson
32
+ objectClass: authorizations
33
+ objectClass: organizationalPerson
34
+ objectClass: person
35
+ objectClass: top
36
+ sn: Admin
37
+ uid: example_admin
38
+ cn: example.admin@test.com
39
+ authorizationRole: blogAdmin
40
+ userPassword:: e1NIQX0wcUNXaERISGFwWmc3ekJxZWRRanBzNW1EUDA9
41
+
42
+ # users, groups, test.com
43
+ dn: cn=users,ou=groups,dc=test,dc=com
44
+ objectClass: groupOfUniqueNames
45
+ objectClass: top
46
+ uniqueMember: cn=example.user@test.com,ou=people,dc=test,dc=com
47
+ cn: users
48
+
49
+ # users, groups, test.com
50
+ dn: cn=admins,ou=groups,dc=test,dc=com
51
+ objectClass: groupOfUniqueNames
52
+ objectClass: top
53
+ uniqueMember: cn=example.admin@test.com,ou=people,dc=test,dc=com
54
+ cn: admins
@@ -0,0 +1,20 @@
1
+ dn: cn=admins,ou=groups,dc=test,dc=com
2
+ changetype: delete
3
+
4
+ dn: cn=users,ou=groups,dc=test,dc=com
5
+ changetype: delete
6
+
7
+ dn: cn=example.admin@test.com,ou=people,dc=test,dc=com
8
+ changetype: delete
9
+
10
+ dn: cn=example.user@test.com,ou=people,dc=test,dc=com
11
+ changetype: delete
12
+
13
+ dn: ou=groups,dc=test,dc=com
14
+ changetype: delete
15
+
16
+ dn: ou=people,dc=test,dc=com
17
+ changetype: delete
18
+
19
+ dn: dc=test,dc=com
20
+ changetype: delete
@@ -0,0 +1,6 @@
1
+ attributetype ( 1.1.2.2.5 NAME 'authorizationRole' SUP name )
2
+
3
+ objectclass ( 1.1.2.2.1 NAME 'authorizations'
4
+ DESC 'mixin authorizations'
5
+ AUXILIARY
6
+ MAY authorizationRole )
@@ -0,0 +1,4 @@
1
+ ## For OSX:
2
+ PATH=$PATH:/usr/libexec
3
+
4
+ slapd -d 1 -f slapd-test.conf -h ldap://localhost:3389
@@ -0,0 +1,106 @@
1
+ #
2
+ # See slapd.conf(5) for details on configuration options.
3
+ # This file should NOT be world readable.
4
+ #
5
+ include /etc/openldap/schema/core.schema
6
+ include /etc/openldap/schema/cosine.schema
7
+ include /etc/openldap/schema/inetorgperson.schema
8
+ include /etc/openldap/schema/nis.schema
9
+
10
+ ## Local definitions
11
+ # include /etc/openldap/schema/local.schema
12
+ include local.schema
13
+
14
+ # Allow LDAPv2 client connections. This is NOT the default.
15
+ allow bind_v2
16
+
17
+ # Do not enable referrals until AFTER you have a working directory
18
+ # service AND an understanding of referrals.
19
+ #referral ldap://root.openldap.org
20
+
21
+ pidfile openldap-data/run/slapd.pid
22
+ argsfile openldap-data/run/slapd.args
23
+
24
+ # Load dynamic backend modules:
25
+ modulepath /usr/lib/openldap
26
+
27
+ # modules available in openldap-servers-overlays RPM package:
28
+ # moduleload accesslog.la
29
+ # moduleload auditlog.la
30
+ # moduleload denyop.la
31
+ # moduleload dyngroup.la
32
+ # moduleload dynlist.la
33
+ # moduleload lastmod.la
34
+ # moduleload pcache.la
35
+ # moduleload ppolicy.la
36
+ # moduleload refint.la
37
+ # moduleload retcode.la
38
+ # moduleload rwm.la
39
+ # moduleload smbk5pwd.la
40
+ # moduleload syncprov.la
41
+ # moduleload translucent.la
42
+ # moduleload unique.la
43
+ # moduleload valsort.la
44
+
45
+ # modules available in openldap-servers-sql RPM package:
46
+ # moduleload back_sql.la
47
+
48
+ # The next three lines allow use of TLS for encrypting connections using a
49
+ # dummy test certificate which you can generate by changing to
50
+ # /etc/pki/tls/certs, running "make slapd.pem", and fixing permissions on
51
+ # slapd.pem so that the ldap user or group can read it. Your client software
52
+ # may balk at self-signed certificates, however.
53
+
54
+ # TLSCACertificateFile /etc/pki/tls/certs/ca-bundle.crt
55
+ # TLSCertificateFile /etc/pki/tls/certs/slapd.pem
56
+ # TLSCertificateKeyFile /etc/pki/tls/certs/slapd.pem
57
+
58
+ # TLSVerifyClient demand
59
+
60
+ # Sample security restrictions
61
+ # Require integrity protection (prevent hijacking)
62
+ # Require 112-bit (3DES or better) encryption for updates
63
+ # Require 63-bit encryption for simple bind
64
+ # security ssf=1 update_ssf=112 simple_bind=64
65
+
66
+ # Sample access control policy:
67
+ # Root DSE: allow anyone to read it
68
+ # Subschema (sub)entry DSE: allow anyone to read it
69
+ # Other DSEs:
70
+ # Allow self write access
71
+ # Allow authenticated users read access
72
+ # Allow anonymous users to authenticate
73
+ # Directives needed to implement policy:
74
+
75
+ # access to dn.base="dc=esc" by * read
76
+ # access to dn.base="cn=Subschema" by * read
77
+ access to *
78
+ by self write
79
+ by * read
80
+ by anonymous auth
81
+
82
+ #
83
+ # if no access controls are present, the default policy
84
+ # allows anyone and everyone to read anything but restricts
85
+ # updates to rootdn. (e.g., "access to * by * read")
86
+ #
87
+ # rootdn can always read and write EVERYTHING!
88
+
89
+ #######################################################################
90
+ # ldbm and/or bdb database definitions
91
+ #######################################################################
92
+
93
+ database bdb
94
+
95
+ suffix "dc=test,dc=com"
96
+ directory openldap-data
97
+ rootdn "cn=admin,dc=test,dc=com"
98
+ ## rootpw = secret
99
+ rootpw {SSHA}fFjKcZb4cfOAcwSjJer8nCGOEVRUnwCC
100
+
101
+ # Indices to maintain for this database
102
+ index objectClass eq,pres
103
+ index ou,cn,mail,surname,givenname eq,pres,sub
104
+ index uidNumber,gidNumber,loginShell eq,pres
105
+ index uid,memberUid eq,pres,sub
106
+ index nisMapName,nisMapEntry eq,pres,sub
@@ -0,0 +1,22 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gem 'rails', '3.0.0.rc'
4
+ gem 'sqlite3-ruby', :require => 'sqlite3'
5
+
6
+ gem "devise", "1.1.rc2"
7
+ gem "devise_ldap_authenticatable", :path => "../../"
8
+
9
+ group :test do
10
+ gem "ruby-debug"
11
+ gem "mocha"
12
+ gem "shoulda"
13
+ gem 'factory_girl_rails'
14
+ gem "cucumber-rails"
15
+ gem "database_cleaner"
16
+ gem "capybara"
17
+ gem "launchy"
18
+ gem "autotest-rails"
19
+ gem "ZenTest"
20
+ gem "redgreen"
21
+ gem "autotest-growl"
22
+ end
@@ -0,0 +1,7 @@
1
+ # Add your own tasks in files placed in lib/tasks ending in .rake,
2
+ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3
+
4
+ require File.expand_path('../config/application', __FILE__)
5
+ require 'rake'
6
+
7
+ RailsApp::Application.load_tasks
@@ -0,0 +1,4 @@
1
+ class ApplicationController < ActionController::Base
2
+ protect_from_forgery
3
+ layout 'application'
4
+ end
@@ -0,0 +1,15 @@
1
+ class PostsController < ApplicationController
2
+
3
+ before_filter :authenticate_user!, :except => [:index]
4
+
5
+ def index
6
+ # render :inline => "posts#index", :layout => "application"
7
+ render :text => "posts#index"
8
+ end
9
+
10
+ def new
11
+ # render :inline => "posts#new", :layout => "application"
12
+ render :text => "posts#new"
13
+ end
14
+
15
+ end
@@ -0,0 +1,2 @@
1
+ module ApplicationHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ module PostsHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ class Post < ActiveRecord::Base
2
+ end
@@ -0,0 +1,10 @@
1
+ class User < ActiveRecord::Base
2
+
3
+ # Include default devise modules. Others available are:
4
+ # :token_authenticatable, :confirmable, :lockable and :timeoutable
5
+ devise :ldap_authenticatable, :registerable,
6
+ :recoverable, :rememberable, :trackable# , :validatable
7
+
8
+ # Setup accessible (or protected) attributes for your model
9
+ attr_accessible :email, :password, :password_confirmation
10
+ end
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>RailsApp</title>
5
+ <%= stylesheet_link_tag :all %>
6
+ <%= javascript_include_tag :defaults %>
7
+ <%= csrf_meta_tag %>
8
+ </head>
9
+ <body>
10
+
11
+ <% if user_signed_in? %>
12
+ <%= link_to "sign out", destroy_user_session_path %>
13
+ <% else %>
14
+ <%= link_to "sign in", new_user_session_path %>
15
+ <% end %>
16
+
17
+ <p />
18
+
19
+ <% flash.each do |name, message| %>
20
+ <p id="<%= name %>" class="flash"><%= message %></p>
21
+ <% end %>
22
+
23
+ <%= yield %>
24
+
25
+ </body>
26
+ </html>
@@ -0,0 +1,2 @@
1
+ <h1>Posts#index</h1>
2
+ <p>Find me in app/views/posts/index.html.erb</p>
@@ -0,0 +1,4 @@
1
+ # This file is used by Rack-based servers to start the application.
2
+
3
+ require ::File.expand_path('../config/environment', __FILE__)
4
+ run RailsApp::Application
@@ -0,0 +1,46 @@
1
+ require File.expand_path('../boot', __FILE__)
2
+
3
+ require 'rails/all'
4
+
5
+ # If you have a Gemfile, require the gems listed there, including any gems
6
+ # you've limited to :test, :development, or :production.
7
+ Bundler.require(:default, Rails.env) if defined?(Bundler)
8
+
9
+ module RailsApp
10
+ class Application < Rails::Application
11
+ # Settings in config/environments/* take precedence over those specified here.
12
+ # Application configuration should go into files in config/initializers
13
+ # -- all .rb files in that directory are automatically loaded.
14
+
15
+ # Add additional load paths for your own custom dirs
16
+ # config.load_paths += %W( #{config.root}/extras )
17
+
18
+ # Only load the plugins named here, in the order given (default is alphabetical).
19
+ # :all can be used as a placeholder for all plugins not explicitly named
20
+ # config.plugins = [ :exception_notification, :ssl_requirement, :all ]
21
+
22
+ # Activate observers that should always be running
23
+ # config.active_record.observers = :cacher, :garbage_collector, :forum_observer
24
+
25
+ # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
26
+ # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
27
+ # config.time_zone = 'Central Time (US & Canada)'
28
+
29
+ # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
30
+ # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
31
+ # config.i18n.default_locale = :de
32
+
33
+ # Configure generators values. Many other options are available, be sure to check the documentation.
34
+ # config.generators do |g|
35
+ # g.orm :active_record
36
+ # g.template_engine :erb
37
+ # g.test_framework :test_unit, :fixture => true
38
+ # end
39
+
40
+ # Configure the default encoding used in templates for Ruby 1.9.
41
+ config.encoding = "utf-8"
42
+
43
+ # Configure sensitive parameters which will be filtered from the log file.
44
+ config.filter_parameters += [:password]
45
+ end
46
+ end
@@ -0,0 +1,13 @@
1
+ require 'rubygems'
2
+
3
+ # Set up gems listed in the Gemfile.
4
+ gemfile = File.expand_path('../../Gemfile', __FILE__)
5
+ begin
6
+ ENV['BUNDLE_GEMFILE'] = gemfile
7
+ require 'bundler'
8
+ Bundler.setup
9
+ rescue Bundler::GemNotFound => e
10
+ STDERR.puts e.message
11
+ STDERR.puts "Try running `bundle install`."
12
+ exit!
13
+ end if File.exist?(gemfile)
@@ -0,0 +1,8 @@
1
+ <%
2
+ rerun = File.file?('rerun.txt') ? IO.read('rerun.txt') : ""
3
+ rerun_opts = rerun.to_s.strip.empty? ? "--format #{ENV['CUCUMBER_FORMAT'] || 'progress'} features" : "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} #{rerun}"
4
+ std_opts = "--format #{ENV['CUCUMBER_FORMAT'] || 'progress'} --strict --tags ~@wip"
5
+ %>
6
+ default: <%= std_opts %> features
7
+ wip: --tags @wip:3 --wip features
8
+ rerun: <%= rerun_opts %> --format rerun --out rerun.txt --strict --tags ~@wip
@@ -0,0 +1,25 @@
1
+ # SQLite version 3.x
2
+ # gem install sqlite3-ruby (not necessary on OS X Leopard)
3
+ development:
4
+ adapter: sqlite3
5
+ database: db/development.sqlite3
6
+ pool: 5
7
+ timeout: 5000
8
+
9
+ # Warning: The database defined as "test" will be erased and
10
+ # re-generated from your development database when you run "rake".
11
+ # Do not set this db to the same as development or production.
12
+ test: &test
13
+ adapter: sqlite3
14
+ database: db/test.sqlite3
15
+ pool: 5
16
+ timeout: 5000
17
+
18
+ production:
19
+ adapter: sqlite3
20
+ database: db/production.sqlite3
21
+ pool: 5
22
+ timeout: 5000
23
+
24
+ cucumber:
25
+ <<: *test
@@ -0,0 +1,5 @@
1
+ # Load the rails application
2
+ require File.expand_path('../application', __FILE__)
3
+
4
+ # Initialize the rails application
5
+ RailsApp::Application.initialize!
@@ -0,0 +1,22 @@
1
+ RailsApp::Application.configure do
2
+ # Settings specified here will take precedence over those in config/environment.rb
3
+
4
+ # In the development environment your application's code is reloaded on
5
+ # every request. This slows down response time but is perfect for development
6
+ # since you don't have to restart the webserver when you make code changes.
7
+ config.cache_classes = false
8
+
9
+ # Log error messages when you accidentally call methods on nil.
10
+ config.whiny_nils = true
11
+
12
+ # Show full error reports and disable caching
13
+ config.consider_all_requests_local = true
14
+ config.action_view.debug_rjs = true
15
+ config.action_controller.perform_caching = false
16
+
17
+ # Don't care if the mailer can't send
18
+ config.action_mailer.raise_delivery_errors = false
19
+ config.active_support.deprecation = :log
20
+
21
+ config.action_mailer.default_url_options = { :host => 'localhost:3000' }
22
+ end