public function update(UserUpdaterListener $listener, $id, array $input)
    {
        if ((string) $id !== $input['id']) {
            return $listener->abortWhenUserMismatched();
        }
        $user           = Foundation::make('antares.user')->withoutGlobalScopes()->findOrFail($id);
        !empty($input['password']) && $user->password = $input['password'];
        try {
            $this->saving($user, $input, 'update');
        } catch (Exception $e) {
            Log::emergency($e);
            return $listener->updateUserFailed(['error' => $e->getMessage()]);
        }

        return $listener->userUpdated();
    }