ipizza-omniauth-provider 0.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.
@@ -0,0 +1,29 @@
1
+ iPizza auth strategy for OmniAuth
2
+ =================================
3
+
4
+ iPizza authentication strategy provider for [Omniauth](https://github.com/intridea/omniauth). Uses [ipizza gem](https://github.com/priithaamer/ipizza) as dependency.
5
+
6
+ Installation
7
+ ------------
8
+
9
+ Add gem dependency in your `Gemfile` and install the gem:
10
+
11
+ gem 'ipizza-omniauth-provider'
12
+
13
+ Usage
14
+ -----
15
+
16
+ Make sure you have iPizza configured properly in `config/ipizza.yml` file. See the instructions from [ipizza gem page](https://github.com/priithaamer/ipizza).
17
+
18
+ For Rails 3, in devise configuration file, e.g `config/initializers/load_devise.rb`, declare ipizza authentication strategy:
19
+
20
+ Devise.setup do |config|
21
+
22
+ # <your existing devise config>
23
+
24
+ config.omniauth :ipizza,
25
+ 'Authenticate with iPizza',
26
+ :logger => Logger.new('log/ipizza_auth.log'),
27
+ :config => Rails.root.join('config/ipizza.yml')
28
+ end
29
+
@@ -0,0 +1,20 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |gemspec|
7
+ gemspec.name = 'ipizza-omniauth-provider'
8
+
9
+ gemspec.summary = 'iPizza authentication strategy provider for Omniauth'
10
+ gemspec.description = <<-DESC
11
+ Integrates iPizza authentication to your rails app almost effortlessly.
12
+ DESC
13
+
14
+ gemspec.email = 'priit@fraktal.ee'
15
+ gemspec.homepage = 'http://github.com/priithaamer/ipizza-omniauth-provider'
16
+ gemspec.authors = ['Priit Haamer']
17
+ end
18
+ rescue LoadError
19
+ puts 'Jeweler not available. Install it with: gem install jeweler'
20
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.0
data/init.rb ADDED
@@ -0,0 +1 @@
1
+ require 'ipizza_omniauth_provider'
@@ -0,0 +1,8 @@
1
+ require 'omniauth/oauth'
2
+ require 'omniauth/core'
3
+
4
+ module OmniAuth
5
+ module Strategies
6
+ autoload :Ipizza, 'omniauth/strategies/ipizza'
7
+ end
8
+ end
@@ -0,0 +1,92 @@
1
+ require 'ipizza'
2
+ require 'omniauth/oauth'
3
+ require 'rack/utils'
4
+
5
+ module OmniAuth
6
+ module Strategies
7
+ class Ipizza
8
+ include OmniAuth::Strategy
9
+
10
+ attr_accessor :logger
11
+
12
+ def initialize(app, title, options = {})
13
+ super(app, :ipizza)
14
+
15
+ @title = title
16
+ self.logger = options.delete(:logger)
17
+
18
+ ::Ipizza::Config.load_from_file(options.delete(:config))
19
+ end
20
+
21
+ def request_phase
22
+ if env['REQUEST_METHOD'] == 'GET'
23
+ get_credentials
24
+ else
25
+ provider = ipizza_provider_for(request.params['bank'])
26
+
27
+ req = provider.authentication_request
28
+ url = [req.service_url, Rack::Utils.build_query(req.request_params)] * '?'
29
+
30
+ redirect url
31
+ end
32
+ end
33
+
34
+ def get_credentials
35
+ OmniAuth::Form.build(@title) do
36
+ text_field 'Bank', 'bank'
37
+ end.to_response
38
+ end
39
+
40
+ def callback_phase
41
+ debug "Callback in iPizza authentication. Parameters: #{request.params.inspect}"
42
+
43
+ @env['REQUEST_METHOD'] = 'GET'
44
+
45
+ provider = ipizza_provider_for(request.params['VK_SND_ID'])
46
+ resp = provider.authentication_response(request.params)
47
+
48
+ if resp.success? and resp.valid?
49
+ @user_data = {'personal_code' => resp.info_social_security_id, 'name' => resp.info_name}
50
+ @env['omniauth.auth'] = auth_hash
51
+
52
+ debug "iPizza request was authenticated successfully. User data: #{auth_hash.inspect}"
53
+
54
+ call_app!
55
+ else
56
+ debug 'Could not authenticate iPizza request'
57
+ fail!(:invalid_credentials, {'error' => 'Invalid bank response'})
58
+ end
59
+ end
60
+
61
+ def user_info
62
+ @user_data
63
+ end
64
+
65
+ def auth_hash
66
+ OmniAuth::Utils.deep_merge(super, {'uid' => @user_data['personal_code'], 'user_info' => user_info})
67
+ end
68
+
69
+ def debug(message)
70
+ logger.debug("#{Time.now} #{message}") if logger
71
+ end
72
+
73
+ private
74
+
75
+ def ipizza_provider_for(bank)
76
+ case bank.downcase
77
+ when 'swedbank'
78
+ ::Ipizza::Provider::Swedbank.new
79
+ when 'eyp'
80
+ ::Ipizza::Provider::Seb.new
81
+ when 'seb'
82
+ ::Ipizza::Provider::Seb.new
83
+ when 'sampo'
84
+ ::Ipizza::Provider::Sampo.new
85
+ when 'nordea'
86
+ ::Ipizza::Provider::Nordea.new
87
+ end
88
+ end
89
+
90
+ end
91
+ end
92
+ end
metadata ADDED
@@ -0,0 +1,72 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ipizza-omniauth-provider
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ version: 0.1.0
11
+ platform: ruby
12
+ authors:
13
+ - Priit Haamer
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-12-04 00:00:00 +02:00
19
+ default_executable:
20
+ dependencies: []
21
+
22
+ description: " Integrates iPizza authentication to your rails app almost effortlessly.\n"
23
+ email: priit@fraktal.ee
24
+ executables: []
25
+
26
+ extensions: []
27
+
28
+ extra_rdoc_files:
29
+ - README.markdown
30
+ files:
31
+ - README.markdown
32
+ - Rakefile
33
+ - VERSION
34
+ - init.rb
35
+ - lib/ipizza_omniauth_provider.rb
36
+ - lib/omniauth/strategies/ipizza.rb
37
+ has_rdoc: true
38
+ homepage: http://github.com/priithaamer/ipizza-omniauth-provider
39
+ licenses: []
40
+
41
+ post_install_message:
42
+ rdoc_options:
43
+ - --charset=UTF-8
44
+ require_paths:
45
+ - lib
46
+ required_ruby_version: !ruby/object:Gem::Requirement
47
+ none: false
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ hash: 3
52
+ segments:
53
+ - 0
54
+ version: "0"
55
+ required_rubygems_version: !ruby/object:Gem::Requirement
56
+ none: false
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ hash: 3
61
+ segments:
62
+ - 0
63
+ version: "0"
64
+ requirements: []
65
+
66
+ rubyforge_project:
67
+ rubygems_version: 1.3.7
68
+ signing_key:
69
+ specification_version: 3
70
+ summary: iPizza authentication strategy provider for Omniauth
71
+ test_files: []
72
+