jwtgen 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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