Migration request.

migration
Philippe PITTOLI 2024-06-10 13:47:31 +02:00
parent 8119bf7f57
commit 749889aad8
1 changed files with 39 additions and 0 deletions

39
src/requests/migration.cr Normal file
View File

@ -0,0 +1,39 @@
require "ipc/json"
require "grok"
class DNSManager::Request
IPC::JSON.message Migration, 24 do
property login : String
property domain : String
def initialize(@login, @domain)
end
def handle(dnsmanagerd : DNSManager::Service, event : IPC::Event) : IPC::JSON
user = dnsmanagerd.get_logged_user event
return Response::ErrorUserNotLogged.new unless user
dnsmanagerd.storage.user_must_be_admin! user.uid
response = dnsmanagerd.authd.get_user? @login
migrated_user = case response
when AuthD::Response::User
response.user
when AuthD::Response::ErrorMustBeAuthenticated
Baguette::Log.error "migration: not authenticated to authd"
return Response::UnknownUser.new
when AuthD::Response::ErrorUserNotFound
Baguette::Log.error "migration: user not found in authd"
return Response::UnknownUser.new
else
Baguette::Log.error "migration: unknown error while requesting authd for a user"
return Response::UnknownUser.new
end
return Response::UnknownUser.new unless migrated_user
dnsmanagerd.storage.new_domain migrated_user.uid, @domain
end
end
DNSManager.requests << Migration
end