30 lines
431 B
Crystal
30 lines
431 B
Crystal
|
require "json"
|
||
|
|
||
|
class AuthD::Token
|
||
|
include JSON::Serializable
|
||
|
|
||
|
property login : String
|
||
|
property uid : Int32
|
||
|
|
||
|
def initialize(@login, @uid)
|
||
|
end
|
||
|
|
||
|
def to_h
|
||
|
{
|
||
|
:login => login,
|
||
|
:uid => uid
|
||
|
}
|
||
|
end
|
||
|
|
||
|
def to_s(key)
|
||
|
JWT.encode to_h, key, JWT::Algorithm::HS256
|
||
|
end
|
||
|
|
||
|
def self.from_s(key, str)
|
||
|
payload, meta = JWT.decode str, key, JWT::Algorithm::HS256
|
||
|
|
||
|
self.new payload["login"].as_s, payload["uid"].as_i
|
||
|
end
|
||
|
end
|
||
|
|