diff options
author | Kamil Trzcinski <ayufan@ayufan.eu> | 2016-05-15 02:23:31 +0300 |
---|---|---|
committer | Kamil Trzcinski <ayufan@ayufan.eu> | 2016-05-15 02:23:31 +0300 |
commit | f4f9184a01bc7442411bbcffd9b6a86784fa5f53 (patch) | |
tree | 0d841ce4a6ccedc06035d90d32a31c017d443d2b /lib/json_web_token/token.rb | |
parent | df973df8c536fb9ffe0a9ed4e92f7d9144eb687a (diff) |
Rename JWT to JSONWebToken
Diffstat (limited to 'lib/json_web_token/token.rb')
-rw-r--r-- | lib/json_web_token/token.rb | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/lib/json_web_token/token.rb b/lib/json_web_token/token.rb new file mode 100644 index 00000000000..5b67715b0b2 --- /dev/null +++ b/lib/json_web_token/token.rb @@ -0,0 +1,46 @@ +module JSONWebToken + class Token + attr_accessor :issuer, :subject, :audience, :id + attr_accessor :issued_at, :not_before, :expire_time + + def initialize + @id = SecureRandom.uuid + @issued_at = Time.now + # we give a few seconds for time shift + @not_before = issued_at - 5.seconds + # default 60 seconds should be more than enough for this authentication token + @expire_time = issued_at + 1.minute + @custom_payload = {} + end + + def [](key) + @custom_payload[key] + end + + def []=(key, value) + @custom_payload[key] = value + end + + def encoded + raise NotImplementedError + end + + def payload + @custom_payload.merge(default_payload) + end + + private + + def default_payload + { + jti: id, + aud: audience, + sub: subject, + iss: issuer, + iat: issued_at.to_i, + nbf: not_before.to_i, + exp: expire_time.to_i + }.compact + end + end +end |