class AuthD::Request IPC::JSON.message Login, 0 do property login : String property password : String def initialize(@login, @password) end def handle(authd : AuthD::Service, fd : Int32) begin user = authd.users_per_login.get @login rescue e : DODB::MissingEntry return Response::Error.new "invalid credentials" end return Response::Error.new "invalid credentials" if user.nil? if user.password_hash != authd.hash_password @password return Response::Error.new "invalid credentials" end user.date_last_connection = Time.local token = user.to_token # Change the date of the last connection. authd.users_per_uid.update user.uid.to_s, user # On successuful connection: store the authenticated user in a hash. authd.logged_users[fd] = user.to_public Response::Login.new (token.to_s authd.configuration.shared_key), user.uid end end AuthD.requests << Login end