oa-cadun 3.1.0 → 3.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -1,3 +1,2 @@
1
1
  source "http://rubygems.org"
2
-
3
2
  gemspec
data/README.md CHANGED
@@ -9,10 +9,22 @@ The goal of this gem is to create a bridge between Cadun and your app through Om
9
9
  Add into your Gemfile
10
10
 
11
11
  gem "oa-cadun"
12
+
13
+ ## Configuration
12
14
 
13
- Then configure the middleware with the CadUn's service id
15
+ The middleware has 2 important options: `:service_id` and `:config_file`.
16
+ :service_id is the number of your service on CadUn.
17
+ :config_file is the YAML formatted file with the urls you want to use:
18
+
19
+ cadun:
20
+ logout_url: https://login.dev.globoi.com/Servlet/do/logout
21
+ login_url: https://login.dev.globoi.com/login
22
+ auth_url: isp-authenticator.dev.globoi.com
23
+ auth_port: 8280
24
+
25
+ The `config_file` must be in that format, otherwise it won't work. The final result will look like this:
14
26
 
15
- config.middleware.use OmniAuth::Strategies::Cadun, :service_id => 1234
27
+ config.middleware.use OmniAuth::Strategies::Cadun, :service_id => 1234, :config_file => "#{File.dirname(__FILE__)}/cadun.yml"
16
28
 
17
29
  After that, you just need to follow the OmniAuth standard configuration creating a callback controller to handle the CadUn's redirect. Something like this:
18
30
 
@@ -22,11 +34,12 @@ After that, you just need to follow the OmniAuth standard configuration creating
22
34
  end
23
35
 
24
36
  def create
25
- auth = request.env['omniauth.auth']
26
-
27
- if auth and auth['id']
28
- user = User.find_by_id(auth['id'])
29
- user = User.create_from_omniauth(auth) unless user
37
+ if auth = request.env['omniauth.auth']
38
+ user = begin
39
+ User.find(auth['uid'])
40
+ rescue ActiveRecord::RecordNotFound
41
+ User.create_from_omniauth(auth)
42
+ end
30
43
 
31
44
  session[:user_id] = user.id
32
45
  redirect_to root_url
@@ -51,21 +64,23 @@ And set your routes:
51
64
  match "/auth/cadun/logout" => "sessions#destroy"
52
65
 
53
66
 
54
- ## Dynamic Service Ids
67
+ ## Tips: Dynamic Service Ids
55
68
 
56
69
  Let's say your application works with many service ids. You can work with a "SETUP" step.
57
70
 
58
71
  Add to the configuration:
59
72
 
60
- config.middleware.use OmniAuth::Strategies::Cadun, :service_id => 1234, :setup => true
73
+ config.middleware.use OmniAuth::Strategies::Cadun, :service_id => 1234, :setup => true, :config => "cadun.yml"
61
74
 
62
75
  Then add to your callback controller:
63
76
 
64
- def setup
65
- request.env['omniauth.strategy'].options[:service_id] = object.service_id
66
- render :nothing => true, :status => 404
77
+ class SessionsController < ActionController::Base
78
+ def setup
79
+ request.env['omniauth.strategy'].options[:service_id] = object.service_id
80
+ render :nothing => true, :status => 404
81
+ end
67
82
  end
68
83
 
69
84
  It's really important to finish the action with a 404 status. It says to OmniAuth that it can go ahead and complete the flow.
70
85
 
71
- The setup step can change the options of the Strategy, so you can change the service id and the redirect will go to any service you set.
86
+ The setup step can change the options of the Strategy, so you can change the service id and the redirect will go to any service you set up.
@@ -2,7 +2,7 @@ module OACadun
2
2
  module VERSION
3
3
  MAJOR = 3
4
4
  MINOR = 1
5
- TINY = 0
5
+ TINY = 1
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY] * '.'
8
8
  end
@@ -25,13 +25,13 @@ module OmniAuth
25
25
  :user_info => {
26
26
  :id => user.id,
27
27
  :GLBID => request.params['GLBID'],
28
- :url => request.params['url'],
28
+ :url => request.params['url'],
29
29
  :email => user.email,
30
30
  :status => user.status,
31
31
  :nickname => user.login,
32
32
  :name => user.name,
33
33
  :address => user.address,
34
- :suburb => user.suburb,
34
+ :neighborhood => user.neighborhood,
35
35
  :city => user.city,
36
36
  :state => user.state,
37
37
  :country => user.country,
data/oa-cadun.gemspec CHANGED
@@ -1,24 +1,22 @@
1
1
  # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
3
- require "oa-cadun/version"
2
+ require "#{File.dirname(__FILE__)}/lib/oa-cadun/version"
4
3
 
5
4
  Gem::Specification.new do |s|
6
- s.name = "oa-cadun"
5
+ s.name = 'oa-cadun'
7
6
  s.version = OACadun::VERSION::STRING
8
7
  s.platform = Gem::Platform::RUBY
9
- s.authors = ["Bruno Azisaka Maciel"]
10
- s.email = ["bruno@azisaka.com.br"]
11
- s.homepage = ""
12
- s.summary = %q{OmniAuth strategy for CadUn}
13
- s.description = %q{The goal of this gem is to allow the developer to use CadUn (a login webservice made by Globo.com) in any web app using OmniAuth}
8
+ s.authors = %w(Bruno Azisaka Maciel)
9
+ s.email = %w(bruno@azisaka.com.br)
10
+ s.homepage = 'https://github.com/azisaka/oa-cadun'
11
+ s.summary = 'OmniAuth strategy for CadUn'
12
+ s.description = 'The goal of this gem is to allow the developer to use CadUn (a login webservice made by Globo.com) in any web app using OmniAuth'
14
13
 
15
14
  s.files = `git ls-files`.split("\n")
16
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
- s.require_paths = ["lib"]
15
+ s.test_files = `git ls-files -- {spec}/*`.split("\n")
16
+ s.require_paths = %w(lib)
19
17
 
20
18
  s.add_dependency 'oa-core'
21
- s.add_dependency 'cadun', '0.2.0'
19
+ s.add_dependency 'cadun', '0.2.1'
22
20
  s.add_development_dependency 'rack'
23
21
  s.add_development_dependency 'rspec'
24
22
  s.add_development_dependency 'rr'
@@ -4,12 +4,12 @@ require 'spec_helper'
4
4
  describe OmniAuth::Strategies::Cadun do
5
5
 
6
6
  let(:app) { lambda { |env| [200, {}, ['Hello']] } }
7
- let(:strategy) { OmniAuth::Strategies::Cadun.new(app, :service_id => 1, :config => File.join(File.dirname(__FILE__), "..", "..", "support", "fixtures", "config.yml")) }
7
+ let(:strategy) { OmniAuth::Strategies::Cadun.new app, :service_id => 1, :config => "#{File.dirname(__FILE__)}/../../support/fixtures/config.yml" }
8
8
 
9
9
  describe "#request_phase" do
10
10
  context "when it has a referer" do
11
11
  before do
12
- strategy.call!(Rack::MockRequest.env_for("http://test.localhost/auth/cadun", "rack.session" => {}, "HTTP_HOST" => "test.localhost"))
12
+ strategy.call! Rack::MockRequest.env_for("http://test.localhost/auth/cadun", "rack.session" => {}, "HTTP_HOST" => "test.localhost")
13
13
 
14
14
  @status, @headers, @body = strategy.request_phase
15
15
  end
@@ -47,29 +47,38 @@ describe OmniAuth::Strategies::Cadun do
47
47
  describe "#auth_hash" do
48
48
  before do
49
49
  stub_requests
50
- strategy.call!(Rack::MockRequest.env_for("http://localhost?GLBID=GLBID&url=/go_back", "rack.session" => {}))
50
+ strategy.call! Rack::MockRequest.env_for("http://localhost?GLBID=GLBID&url=/go_back", "rack.session" => {})
51
51
  end
52
52
 
53
- subject { strategy.auth_hash[:user_info] }
53
+ subject { strategy.auth_hash }
54
54
 
55
- specify { should include(:GLBID => "GLBID") }
56
- specify { should include(:id => "21737810") }
57
- specify { should include(:email => "fab1@spam.la") }
58
- specify { should include(:status => "ATIVO") }
59
- specify { should include(:nickname => "fabricio_fab1") }
60
- specify { should include(:name => "Fabricio Rodrigo Lopes") }
61
- specify { should include(:address => "Rua Uruguai, 59") }
62
- specify { should include(:suburb => "Andaraí") }
63
- specify { should include(:city => "Rio de Janeiro") }
64
- specify { should include(:state => "RJ") }
65
- specify { should include(:country => "Brasil") }
66
- specify { should include(:gender => "MASCULINO") }
67
- specify { should include(:birthday => "22/02/1983") }
68
- specify { should include(:mobile => "21 99999999") }
69
- specify { should include(:phone => "21 22881060") }
70
- specify { should include(:cpf => "09532034765") }
71
- specify { should include(:url => "/go_back") }
72
-
55
+ describe ":uid" do
56
+ specify { subject[:uid].should == "21737810" }
57
+ end
58
+
59
+ describe ":provider" do
60
+ specify { subject[:provider].should == "cadun" }
61
+ end
62
+
63
+ describe ":user_info" do
64
+ specify { subject[:user_info].should include(:GLBID => "GLBID") }
65
+ specify { subject[:user_info].should include(:id => "21737810") }
66
+ specify { subject[:user_info].should include(:email => "fab1@spam.la") }
67
+ specify { subject[:user_info].should include(:status => "ATIVO") }
68
+ specify { subject[:user_info].should include(:nickname => "fabricio_fab1") }
69
+ specify { subject[:user_info].should include(:name => "Fabricio Rodrigo Lopes") }
70
+ specify { subject[:user_info].should include(:address => "Rua Uruguai, 59") }
71
+ specify { subject[:user_info].should include(:neighborhood => "Andaraí") }
72
+ specify { subject[:user_info].should include(:city => "Rio de Janeiro") }
73
+ specify { subject[:user_info].should include(:state => "RJ") }
74
+ specify { subject[:user_info].should include(:country => "Brasil") }
75
+ specify { subject[:user_info].should include(:gender => "MASCULINO") }
76
+ specify { subject[:user_info].should include(:birthday => "22/02/1983") }
77
+ specify { subject[:user_info].should include(:mobile => "21 99999999") }
78
+ specify { subject[:user_info].should include(:phone => "21 22881060") }
79
+ specify { subject[:user_info].should include(:cpf => "09532034765") }
80
+ specify { subject[:user_info].should include(:url => "/go_back") }
81
+ end
73
82
  end
74
83
 
75
84
  end
metadata CHANGED
@@ -2,10 +2,12 @@
2
2
  name: oa-cadun
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 3.1.0
5
+ version: 3.1.1
6
6
  platform: ruby
7
7
  authors:
8
- - Bruno Azisaka Maciel
8
+ - Bruno
9
+ - Azisaka
10
+ - Maciel
9
11
  autorequire:
10
12
  bindir: bin
11
13
  cert_chain: []
@@ -32,7 +34,7 @@ dependencies:
32
34
  requirements:
33
35
  - - "="
34
36
  - !ruby/object:Gem::Version
35
- version: 0.2.0
37
+ version: 0.2.1
36
38
  type: :runtime
37
39
  version_requirements: *id002
38
40
  - !ruby/object:Gem::Dependency
@@ -106,7 +108,7 @@ files:
106
108
  - spec/support/fixtures/config.yml
107
109
  - spec/support/fixtures/pessoa.xml
108
110
  has_rdoc: true
109
- homepage: ""
111
+ homepage: https://github.com/azisaka/oa-cadun
110
112
  licenses: []
111
113
 
112
114
  post_install_message:
@@ -133,9 +135,5 @@ rubygems_version: 1.6.2
133
135
  signing_key:
134
136
  specification_version: 3
135
137
  summary: OmniAuth strategy for CadUn
136
- test_files:
137
- - spec/omni_auth/strategies/cadun_spec.rb
138
- - spec/spec_helper.rb
139
- - spec/support/fixtures/autorizacao.xml
140
- - spec/support/fixtures/config.yml
141
- - spec/support/fixtures/pessoa.xml
138
+ test_files: []
139
+