aptible-rails 0.3.3 → 0.4.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f1ce86f107ca7e84482a8448f394e8b135c8c35e
4
- data.tar.gz: 3fd7be09ad266238abaab36355f53bfcc222a912
3
+ metadata.gz: c901ab9e1415711648f097b854423a3949efb7a4
4
+ data.tar.gz: 329150e1e681f530ab6222290382f8fbd85b54fa
5
5
  SHA512:
6
- metadata.gz: 75de1a55ddec9d4e12f3c37805965314d9ba41e069c1755474b5dbe0575bbd007281b42d4640103fcaa6fdb611c094cb1d9e1bf9c183906086a6be9f2e6f1668
7
- data.tar.gz: 61a2cfe8049a4a6cd0b58420901bcb4bd165e22f316a403942bb4548f9127340a5b19b9093d69f7a6a865dba5f3d5f755211e4b8704c40c5dd5b3a9a615125c2
6
+ metadata.gz: cca7efae246d50448f00daefbaa8c3ca882564cdf4d5526715584234948e723beac9c0be7db52e651ef8910ed10b11bbb2f45bea8df62547776dec3c15a3519d
7
+ data.tar.gz: 1ae028627e055174b384b27dc2c9cc1920b6184c5fe7c123a32b213ef06638a2a31ab7345426b2a0cd1b156cc2449413c596409a689d93c33aaf5a814dff37e1
data/Gemfile CHANGED
@@ -1,4 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
+ gem 'pry', github: 'fancyremarker/pry', branch: 'aptible'
4
+
3
5
  # Specify your gem's dependencies in aptible-rails.gemspec
4
6
  gemspec
@@ -7,73 +7,36 @@ module Aptible
7
7
  extend ActiveSupport::Concern
8
8
 
9
9
  included do
10
- helper_method :auth, :api, :current_aptible_user,
11
- :current_organization, :subscribed?, :has_acccount?,
12
- :email_verified?, :subscribed_and_verified?, :user_url,
10
+ helper_method :current_user, :current_organization, :user_url,
13
11
  :organization_url
14
12
  end
15
13
 
16
- def auth
17
- @auth ||= Aptible::Auth::Agent.new(token: service_token).get
18
- end
19
-
20
- def api
21
- @api ||= Aptible::Api::Agent.new(token: service_token).get
22
- end
23
-
24
- def current_aptible_user
25
- @current_user ||= auth.find_by_url(aptible_subject)
26
- rescue
14
+ def current_user
15
+ return unless current_user_url
16
+ @current_user ||= Aptible::Auth::User.find_by_url(current_user_url,
17
+ token: session_token)
18
+ rescue => e
27
19
  clear_session_cookie
20
+ raise e
28
21
  end
29
22
 
30
23
  def current_organization
31
- session[:organization_url] ||= auth.organizations.first.href
24
+ session[:organization_url] ||= Aptible::Auth::Organization.all(
25
+ token: session_token
26
+ ).first.href
32
27
  url = [session[:organization_url], token: service_token]
33
28
  @current_organization ||= Aptible::Auth::Organization.find_by_url(*url)
34
29
  rescue
35
- false
36
- end
37
-
38
- # rubocop:disable PredicateName
39
- def has_account?
40
- current_organization && current_organization.accounts.any?
41
- end
42
- # rubocop:enable PredicateName
43
-
44
- def subscribed?
45
- @has_subscription ||= has_account? &&
46
- current_organization.accounts.any?(&:has_subscription?)
47
- end
48
-
49
- def email_verified?
50
- current_aptible_user && current_aptible_user.verified?
51
- end
52
-
53
- def subscribed_and_verified?
54
- has_account? && subscribed? && email_verified?
55
- end
56
-
57
- def service_token
58
- return unless aptible_token && aptible_token.session
59
- @service_token ||= service_token_for(aptible_token)
60
- end
61
-
62
- def aptible_login_url
63
- Aptible::Rails.configuration.login_url
30
+ nil
64
31
  end
65
32
 
66
- def aptible_subject
33
+ def current_user_url
67
34
  token_subject || session_subject
68
35
  end
69
36
 
70
- def aptible_token
71
- current_token || session_token
72
- end
73
-
74
37
  # before_action :authenticate_user
75
- def authenticate_aptible_user
76
- redirect_to aptible_login_url unless current_aptible_user
38
+ def authenticate_user
39
+ redirect_to Aptible::Rails.configuration.login_url unless current_user
77
40
  end
78
41
 
79
42
  # before_action :ensure_service_token
@@ -81,37 +44,56 @@ module Aptible
81
44
  redirect_to aptible_login_url unless service_token
82
45
  end
83
46
 
84
- def service_token_for(token)
85
- service_token = fetch_service_token(token)
47
+ # before_action :ensure_auth_key
48
+ def ensure_auth_key
49
+ return if Fridge.configuration.public_key
50
+ Fridge.configure do |config|
51
+ config.public_key = Aptible::Auth.public_key unless ::Rails.env.test?
52
+ end
53
+ end
54
+
55
+ def service_token
56
+ return unless session_token && session_token.session
57
+ return @service_token if @service_token
58
+
59
+ @service_token = cached_service_token(session_token)
86
60
  if Fridge::AccessToken.new(service_token).valid?
87
- service_token
61
+ @service_token
88
62
  else
89
- fetch_service_token(token, force: true)
63
+ @service_token = cached_service_token(session_token,
64
+ force: true) || session_token
90
65
  end
91
66
  end
92
67
 
93
- def fetch_service_token(token, options = {})
94
- fail 'Token must be a service token' unless token.session
95
- ::Rails.cache.fetch "service_token:#{token.session}", options do
96
- swap_session_token(token)
68
+ def cached_service_token(session_token, options = {})
69
+ fail 'Token must be a service token' unless session_token.session
70
+ cache_key = "service_token:#{session_token.session}"
71
+ ::Rails.cache.fetch(cache_key, options) do
72
+ swap_session_token(session_token)
97
73
  end
98
74
  end
99
75
 
100
- def swap_session_token(token)
76
+ # rubocop:disable MethodLength
77
+ def swap_session_token(session_token)
101
78
  Aptible::Auth::Token.create(
102
79
  client_id: Aptible::Rails.configuration.client_id,
103
80
  client_secret: Aptible::Rails.configuration.client_secret,
104
- subject: token.serialize
81
+ subject: session_token.serialize
105
82
  ).access_token
106
- rescue
107
- token.serialize
83
+ rescue OAuth2::Error => e
84
+ if e.code == 'unauthorized'
85
+ nil
86
+ else
87
+ raise 'Could not swap session token, check Client#privileged?'
88
+ end
108
89
  end
90
+ # rubocop:enable MethodLength
109
91
 
110
92
  def organization_url(id)
111
93
  "#{dashboard_url}/organizations/#{id}"
112
94
  end
113
95
 
114
- def user_url(id = current_aptible_user.id)
96
+ def user_url(id = current_user.id)
115
97
  "#{dashboard_url}/users/#{id}"
116
98
  end
117
99
  end
@@ -5,21 +5,6 @@ require 'aptible/rails/view_helper'
5
5
  module Aptible
6
6
  module Rails
7
7
  class Railtie < ::Rails::Railtie
8
- initializer 'fridge.configure' do
9
- require 'fridge'
10
- require 'aptible/auth'
11
-
12
- Fridge.configure do |config|
13
- begin
14
- unless ::Rails.env.test?
15
- config.public_key = Aptible::Auth.public_key
16
- end
17
- rescue
18
- raise 'Could not retrieve auth server public key'
19
- end
20
- end
21
- end
22
-
23
8
  initializer 'aptible.rails.controller' do
24
9
  ActionController::Base.send :include, Aptible::Rails::Controller
25
10
  end
@@ -1,5 +1,5 @@
1
1
  module Aptible
2
2
  module Rails
3
- VERSION = '0.3.3'
3
+ VERSION = '0.4.0'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,125 +1,125 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aptible-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Frank Macreery
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-10 00:00:00.000000000 Z
11
+ date: 2014-07-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gem_config
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: aptible-auth
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: 0.5.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.5.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: aptible-api
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: 0.5.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: 0.5.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: fridge
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: bundler
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ~>
74
74
  - !ruby/object:Gem::Version
75
75
  version: '1.3'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ~>
81
81
  - !ruby/object:Gem::Version
82
82
  version: '1.3'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: aptible-tasks
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - '>='
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - '>='
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rake
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - '>='
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ">="
108
+ - - '>='
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: rspec
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - "~>"
115
+ - - ~>
116
116
  - !ruby/object:Gem::Version
117
117
  version: '2.0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - "~>"
122
+ - - ~>
123
123
  - !ruby/object:Gem::Version
124
124
  version: '2.0'
125
125
  description: Rails helpers for Aptible service applications
@@ -129,9 +129,9 @@ executables: []
129
129
  extensions: []
130
130
  extra_rdoc_files: []
131
131
  files:
132
- - ".gitignore"
133
- - ".rspec"
134
- - ".travis.yml"
132
+ - .gitignore
133
+ - .rspec
134
+ - .travis.yml
135
135
  - Gemfile
136
136
  - LICENSE.md
137
137
  - README.md
@@ -154,12 +154,12 @@ require_paths:
154
154
  - lib
155
155
  required_ruby_version: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - ">="
157
+ - - '>='
158
158
  - !ruby/object:Gem::Version
159
159
  version: '0'
160
160
  required_rubygems_version: !ruby/object:Gem::Requirement
161
161
  requirements:
162
- - - ">="
162
+ - - '>='
163
163
  - !ruby/object:Gem::Version
164
164
  version: '0'
165
165
  requirements: []