clickfunnels_auth 0.1.1 → 0.1.3
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 +4 -4
- data/README.md +54 -12
- data/app/controllers/clickfunnels_auth/application_controller.rb +1 -59
- data/app/controllers/clickfunnels_auth/user_sessions_controller.rb +21 -3
- data/app/controllers/fake_auth/users_controller.rb +28 -0
- data/app/models/clickfunnels_auth/access_token.rb +50 -0
- data/app/views/fake_auth/users/index.html.erb +8 -0
- data/config/routes.rb +10 -0
- data/db/migrate/20180815183533_create_access_tokens.rb +13 -0
- data/lib/clickfunnels_auth.rb +2 -0
- data/lib/clickfunnels_auth/controller_helper.rb +109 -0
- data/lib/clickfunnels_auth/user_helper.rb +11 -0
- data/lib/clickfunnels_auth/version.rb +1 -1
- data/lib/omniauth/strategies/clickfunnels.rb +13 -3
- metadata +13 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 81a0905a61b72e0495c63c333198902966d4516d
|
4
|
+
data.tar.gz: 41058a5b3a2f4730154f8a248d395a0542b4bd1d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 708d811d908a4817e64c10678bc0b8286e2b098fb2a3438e279b5f3f6082167230bf94390c1e8dcbe012e2ffe97da0f021988b53ba15948ca592f3f99672761f
|
7
|
+
data.tar.gz: 40127c474e94845ec8e22ea041ba2c6f34c8efb55592d4944643c1f4fe03eb18a086ac2eebd7452a729afc2dc083e0ebea8c8c3d790729c3e960b4577dfcbeef
|
data/README.md
CHANGED
@@ -1,12 +1,11 @@
|
|
1
1
|
# ClickfunnelsAuth
|
2
2
|
|
3
3
|
A Rails engine that makes it easy to delegate authentication for a Rails site to
|
4
|
-
[Clickfunnels](https://github.com/clickfunnels
|
5
|
-
See the [
|
6
|
-
|
4
|
+
[Clickfunnels Login](https://github.com/etison/clickfunnels-login).
|
5
|
+
See the [test app](https://github.com/etison/clickfunnels-login-test)
|
6
|
+
for an example of using this gem.
|
7
7
|
|
8
|
-
This is based on the SoAuth projects. See [http://www.octolabs.com/so-auth](http://www.octolabs.com/so-auth)
|
9
|
-
for more details.
|
8
|
+
This is based on the SoAuth projects. See [http://www.octolabs.com/so-auth](http://www.octolabs.com/so-auth) for more details.
|
10
9
|
|
11
10
|
Usage
|
12
11
|
==============
|
@@ -75,21 +74,33 @@ Then be sure to run migrations.
|
|
75
74
|
rake db:migrate; rake db:test:prepare
|
76
75
|
```
|
77
76
|
|
78
|
-
##
|
77
|
+
## Modify your `User` model
|
79
78
|
|
80
|
-
|
81
|
-
`ClickfunnelsAuth::ApplicationController`. The first line should look like this.
|
79
|
+
Add this line:
|
82
80
|
|
83
|
-
```
|
84
|
-
|
81
|
+
```
|
82
|
+
include ClickfunnelsAuth::UserHelper
|
83
|
+
```
|
84
|
+
|
85
|
+
## Generate migrations from this addon
|
86
|
+
|
87
|
+
```
|
88
|
+
rails clickfunnels_auth_engine:install:migrations
|
89
|
+
```
|
90
|
+
|
91
|
+
Then run migrations.
|
92
|
+
|
93
|
+
```bash
|
94
|
+
rake db:migrate; rake db:test:prepare
|
85
95
|
```
|
86
96
|
|
87
97
|
## Protect some stuff in a controller
|
88
98
|
|
89
|
-
|
99
|
+
Include the helper and then use a `before_action` to protect some controller actions.
|
90
100
|
|
91
101
|
```ruby
|
92
|
-
|
102
|
+
include ClickfunnelsAuth::ControllerHelper
|
103
|
+
before_action :login_required
|
93
104
|
```
|
94
105
|
|
95
106
|
## OPTIONAL : Change the default port of your new project
|
@@ -127,3 +138,34 @@ unicorn -p 3001 -c ./config/unicorn.rb
|
|
127
138
|
or whatever.
|
128
139
|
|
129
140
|
This project rocks and uses MIT-LICENSE.
|
141
|
+
|
142
|
+
|
143
|
+
## Publishing
|
144
|
+
We publish this gem on rubygems as it does not have anything private in it.
|
145
|
+
|
146
|
+
In general the steps in this RubyGems guild are quite good. https://guides.rubygems.org/publishing/
|
147
|
+
|
148
|
+
They are summarized in the following.
|
149
|
+
|
150
|
+
### Credentials
|
151
|
+
You'll need a to get your email added as an owner to the `clickfunnels_auth` gem
|
152
|
+
on rubygems. Post a note to `product-ops` and somebody will be able to help.
|
153
|
+
|
154
|
+
### Building the gem
|
155
|
+
Increment the gem version at `lib/rucksack-api/version.rb`, and then run `rake build`, which will create the package under `pkg`
|
156
|
+
|
157
|
+
### Pushing the gem to rubygem
|
158
|
+
Run the following (with your new version) to push to github:
|
159
|
+
|
160
|
+
```
|
161
|
+
gem push pkg/clickfunnels_auth-0.1.2.gem
|
162
|
+
```
|
163
|
+
|
164
|
+
You should see something like:
|
165
|
+
```
|
166
|
+
Pushing gem to https://rubygems.org...
|
167
|
+
Successfully registered gem: clickfunnels_auth (0.1.2)
|
168
|
+
```
|
169
|
+
|
170
|
+
### Tag the new version
|
171
|
+
Tagging is very simple. Just run git tag -a 0.1.2 -m "Version 0.1.2" and then git push --tags to push them up to GitHub.
|
@@ -1,65 +1,7 @@
|
|
1
1
|
module ClickfunnelsAuth
|
2
2
|
class ApplicationController < ActionController::Base
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
#before_filter :check_cookie
|
7
|
-
#def check_cookie
|
8
|
-
#if !cookie_valid?
|
9
|
-
#session[:user_id] = nil
|
10
|
-
#end
|
11
|
-
#end
|
12
|
-
|
13
|
-
def cookie_valid?
|
14
|
-
cookies[:clickfunnels_auth].present? && session[:user_id].present? && cookies[:clickfunnels_auth].to_s == session[:user_id].to_s
|
15
|
-
end
|
16
|
-
|
17
|
-
def login_required
|
18
|
-
if !current_user
|
19
|
-
not_authorized
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def not_authorized
|
24
|
-
respond_to do |format|
|
25
|
-
format.html{ auth_redirect }
|
26
|
-
format.json{ head :unauthorized }
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
def auth_redirect
|
31
|
-
observable_redirect_to "/auth/clickfunnels?origin=#{request.protocol}#{request.host_with_port}#{request.fullpath}"
|
32
|
-
end
|
33
|
-
|
34
|
-
def current_user
|
35
|
-
return nil unless session[:user_id]
|
36
|
-
@current_user ||= User.find_by_id(session[:user_id])
|
37
|
-
end
|
38
|
-
|
39
|
-
def signed_in?
|
40
|
-
current_user.present?
|
41
|
-
end
|
42
|
-
|
43
|
-
helper_method :signed_in?
|
44
|
-
helper_method :current_user
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
private
|
50
|
-
|
51
|
-
# These two methods help with testing
|
52
|
-
def integration_test?
|
53
|
-
Rails.env.test? && defined?(Cucumber::Rails)
|
54
|
-
end
|
55
|
-
|
56
|
-
def observable_redirect_to(url)
|
57
|
-
if integration_test?
|
58
|
-
render :text => "If this wasn't an integration test, you'd be redirected to: #{url}"
|
59
|
-
else
|
60
|
-
redirect_to url
|
61
|
-
end
|
62
|
-
end
|
4
|
+
include ClickfunnelsAuth::ControllerHelper
|
63
5
|
|
64
6
|
end
|
65
7
|
end
|
@@ -1,9 +1,13 @@
|
|
1
1
|
class ClickfunnelsAuth::UserSessionsController < ClickfunnelsAuth::ApplicationController
|
2
|
-
|
2
|
+
before_action :login_required, :only => [ :destroy ]
|
3
3
|
|
4
4
|
# omniauth callback method
|
5
5
|
def create
|
6
|
-
omniauth = env['omniauth.auth']
|
6
|
+
omniauth = request.env['omniauth.auth']
|
7
|
+
puts "omniauth ============================================================="
|
8
|
+
pp omniauth
|
9
|
+
puts "======================================================================"
|
10
|
+
puts "expires_at = #{omniauth['credentials']['expires_at']}"
|
7
11
|
|
8
12
|
user = User.find_by_id(omniauth['uid'])
|
9
13
|
if not user
|
@@ -15,9 +19,23 @@ class ClickfunnelsAuth::UserSessionsController < ClickfunnelsAuth::ApplicationCo
|
|
15
19
|
user.email = omniauth['info']['name'] if user.respond_to?(:name)
|
16
20
|
user.save
|
17
21
|
|
22
|
+
user.access_tokens.destroy_all
|
23
|
+
|
24
|
+
user.access_tokens.create!({
|
25
|
+
token: omniauth['credentials']['token'],
|
26
|
+
refresh_token: omniauth['credentials']['refresh_token'],
|
27
|
+
expires_at: omniauth['credentials']['expires_at'] ? Time.at(omniauth['credentials']['expires_at']) : omniauth['credentials']['expires_at']
|
28
|
+
})
|
29
|
+
|
18
30
|
session[:user_id] = user.id
|
31
|
+
|
32
|
+
if block_given?
|
33
|
+
yield omniauth
|
34
|
+
end
|
35
|
+
|
19
36
|
flash[:notice] = "Successfully logged in"
|
20
|
-
redirect_to request.env['omniauth.origin'] || root_path
|
37
|
+
#redirect_to request.env['omniauth.origin'] || root_path
|
38
|
+
redirect_to session['origin'] || root_path
|
21
39
|
end
|
22
40
|
|
23
41
|
# Omniauth failure callback
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module FakeAuth
|
2
|
+
class UsersController < ApplicationController
|
3
|
+
def index
|
4
|
+
session[:user_id] = nil
|
5
|
+
@users = User.all.limit(20)
|
6
|
+
end
|
7
|
+
|
8
|
+
def become
|
9
|
+
@user = User.find params[:user_id]
|
10
|
+
|
11
|
+
@user.access_tokens.destroy_all
|
12
|
+
|
13
|
+
@user.access_tokens.create!({
|
14
|
+
token: 'a-fake-auth-token',
|
15
|
+
refresh_token: 'a-fake-auth-refresh-token',
|
16
|
+
expires_at: Time.now + 1.year
|
17
|
+
})
|
18
|
+
|
19
|
+
session[:user_id] = @user.id
|
20
|
+
|
21
|
+
redirect_to root_path
|
22
|
+
end
|
23
|
+
|
24
|
+
def unbecome
|
25
|
+
redirect_to '/fake_auth'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module ClickfunnelsAuth
|
2
|
+
class AccessToken < ActiveRecord::Base
|
3
|
+
self.table_name = "clickfunnels_auth_access_tokens"
|
4
|
+
|
5
|
+
belongs_to :user
|
6
|
+
|
7
|
+
def refresh!
|
8
|
+
new_token = oauth_token.refresh!
|
9
|
+
self.save_token_data(new_token)
|
10
|
+
end
|
11
|
+
|
12
|
+
def save_token_data(token)
|
13
|
+
self.update_attributes({
|
14
|
+
token: token.token,
|
15
|
+
refresh_token: token.refresh_token,
|
16
|
+
expires_at: Time.at(token.expires_at)
|
17
|
+
})
|
18
|
+
end
|
19
|
+
|
20
|
+
def validate_token!
|
21
|
+
user_data = oauth_token.get(ENV['AUTH_PROVIDER_ME_URL']).parsed
|
22
|
+
user_id = user_data['id']
|
23
|
+
puts "we got a user_id = #{user_id}"
|
24
|
+
rescue OAuth2::Error => e
|
25
|
+
puts "caught an error #{e}"
|
26
|
+
puts e.as_json
|
27
|
+
self.destroy
|
28
|
+
end
|
29
|
+
|
30
|
+
def expired?
|
31
|
+
oauth_token.expired?
|
32
|
+
end
|
33
|
+
|
34
|
+
protected
|
35
|
+
|
36
|
+
def oauth_token
|
37
|
+
OAuth2::AccessToken.from_hash(oauth_client, {
|
38
|
+
:token_type=>"bearer",
|
39
|
+
:access_token=>self.token,
|
40
|
+
:refresh_token=>self.refresh_token,
|
41
|
+
:expires_at=>self.expires_at
|
42
|
+
})
|
43
|
+
end
|
44
|
+
|
45
|
+
def oauth_client
|
46
|
+
# TODO : Is there some way we can retrieve this already configured, instead of creating a new one?
|
47
|
+
@oauth_client ||= OAuth2::Client.new(ENV['AUTH_PROVIDER_APPLICATION_ID'], ENV['AUTH_PROVIDER_SECRET'], {site: ENV['AUTH_PROVIDER_URL']})
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
data/config/routes.rb
CHANGED
@@ -1,8 +1,18 @@
|
|
1
1
|
Rails.application.routes.draw do
|
2
|
+
|
3
|
+
# This needs to come before the other logout link so that our fake_auth one
|
4
|
+
# will take precedence if that setting is activated.
|
5
|
+
if ENV['ENABLE_FAKE_AUTH'] == 'true'
|
6
|
+
get 'fake_auth' => 'fake_auth/users#index'
|
7
|
+
post 'fake_auth/:user_id/become' => 'fake_auth/users#become', :as => :fake_auth_become_user
|
8
|
+
post '/logout', :to => 'fake_auth/users#unbecome'
|
9
|
+
end
|
10
|
+
|
2
11
|
# omniauth
|
3
12
|
get '/auth/:provider/callback', :to => 'clickfunnels_auth/user_sessions#create'
|
4
13
|
get '/auth/failure', :to => 'clickfunnels_auth/user_sessions#failure'
|
5
14
|
|
6
15
|
# Custom logout
|
7
16
|
post '/logout', :to => 'clickfunnels_auth/user_sessions#destroy'
|
17
|
+
|
8
18
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class CreateAccessTokens < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :clickfunnels_auth_access_tokens do |t|
|
4
|
+
t.string :token
|
5
|
+
t.string :refresh_token
|
6
|
+
t.timestamp :expires_at
|
7
|
+
t.bigint :user_id
|
8
|
+
|
9
|
+
t.timestamps
|
10
|
+
end
|
11
|
+
add_index :access_tokens, :user_id
|
12
|
+
end
|
13
|
+
end
|
data/lib/clickfunnels_auth.rb
CHANGED
@@ -0,0 +1,109 @@
|
|
1
|
+
module ClickfunnelsAuth
|
2
|
+
module ControllerHelper
|
3
|
+
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
included do
|
7
|
+
protect_from_forgery
|
8
|
+
# TODO : We need to have the mothership set the clickfunnels_login_user cookie
|
9
|
+
#before_action :check_cookie
|
10
|
+
helper_method :signed_in?
|
11
|
+
helper_method :current_user
|
12
|
+
end
|
13
|
+
|
14
|
+
def check_cookie
|
15
|
+
if !cookie_valid?
|
16
|
+
session[:user_id] = nil
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def cookie_valid?
|
21
|
+
cookies[:clickfunnels_login_user].present? && session[:user_id].present? && cookies[:clickfunnels_login_user].to_s == session[:user_id].to_s
|
22
|
+
end
|
23
|
+
|
24
|
+
def login_required
|
25
|
+
if !current_user
|
26
|
+
not_authorized
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def not_authorized
|
31
|
+
respond_to do |format|
|
32
|
+
format.html{ auth_redirect }
|
33
|
+
format.json{ head :unauthorized }
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def is_token_older_than_current_login?(token)
|
38
|
+
return false
|
39
|
+
# TODO : We need to get the mothership setting this and the clickfunnels_login_user cookie
|
40
|
+
if !cookies[:clickfunnels_login_timestamp].present?
|
41
|
+
return true
|
42
|
+
end
|
43
|
+
return token.updated_at < Time.at(cookies[:clickfunnels_login_timestamp].to_i)
|
44
|
+
end
|
45
|
+
|
46
|
+
def auth_redirect
|
47
|
+
origin = "#{request.protocol}#{request.host_with_port}#{request.fullpath}"
|
48
|
+
# Currently Doorkeeper has a bug when the redirct contains query params, so for now
|
49
|
+
# we'll put the origin in the session instead of the redirect url.
|
50
|
+
#observable_redirect_to "/auth/clickfunnels?origin=#{CGI.escape(origin)}"
|
51
|
+
session['origin'] = origin
|
52
|
+
if ENV['ENABLE_FAKE_AUTH'] == 'true'
|
53
|
+
observable_redirect_to "/fake_auth"
|
54
|
+
else
|
55
|
+
observable_redirect_to "/auth/clickfunnels"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def current_user
|
60
|
+
return nil unless session[:user_id]
|
61
|
+
@current_user ||= User.find_by_id(session[:user_id])
|
62
|
+
token = @current_user.access_tokens.first
|
63
|
+
puts "token = #{token}"
|
64
|
+
puts "token.expired? = #{token.try :expired?}"
|
65
|
+
if token.blank?
|
66
|
+
puts "*******************************************************"
|
67
|
+
puts "we had a user, but they did not have a token!"
|
68
|
+
puts "*******************************************************"
|
69
|
+
session[:user_id] = nil
|
70
|
+
return nil
|
71
|
+
elsif token.expired? || is_token_older_than_current_login?(token)
|
72
|
+
begin
|
73
|
+
puts "*******************************************************"
|
74
|
+
puts "aobut to refresh the token!"
|
75
|
+
puts "token.expired? : #{token.expired?}"
|
76
|
+
puts "is_token_older_than_current_login?(token) : #{is_token_older_than_current_login?(token)}"
|
77
|
+
puts "*******************************************************"
|
78
|
+
token.refresh!
|
79
|
+
rescue OAuth2::Error => e
|
80
|
+
puts "caught error #{e}"
|
81
|
+
token.destroy!
|
82
|
+
session[:user_id] = nil
|
83
|
+
return nil
|
84
|
+
end
|
85
|
+
end
|
86
|
+
return @current_user
|
87
|
+
end
|
88
|
+
|
89
|
+
def signed_in?
|
90
|
+
current_user.present?
|
91
|
+
end
|
92
|
+
|
93
|
+
private
|
94
|
+
|
95
|
+
# These two methods help with testing
|
96
|
+
def integration_test?
|
97
|
+
Rails.env.test? && defined?(Cucumber::Rails)
|
98
|
+
end
|
99
|
+
|
100
|
+
def observable_redirect_to(url)
|
101
|
+
if integration_test?
|
102
|
+
render :text => "If this wasn't an integration test, you'd be redirected to: #{url}"
|
103
|
+
else
|
104
|
+
redirect_to url
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
end
|
109
|
+
end
|
@@ -4,7 +4,7 @@ module OmniAuth
|
|
4
4
|
class Clickfunnels < OmniAuth::Strategies::OAuth2
|
5
5
|
|
6
6
|
CUSTOM_PROVIDER_URL = ENV['AUTH_PROVIDER_URL'] || "http://custom-provider-goes-here"
|
7
|
-
CUSTOM_PROVIDER_ME_URL = ENV['AUTH_PROVIDER_ME_URL'] || "/
|
7
|
+
CUSTOM_PROVIDER_ME_URL = ENV['AUTH_PROVIDER_ME_URL'] || "/api/attributes/me.json"
|
8
8
|
|
9
9
|
option :client_options, {
|
10
10
|
:site => CUSTOM_PROVIDER_URL,
|
@@ -13,13 +13,16 @@ module OmniAuth
|
|
13
13
|
}
|
14
14
|
|
15
15
|
uid {
|
16
|
-
raw_info['id']
|
16
|
+
raw_info['id']
|
17
17
|
}
|
18
18
|
|
19
19
|
info do
|
20
20
|
{
|
21
21
|
:email => raw_info['email'],
|
22
|
-
:admin => raw_info['admin']
|
22
|
+
:admin => raw_info['admin'],
|
23
|
+
:member_level => raw_info['funnelflix_member_level'],
|
24
|
+
:internal_affiliate_id => raw_info['internal_affiliate_id'],
|
25
|
+
:accounts => raw_info['accounts']
|
23
26
|
}
|
24
27
|
end
|
25
28
|
|
@@ -35,6 +38,13 @@ module OmniAuth
|
|
35
38
|
def raw_info
|
36
39
|
@raw_info ||= access_token.get(CUSTOM_PROVIDER_ME_URL).parsed
|
37
40
|
end
|
41
|
+
|
42
|
+
# Omniauth-oauth2 > 1.3 breaks the callback url with extra parameter options
|
43
|
+
# https://github.com/omniauth/omniauth-oauth2/issues/81
|
44
|
+
# and also https://github.com/omniauth/omniauth-oauth2/commit/26152673224aca5c3e918bcc83075dbb0659717f#commitcomment-13935631
|
45
|
+
def callback_url
|
46
|
+
full_host + script_name + callback_path
|
47
|
+
end
|
38
48
|
end
|
39
49
|
end
|
40
50
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: clickfunnels_auth
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Green
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -28,28 +28,28 @@ dependencies:
|
|
28
28
|
name: omniauth
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 1.3.1
|
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: 1.3.1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: omniauth-oauth2
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 1.4.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: 1.4.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
@@ -120,10 +120,16 @@ files:
|
|
120
120
|
- Rakefile
|
121
121
|
- app/controllers/clickfunnels_auth/application_controller.rb
|
122
122
|
- app/controllers/clickfunnels_auth/user_sessions_controller.rb
|
123
|
+
- app/controllers/fake_auth/users_controller.rb
|
124
|
+
- app/models/clickfunnels_auth/access_token.rb
|
125
|
+
- app/views/fake_auth/users/index.html.erb
|
123
126
|
- config/cucumber.yml
|
124
127
|
- config/routes.rb
|
128
|
+
- db/migrate/20180815183533_create_access_tokens.rb
|
125
129
|
- lib/clickfunnels_auth.rb
|
130
|
+
- lib/clickfunnels_auth/controller_helper.rb
|
126
131
|
- lib/clickfunnels_auth/engine.rb
|
132
|
+
- lib/clickfunnels_auth/user_helper.rb
|
127
133
|
- lib/clickfunnels_auth/version.rb
|
128
134
|
- lib/generators/clickfunnels_auth/install/USAGE
|
129
135
|
- lib/generators/clickfunnels_auth/install/install_generator.rb
|
@@ -150,7 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
150
156
|
version: '0'
|
151
157
|
requirements: []
|
152
158
|
rubyforge_project:
|
153
|
-
rubygems_version: 2.
|
159
|
+
rubygems_version: 2.6.10
|
154
160
|
signing_key:
|
155
161
|
specification_version: 4
|
156
162
|
summary: A gem that allows a Rails app to be an OAuth client of Clickfunnels.
|