jwtgen 0.1.0 → 0.1.1
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 +8 -9
- data/exe/jwtgen +6 -8
- data/lib/jwtgen.rb +2 -12
- data/lib/jwtgen/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c513f1d42f21c55e5f6a5ba526ba3206899461c1
|
4
|
+
data.tar.gz: d0f48c7e175acfa4c255929f176466852d825153
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3daadfe06fc15081791c035f6da9aa44ce9824741ce2daf4fdddeda1f320ffffe3c5c40ce50db4b5ab9f1475fe5a44769c1a1ba7b3a70300a3eab3601c22d395
|
7
|
+
data.tar.gz: 36e2676787c48c632ffe7f96d353c32ba0d53711fd564b695d748aa9f523580585bec4cba8c9030fd02d7a41cc93f1370ab98a743553f0bc72e531b91f007ee0
|
data/README.md
CHANGED
@@ -18,18 +18,17 @@ Check dependencies of [Ruby Clipboard](https://github.com/janlelis/clipboard/)
|
|
18
18
|
|
19
19
|
Basic usage without encryption:
|
20
20
|
|
21
|
-
|
22
|
-
|
23
|
-
The JWT has been copied to your clipboard!
|
24
|
-
```
|
21
|
+
$ jwtgen user_id 1234 email ted.crilly@example.com
|
22
|
+
The JWT has been copied to your clipboard!
|
25
23
|
|
26
24
|
Provide HMAC algorithm and secret key:
|
27
25
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
26
|
+
$ jwtgen --key my$ecretK3y --algorithm HS512 \
|
27
|
+
user_id 1234 \
|
28
|
+
email dougal.mcguire@example.com \
|
29
|
+
name "Dougal McGuire" \
|
30
|
+
role Manager
|
31
|
+
The JWT has been copied to your clipboard!
|
33
32
|
|
34
33
|
## Development
|
35
34
|
|
data/exe/jwtgen
CHANGED
@@ -4,14 +4,9 @@ require 'optparse'
|
|
4
4
|
options = {}
|
5
5
|
OptionParser.new do |opts|
|
6
6
|
ALGORITHMS = %w(HS256 HS512256 HS384 HS512)
|
7
|
-
opts.banner = 'Usage: jwtgen [options]
|
8
|
-
|
9
|
-
|
10
|
-
options[:payload] = payload
|
11
|
-
end
|
12
|
-
opts.on('--separator SEPARATOR', 'Payload key-value separator (default "=")') do |separator|
|
13
|
-
options[:separator] = separator
|
14
|
-
end
|
7
|
+
opts.banner = 'Usage: jwtgen [options] [arguments]
|
8
|
+
arguments JWT payload key-value pairs, e.g. key1 value1 key2 value2 key3 value3
|
9
|
+
Required inputs (keys) are user_id and email.'
|
15
10
|
opts.on('--key KEY', 'HMAC secret key') do |key|
|
16
11
|
options[:key] = key
|
17
12
|
end
|
@@ -20,6 +15,9 @@ OptionParser.new do |opts|
|
|
20
15
|
end
|
21
16
|
end.parse!
|
22
17
|
|
18
|
+
ARGV << '' if ARGV.size % 2 == 1
|
19
|
+
options[:payload] = Hash[*ARGV].inject({}) { |acc,(k,v)| acc[k.to_sym] = v; acc }
|
20
|
+
|
23
21
|
require 'jwtgen'
|
24
22
|
require 'clipboard'
|
25
23
|
|
data/lib/jwtgen.rb
CHANGED
@@ -5,8 +5,8 @@ class Jwtgen
|
|
5
5
|
EMAIL_REGEXP = /\A[^@]+@([^@\.]+\.)+[^@\.]+\z/
|
6
6
|
|
7
7
|
def initialize(opts)
|
8
|
-
|
9
|
-
|
8
|
+
@payload = opts[:payload]
|
9
|
+
raise ArgumentError, 'Option `payload` is required' unless @payload && @payload.is_a?(Hash)
|
10
10
|
raise ArgumentError, 'Payload key `user_id` is required' unless @payload[:user_id] && @payload[:user_id] != ''
|
11
11
|
raise ArgumentError, 'Payload key `email` is required' unless @payload[:email] && @payload[:email] != ''
|
12
12
|
raise ArgumentError, 'Email is invalid' unless @payload[:email] =~ EMAIL_REGEXP
|
@@ -17,14 +17,4 @@ class Jwtgen
|
|
17
17
|
def encode
|
18
18
|
JWT.encode(@payload, @key, @algorithm)
|
19
19
|
end
|
20
|
-
|
21
|
-
private
|
22
|
-
def normalize_and_assign_payload(opts)
|
23
|
-
sep = opts.fetch(:separator, '=')
|
24
|
-
@payload = opts[:payload].reduce({}) do |acc, kv|
|
25
|
-
k, v = kv.split(sep)
|
26
|
-
acc[k.to_sym] = v
|
27
|
-
acc
|
28
|
-
end
|
29
|
-
end
|
30
20
|
end
|
data/lib/jwtgen/version.rb
CHANGED