jay_doubleu_tee 0.1.0 → 0.2.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
  SHA256:
3
- metadata.gz: 2e0f1808e15a6fb71cc47526d3de8484372e5c9f5f32da231fec7219e799e99e
4
- data.tar.gz: 7ca92e01391c1eccae6ae8b682ccf8b36e6a0c064f64360659affed49d3922a0
3
+ metadata.gz: 466bf244fedd2cc739d50c571486552fd5ba396b4dabef84f67cd048ae6b6907
4
+ data.tar.gz: 9ff43ce6564a8aa048c30309b0a9c36bf1b41a9635046ae72a21ae668161fe47
5
5
  SHA512:
6
- metadata.gz: 9bbe5175ffd3190eb9846b3f660c5a912fda3c22eaaa086d39715b2cabd1336fb2b9e14ece3cc301284e425e995b5c34fcf090f10be0ab256f67034c6c05db1c
7
- data.tar.gz: 64b240f9370f3f3489703465ae4ed2c92927234d18be7313cf1b7d5d75ce0bf7dd90996d69f5aa6dc68f80b9fdf339b4dad5d10879b6fd7031894fc640a49256
6
+ metadata.gz: 58971ff4a53581205acdfcb211131e3ff2daf9a09ddb4fa5da1bcfe828eb3a34baffcc9fdeee23cffe403e8ec0b9de8db074b33f6999f1943531c39bef1b7ea1
7
+ data.tar.gz: 3ca090115afdb48737b4e6352d377b6b268be6fa3b0f86f95a70540b046b3acedf83fc66417b8716b2808d3e24155a1c52b90150c94883ed12eb9b61e8f5dfc0
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- jay_doubleu_tee (0.1.0)
4
+ jay_doubleu_tee (0.2.0)
5
5
  dry-configurable
6
6
  dry-effects
7
7
  dry-monads
data/README.md CHANGED
@@ -24,6 +24,22 @@ Or install it yourself as:
24
24
 
25
25
  ## Usage
26
26
 
27
+ `jay_double_uti` uses RS256 algorithm by default, so youl'll need a private/public key pair and the access token for testing it out.
28
+
29
+ In your console run
30
+
31
+ ```ruby
32
+ require 'jwt'
33
+ payload = {
34
+ data: { user_id: "de804507-5d03-4493-a038-d62f499b8a96" }, scopes: ""
35
+ }
36
+ private_key = OpenSSL::PKey::RSA.generate 2048
37
+ secret = private_key.public_key.to_s
38
+ token = JWT.encode payload, private_key, 'RS256'
39
+ ```
40
+
41
+ Then save the `ENV` variable `JAY_DOUBLEU_TEE_PUBLIC_KEY` by setting the as a value your secret.
42
+
27
43
  ### Plain ruby Rack application
28
44
 
29
45
  ```ruby
@@ -35,7 +51,7 @@ class App
35
51
  def call(env)
36
52
  status, body =
37
53
  if auth.success?
38
- [200, ["Hello, World!\n#{auth.value!}"]]
54
+ [200, [{ message: "Hello, World!", auth: auth.value! }]]
39
55
  else
40
56
  [401, [{ error: auth.failure }.to_json]]
41
57
  end
@@ -55,6 +71,27 @@ use JayDoubleuTee::Authentication
55
71
  run App.new
56
72
  ```
57
73
 
74
+ ```shell
75
+ curl --location --request GET 'http://localhost:9292' \
76
+ --header 'Authorization: Bearer <<YOUR_TOKEN>>'
77
+
78
+ # => 200:
79
+ # {
80
+ # message: 'Hello, World!,
81
+ # auth: {
82
+ # data: { user_id: "de804507-5d03-4493-a038-d62f499b8a96" },
83
+ # scopes: ""
84
+ # }
85
+ # }
86
+ ```
87
+
88
+ ```shell
89
+ curl --location --request GET 'http://localhost:9292' \
90
+ --header 'Authorization: Bearer invalid'
91
+
92
+ # => 401: { error: Unauthorized. Token invalid }
93
+ ```
94
+
58
95
  ### Hanami 2.0
59
96
 
60
97
  ```ruby
@@ -75,7 +112,7 @@ use JayDoubleuTee::Authentication
75
112
 
76
113
  #### Supported algorithms
77
114
 
78
- JayDoubleuTee does not use any encryption algoritym by default. 'none' is set.
115
+ JayDoubleuTee users RS256 encryption algoritym by default, but you can completely disable the token signature validation by setting up algorithm to 'none'. Check out the Configuration section.
79
116
 
80
117
  Below are listed all supported algoritms at the moment.
81
118
 
@@ -87,7 +124,7 @@ For more info about each of them refer to [jwt documentation](https://github.com
87
124
 
88
125
  ### Configuration
89
126
 
90
- To set encryption algorithm, you can configure
127
+ To set encryption algorithm, you can configure several fields
91
128
 
92
129
  ```ruby
93
130
  JayDoubleuTee.configure do |config|
@@ -104,11 +141,19 @@ After checking out the repo, run `bin/setup` to install dependencies. Then, run
104
141
 
105
142
  To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
106
143
 
144
+ ### Resources
145
+
146
+ It's built on top of several gems to ensure the best user experience.
147
+
148
+ - [JWT](https://github.com/jwt/ruby-jwt#algorithms-and-usage)
149
+ - [dry-effects](https://dry-rb.org/gems/dry-effects). Here is the [video tutorial for dry-effects](https://hanamimastery.com/episodes/11-effective-ruby-programming-with-dry-effects)
150
+ - [dry-monads](https://dry-rb.org/gems/dry-monads). Here is a [video tutorial for dry-monads](https://hanamimastery.com/episodes/7-untangle-your-app-with-dry-monads)
151
+ - [dry-configurable](https://dry-rb.org/gems/dry-configurable). Here is the [video tutorial for dry-configurable](https://hanamimastery.com/episodes/5-configure-anything-with-dry-configurable)
152
+
107
153
  ## Contributing
108
154
 
109
155
  Bug reports and pull requests are welcome on GitHub at https://github.com/hanamimastery/jay_doubleu_tee. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/hanamimastery/jay_doubleu_tee/blob/master/CODE_OF_CONDUCT.md).
110
156
 
111
-
112
157
  ## License
113
158
 
114
159
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
@@ -1,3 +1,3 @@
1
1
  module JayDoubleuTee
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -14,10 +14,10 @@ module JayDoubleuTee
14
14
 
15
15
  extend Dry::Configurable
16
16
 
17
- setting :algorithm, default: 'none' do |value|
17
+ setting :algorithm, default: 'RS256' do |value|
18
18
  raise ConfigurationError, "Unsupported algorithm." unless ALGORITHMS.include?(value)
19
19
  value
20
20
  end
21
21
 
22
- setting :secret, default: nil
22
+ setting :secret, default: ENV['JAY_DOUBLEU_TEE_PUBLIC_KEY']
23
23
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jay_doubleu_tee
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sebastian Wilgosz