2020-12-09 19:00:18 +01:00
|
|
|
class DNSManager::Request
|
|
|
|
IPC::JSON.message Login, 0 do
|
|
|
|
property token : String
|
|
|
|
|
|
|
|
def initialize(@token)
|
|
|
|
end
|
|
|
|
|
2023-02-15 19:21:49 +01:00
|
|
|
def handle(dnsmanagerd : DNSManager::Service, event : IPC::Event)
|
2023-06-15 14:11:13 +02:00
|
|
|
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
|
2020-12-09 19:00:18 +01:00
|
|
|
rescue e
|
|
|
|
# FIXME: Should those be logged?
|
2023-06-18 02:36:30 +02:00
|
|
|
Baguette::Log.error "Error: #{e}"
|
2023-05-07 18:32:32 +02:00
|
|
|
Response::Error.new "unauthorized"
|
2020-12-09 19:00:18 +01:00
|
|
|
end
|
|
|
|
end
|
|
|
|
DNSManager.requests << Login
|
|
|
|
end
|