Class: BetterRecord::JWT
Defined Under Namespace
Modules: ControllerMethods
Constant Summary
collapse
- CHARACTERS =
[*('a'..'z'), *('A'..'Z'), *(0..9).map(&:to_s), *'!@#$%^&*()'.split('')]
- DEFAULT_OPTIONS =
{ enc: 'A256GCM', alg: 'dir', zip: 'DEF' }
Class Method Summary
collapse
Class Method Details
.decode(payload, sig_key = nil, enc_key = nil) ⇒ Object
Also known as:
read, decrypt, deflate
55
56
57
|
# File 'lib/better_record/jwt.rb', line 55
def decode(payload, sig_key = nil, enc_key = nil)
::JWT.decode(::JWE.decrypt(payload, (enc_key || encryption_key)), (sig_key || signing_key), true, algorithm: 'HS512')[0]
end
|
.encode(payload, sig_key = nil, enc_key = nil, options = nil) ⇒ Object
Also known as:
create, encrypt, inflate
47
48
49
|
# File 'lib/better_record/jwt.rb', line 47
def encode(payload, sig_key = nil, enc_key = nil, options = nil)
::JWE.encrypt ::JWT.encode(payload, (sig_key || signing_key), 'HS512'), (enc_key || encryption_key), (options || encrypt_options)
end
|
.encrypt_options ⇒ Object
39
40
41
|
# File 'lib/better_record/jwt.rb', line 39
def encrypt_options
@encrypt_options ||= DEFAULT_OPTIONS
end
|
.encrypt_options=(options) ⇒ Object
43
44
45
|
# File 'lib/better_record/jwt.rb', line 43
def encrypt_options=(options)
@encrypt_options = options || DEFAULT_OPTIONS
end
|
.encryption_key ⇒ Object
19
20
21
|
# File 'lib/better_record/jwt.rb', line 19
def encryption_key
@encryption_key ||= gen_encryption_key
end
|
.encryption_key=(key) ⇒ Object
23
24
25
|
# File 'lib/better_record/jwt.rb', line 23
def encryption_key=(key)
@encryption_key = key || gen_encryption_key
end
|
.gen_encryption_key ⇒ Object
15
16
17
|
# File 'lib/better_record/jwt.rb', line 15
def gen_encryption_key
SecureRandom.random_bytes(32)
end
|
.gen_signing_key(length = 50) ⇒ Object
27
28
29
|
# File 'lib/better_record/jwt.rb', line 27
def gen_signing_key(length = 50)
(0...length).map { CHARACTERS[rand(CHARACTERS.length)] }.join
end
|
.signing_key ⇒ Object
31
32
33
|
# File 'lib/better_record/jwt.rb', line 31
def signing_key
@signing_key ||= gen_signing_key
end
|
.signing_key=(key) ⇒ Object
35
36
37
|
# File 'lib/better_record/jwt.rb', line 35
def signing_key=(key)
@signing_key = key || gen_signing_key
end
|