class DNSManager::Request IPC::JSON.message Login, 0 do property token : String def initialize(@token) end def handle(dnsmanagerd : DNSManager::Service, event : IPC::Event) response = dnsmanagerd.decode_token token case response when AuthD::Response::User dnsmanagerd.logged_users[event.fd] = response.user # In case we want to log their last connection. #dnsmanagerd.auth.edit_profile_content user.uid, { # "dnsmanager-last-connection" => JSON::Any.new Time.utc.to_s #} dnsmanagerd.storage.ensure_user_data response.user.uid else Response::ErrorInvalidToken.new end rescue e # FIXME: Should those be logged? Baguette::Log.error "Error: #{e}" Response::Error.new "unauthorized" end end DNSManager.requests << Login end