clerk-rails 0.1.10 → 0.1.11
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/app/models/clerk/application_record.rb +2 -2
- data/app/models/clerk/session_token.rb +25 -0
- data/config/initializers/add_application_helpers.rb +2 -1
- data/lib/clerk-rails.rb +34 -10
- data/lib/clerk/engine.rb +2 -1
- data/lib/clerk/helpers.rb +28 -0
- data/lib/clerk/version.rb +1 -1
- metadata +18 -3
- data/app/helpers/clerk/application_helper.rb +0 -48
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 954cbd3886921775435d732704b6ae645237571ff1eb538979e86b252419a38d
|
4
|
+
data.tar.gz: bbcaa255ffb48a83f694398467e6afca6df2fc9e7138bdf45e9ed0628ad1c8fd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3e34b00a89204fa089c6534e385d167b3e0ec961257b1e18bc8463e598adad7ab1580c0799fcdcf8c37d2dabd928d7fe7d6d4fe888a2876f4712c5ae647640a8
|
7
|
+
data.tar.gz: e401f93db2c7bee14b7f70def532e247f97e400bc545c08040315be1c36c84d2f8a7b3724ca4f1d865018144bbec30709ac18977190d036a08b5c391e7b8e120
|
@@ -3,8 +3,8 @@ module Clerk
|
|
3
3
|
self.abstract_class = true
|
4
4
|
establish_connection Clerk.database_connection_url
|
5
5
|
def self.clerk_table_name(table_name)
|
6
|
-
version = Clerk::VERSION.split(".").map.with_index{|x, i| (i==2 ? "00" : x.rjust(2, '0')) }.join
|
7
|
-
"
|
6
|
+
# version = Clerk::VERSION.split(".").map.with_index{|x, i| (i==2 ? "00" : x.rjust(2, '0')) }.join
|
7
|
+
"#{table_name}_01"
|
8
8
|
end
|
9
9
|
|
10
10
|
def self.clerk_table_name_nc(table_name)
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Clerk
|
2
|
+
class SessionToken < Clerk::ApplicationRecord
|
3
|
+
self.table_name = self.clerk_table_name("session_tokens")
|
4
|
+
self.primary_key = 'id'
|
5
|
+
|
6
|
+
belongs_to :account, class_name: "Clerk::Account"
|
7
|
+
|
8
|
+
def self.find_account(cookie:)
|
9
|
+
require "bcrypt"
|
10
|
+
begin
|
11
|
+
id, token, token_hash = Clerk.decrypt(cookie).split("--")
|
12
|
+
if BCrypt::Password.new(token_hash) == token
|
13
|
+
Account.joins(:session_token).where(token_hash: token_hash, )
|
14
|
+
SessionToken.eager_load(:account).find_by!(id: id, token_hash: token_hash)&.account
|
15
|
+
else
|
16
|
+
nil
|
17
|
+
end
|
18
|
+
rescue => e
|
19
|
+
puts "Error finding acount #{e}"
|
20
|
+
puts "Cookie #{cookie}"
|
21
|
+
nil
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -1 +1,2 @@
|
|
1
|
-
::ActionController::Base.send :
|
1
|
+
::ActionController::Base.send :helper, Clerk::Helpers
|
2
|
+
::ActionController::Base.send :include, Clerk::Helpers
|
data/lib/clerk-rails.rb
CHANGED
@@ -2,6 +2,7 @@ require "clerk/version"
|
|
2
2
|
require "clerk/api"
|
3
3
|
require "clerk/engine"
|
4
4
|
require "clerk/id"
|
5
|
+
require "clerk/helpers"
|
5
6
|
require "faraday"
|
6
7
|
|
7
8
|
module Clerk
|
@@ -11,15 +12,6 @@ module Clerk
|
|
11
12
|
def configure
|
12
13
|
@config = Configuration.new
|
13
14
|
yield config
|
14
|
-
# if Rails.env.development?
|
15
|
-
config.environment = :development
|
16
|
-
config.session_mode = :cookie_session
|
17
|
-
config.cookie_host = nil
|
18
|
-
# else
|
19
|
-
# config.environment = client.environment.to_sym
|
20
|
-
# config.session_mode = client.session_mode.to_sym
|
21
|
-
# config.cookie_host = client.cookie_host
|
22
|
-
# end
|
23
15
|
end
|
24
16
|
|
25
17
|
def database_connection_url
|
@@ -48,9 +40,41 @@ module Clerk
|
|
48
40
|
def app_url
|
49
41
|
@app_url ||= "https://#{Clerk.config.app_host}"
|
50
42
|
end
|
43
|
+
|
44
|
+
def cipher_key
|
45
|
+
@cipher_key ||= ::Base64.strict_decode64(Clerk.config.cipher_key)
|
46
|
+
end
|
47
|
+
|
48
|
+
def decrypt(encrypted_message)
|
49
|
+
cipher = OpenSSL::Cipher.new("aes-256-gcm")
|
50
|
+
|
51
|
+
encrypted_data, iv, auth_tag = encrypted_message.split("--".freeze).map { |v| ::Base64.strict_decode64(v) }
|
52
|
+
|
53
|
+
# Currently the OpenSSL bindings do not raise an error if auth_tag is
|
54
|
+
# truncated, which would allow an attacker to easily forge it. See
|
55
|
+
# https://github.com/ruby/openssl/issues/63
|
56
|
+
raise InvalidMessage if (auth_tag.nil? || auth_tag.bytes.length != 16)
|
57
|
+
|
58
|
+
cipher.decrypt
|
59
|
+
cipher.key = cipher_key
|
60
|
+
cipher.iv = iv
|
61
|
+
cipher.auth_tag = auth_tag
|
62
|
+
cipher.auth_data = ""
|
63
|
+
|
64
|
+
message = cipher.update(encrypted_data)
|
65
|
+
message << cipher.final
|
66
|
+
message
|
67
|
+
end
|
51
68
|
end
|
52
69
|
|
53
70
|
class Configuration
|
54
|
-
attr_accessor :
|
71
|
+
attr_accessor :accounts_host,
|
72
|
+
:app_host,
|
73
|
+
:cipher_key,
|
74
|
+
:database_url,
|
75
|
+
:last_account,
|
76
|
+
:ngrok_authtoken,
|
77
|
+
:tunnel_cert,
|
78
|
+
:tunnel_key
|
55
79
|
end
|
56
80
|
end
|
data/lib/clerk/engine.rb
CHANGED
@@ -13,8 +13,9 @@ module Clerk
|
|
13
13
|
begin
|
14
14
|
config_data = Clerk.api.get('/api/environment').data
|
15
15
|
Clerk.configure do |config|
|
16
|
-
config.app_host = config_data[:APP_HOST]
|
17
16
|
config.accounts_host = config_data[:ACCOUNTS_HOST]
|
17
|
+
config.app_host = config_data[:APP_HOST]
|
18
|
+
config.cipher_key = config_data[:CIPHER_KEY]
|
18
19
|
config.database_url = config_data[:DATABASE_URL]
|
19
20
|
config.ngrok_authtoken = config_data[:NGROK_AUTHTOKEN]
|
20
21
|
config.tunnel_cert = config_data[:TUNNEL_CERT]
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# We're not including this in clerk-rails/app/helpers because it is injected
|
2
|
+
# into ActionController::Base via initializes/add_application_helpers and cannot be in the autoload path
|
3
|
+
# https://stackoverflow.com/questions/29636334/a-copy-of-xxx-has-been-removed-from-the-module-tree-but-is-still-active
|
4
|
+
module Clerk
|
5
|
+
module Helpers
|
6
|
+
def current_account
|
7
|
+
@clerk_current_account ||= SessionToken.find_account(
|
8
|
+
cookie: cookies[:clerk_session]
|
9
|
+
)
|
10
|
+
end
|
11
|
+
|
12
|
+
def clerk_sign_out_path
|
13
|
+
"#{Clerk.accounts_url}/sign_out"
|
14
|
+
end
|
15
|
+
|
16
|
+
def clerk_sign_in_path
|
17
|
+
"#{Clerk.accounts_url}"
|
18
|
+
end
|
19
|
+
|
20
|
+
def clerk_sign_up_path
|
21
|
+
"#{Clerk.accounts_url}/sign_up"
|
22
|
+
end
|
23
|
+
|
24
|
+
def clerk_add_card_path(account_id:, redirect_path:)
|
25
|
+
"#{Clerk.accounts_url}/add_card?account_id=#{account_id}&redirect_path=#{redirect_path}"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/clerk/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: clerk-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Clerk
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-02-
|
11
|
+
date: 2019-02-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 5.2.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bcrypt
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: pg
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -136,7 +150,6 @@ files:
|
|
136
150
|
- app/assets/javascripts/clerk/application.js
|
137
151
|
- app/assets/stylesheets/clerk/application.css
|
138
152
|
- app/controllers/clerk/application_controller.rb
|
139
|
-
- app/helpers/clerk/application_helper.rb
|
140
153
|
- app/jobs/clerk/application_job.rb
|
141
154
|
- app/mailers/clerk/application_mailer.rb
|
142
155
|
- app/models/clerk/account.rb
|
@@ -146,6 +159,7 @@ files:
|
|
146
159
|
- app/models/clerk/payment_method.rb
|
147
160
|
- app/models/clerk/plan.rb
|
148
161
|
- app/models/clerk/role.rb
|
162
|
+
- app/models/clerk/session_token.rb
|
149
163
|
- app/models/clerk/subscription.rb
|
150
164
|
- app/models/concerns/clerk/clerked.rb
|
151
165
|
- app/models/concerns/clerk/errors.rb
|
@@ -157,6 +171,7 @@ files:
|
|
157
171
|
- lib/clerk-rails.rb
|
158
172
|
- lib/clerk/api.rb
|
159
173
|
- lib/clerk/engine.rb
|
174
|
+
- lib/clerk/helpers.rb
|
160
175
|
- lib/clerk/id.rb
|
161
176
|
- lib/clerk/tunnel.rb
|
162
177
|
- lib/clerk/version.rb
|
@@ -1,48 +0,0 @@
|
|
1
|
-
module Clerk
|
2
|
-
module ApplicationHelper
|
3
|
-
def current_account
|
4
|
-
return @clerk_current_account if defined?(@clerk_current_account)
|
5
|
-
@clerk_current_account ||= begin
|
6
|
-
if Clerk.config.session_mode==:database_session
|
7
|
-
raise "TODO"
|
8
|
-
elsif Clerk.config.session_mode==:cookie_session
|
9
|
-
Clerk::Account.find_by(id: current_account_id)
|
10
|
-
end
|
11
|
-
rescue => e
|
12
|
-
puts e
|
13
|
-
nil
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def current_account_id
|
18
|
-
return @clerk_current_account_id if defined?(@clerk_current_account_id)
|
19
|
-
@clerk_current_account_id ||= begin
|
20
|
-
if Clerk.config.session_mode==:database_session
|
21
|
-
current_account.id
|
22
|
-
elsif Clerk.config.session_mode==:cookie_session
|
23
|
-
session_cookie = JSON.parse(cookies[:clerk_session])
|
24
|
-
nil if session_cookie.nil?
|
25
|
-
JSON.parse(session_cookie["d"])["k"]
|
26
|
-
end
|
27
|
-
rescue => e
|
28
|
-
nil
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
def clerk_sign_out_path
|
33
|
-
"#{Clerk.accounts_url}/sign_out"
|
34
|
-
end
|
35
|
-
|
36
|
-
def clerk_sign_in_path
|
37
|
-
"#{Clerk.accounts_url}"
|
38
|
-
end
|
39
|
-
|
40
|
-
def clerk_sign_up_path
|
41
|
-
"#{Clerk.accounts_url}/sign_up"
|
42
|
-
end
|
43
|
-
|
44
|
-
def clerk_add_card_path(account_id:, redirect_path:)
|
45
|
-
"#{Clerk.accounts_url}/add_card?account_id=#{account_id}&redirect_path=#{redirect_path}"
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|