aptible-rails 0.3.3 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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: []