toretore-simple_openid_authentication 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,11 @@
1
+ <h2><%= t('simple_openid_authentication.title') %></h2>
2
+
3
+ <% form_tag login_url(:authenticator => "openid") do -%>
4
+ <p class="input text">
5
+ <label for="openid_identifier"><%= User.human_attribute_name('openid_identifier') %></label>
6
+ <%= text_field_tag "openid_identifier" %>
7
+ </p>
8
+ <p class="submit button">
9
+ <%= submit_tag t('simple_openid_authentication.button') %>
10
+ </p>
11
+ <% end -%>
@@ -0,0 +1,10 @@
1
+ en:
2
+ simple_authentication:
3
+ authenticators:
4
+ openid:
5
+ name: OpenID
6
+ link: Log in using OpenID
7
+ simple_openid_authentication:
8
+ title: Log in
9
+ button: Log in
10
+ could_not_save_user: "Login failed: Could not save user from requested data"
@@ -0,0 +1,5 @@
1
+ Description:
2
+ Add OpenID identifier field to users table
3
+
4
+ Example:
5
+ ./script/generate simple_openid_authentication --migration User
@@ -0,0 +1,38 @@
1
+ class SimpleOpenidAuthenticationGenerator < Rails::Generator::NamedBase
2
+ def manifest
3
+ record do |m|
4
+ m.migration_template "migration:migration.rb", "db/migrate", :assigns => openid_auth_assigns,
5
+ :migration_file_name => "add_openid_authentication_fields_to_#{custom_file_name}" if options[:migration]
6
+ end
7
+ end
8
+
9
+ private
10
+
11
+ def custom_file_name
12
+ custom_name = class_name.underscore.downcase
13
+ custom_name = custom_name.pluralize if ActiveRecord::Base.pluralize_table_names
14
+ custom_name
15
+ end
16
+
17
+ def openid_auth_assigns
18
+ returning({}) do |assigns|
19
+ assigns[:migration_action] = "add"
20
+ assigns[:class_name] = "add_openid_authentication_fields_to_#{custom_file_name}"
21
+ assigns[:table_name] = "users"
22
+ assigns[:attributes] = openid_auth_attributes
23
+ end
24
+ end
25
+
26
+ def openid_auth_attributes
27
+ returning attributes.dup do |attributes|
28
+ {"openid_identifier" => "string"}.each do |name, type|
29
+ attributes << Rails::Generator::GeneratedAttribute.new(name, type) unless attributes.any?{|a| a.name == name }
30
+ end
31
+ end
32
+ end
33
+
34
+ def add_options!(opt)
35
+ opt.on('--migration', 'Create migration'){|v| options[:migration] = true }
36
+ end
37
+
38
+ end
@@ -0,0 +1,6 @@
1
+ require "simple_authentication"
2
+ require "simple_openid_authentication/openid_authenticator"
3
+ require "simple_openid_authentication/controller_methods"
4
+
5
+ SimpleAuthentication::ControllerMethods::Logins.send(:include, SimpleOpenidAuthentication::ControllerMethods::Logins)
6
+ I18n.load_path.unshift(File.join(File.dirname(__FILE__), '..', 'config', 'locales', 'simple_openid_authentication.yml'))
@@ -0,0 +1,67 @@
1
+ module SimpleOpenidAuthentication
2
+
3
+
4
+ module ControllerMethods
5
+
6
+
7
+ module Logins
8
+
9
+
10
+ private
11
+
12
+ def openid_authentication
13
+ authenticate_with_open_id openid_authentication_url, openid_authentication_options do |result, identity_url, registration|
14
+ if result.successful?
15
+ authenticate_openid_user(identity_url, registration)
16
+ else
17
+ authentication_failed result.message
18
+ end
19
+ end
20
+ end
21
+
22
+ def authenticate_openid_user(identity_url, registration)
23
+ user = User.find_or_initialize_by_openid_identifier(identity_url)
24
+
25
+ #Add or update attributes provided by the OpenID server
26
+ model_to_registration_mapping.each do |attr,reg_key|
27
+ user.send("#{attr}=", registration[reg_key])
28
+ end
29
+
30
+ if user.save
31
+ self.current_user = user
32
+ authentication_successful
33
+ else
34
+ authentication_failed I18n.t('simple_openid_authentication.could_not_save_user')
35
+ end
36
+ end
37
+
38
+ def openid_authentication_url
39
+ params[:openid_identifier]
40
+ end
41
+
42
+ def openid_authentication_options(opts={})
43
+ {
44
+ :return_to => login_url(:authenticator => "openid") #open_id_authentication will fake a POST
45
+ }.merge(openid_registration_options).merge(opts)
46
+ end
47
+
48
+ #Which attributes to request from the provider using the Simple Registration Extension
49
+ #They can be :optional or :required
50
+ def openid_registration_options
51
+ {:optional => [:fullname, :email]}
52
+ end
53
+
54
+ #Which attributes on the user object receives which SReg attributes
55
+ def model_to_registration_mapping
56
+ #{:model => 'server'}
57
+ {:name => 'fullname', :email => 'email'}
58
+ end
59
+
60
+
61
+ end
62
+
63
+
64
+ end
65
+
66
+
67
+ end
@@ -0,0 +1,20 @@
1
+ module SimpleAuthentication
2
+
3
+ class OpenidAuthenticator < Authenticator
4
+
5
+
6
+ def authentication_possible?
7
+ params.include?(:openid_identifier) || params.include?(:open_id_complete)
8
+ end
9
+
10
+
11
+ def authenticate
12
+ controller.send :openid_authentication
13
+
14
+ :ok
15
+ end
16
+
17
+
18
+ end
19
+
20
+ end
data/rails/init.rb ADDED
@@ -0,0 +1 @@
1
+ require "simple_openid_authentication"
data/rails/install.rb ADDED
@@ -0,0 +1 @@
1
+ # Install hook code here
@@ -0,0 +1 @@
1
+ # Uninstall hook code here
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :simple_openid_authentication do
3
+ # # Task goes here
4
+ # end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: toretore-simple_openid_authentication
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tore Darell
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-03-09 00:00:00 -07:00
12
+ date: 2009-03-16 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -20,7 +20,7 @@ dependencies:
20
20
  requirements:
21
21
  - - "="
22
22
  - !ruby/object:Gem::Version
23
- version: 0.1.2
23
+ version: 0.1.3
24
24
  version:
25
25
  description: OpenID authentication for SimpleAuthentication
26
26
  email: toredarell@gmail.com
@@ -30,8 +30,24 @@ extensions: []
30
30
 
31
31
  extra_rdoc_files: []
32
32
 
33
- files: []
34
-
33
+ files:
34
+ - lib/simple_openid_authentication
35
+ - lib/simple_openid_authentication/openid_authenticator.rb
36
+ - lib/simple_openid_authentication/controller_methods.rb
37
+ - lib/simple_openid_authentication.rb
38
+ - rails/uninstall.rb
39
+ - rails/install.rb
40
+ - rails/init.rb
41
+ - config/locales
42
+ - config/locales/simple_openid_authentication.yml
43
+ - app/views
44
+ - app/views/logins
45
+ - app/views/logins/openid.html.erb
46
+ - generators/simple_openid_authentication
47
+ - generators/simple_openid_authentication/USAGE
48
+ - generators/simple_openid_authentication/templates
49
+ - generators/simple_openid_authentication/simple_openid_authentication_generator.rb
50
+ - tasks/simple_openid_authentication_tasks.rake
35
51
  has_rdoc: false
36
52
  homepage: http://github.com/toretore/simple_openid_authentication
37
53
  post_install_message: