Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

Ошибка сервера из-за отозванного доступа у приложения в избранном

Проблема

Если опубликованное приложение в десктоп-клиенте добавлено пользователем в избранное, а затем доступ к нему отозван администратором на уровне LDAP-группы (удалив ее из групп доступа приложения), то при повторном входе пользователя в десктоп-клиент вместо списка опубликованных ресурсов отображается сообщение «Ошибка сервера».

Причина

Termit пытается получить ресурс из списка избранного, но из-за отсутствия доступа получает пустое значение. В логах контейнера termit-session-service есть сообщение следующего вида:

java.lang.NullPointerException: exception: Cannot invoke "ru.orionsoft.termit.broker.model.entity.Resource.getId()" because the return value of "ru.orionsoft.termit.broker.model.entity.ResourcePreference.getResource()" is null
java.lang.NullPointerException: Cannot invoke "ru.orionsoft.termit.broker.model.entity.Resource.getId()" because the return value of "ru.orionsoft.termit.broker.model.entity.ResourcePreference.getResource()" is null

Решение

Для решения проблемы необходимо удалить весь список избранного у пользователя в БД. Для этого выполните SQL-запрос:

DELETE FROM resource_preferences WHERE user_id = (SELECT id FROM users WHERE username = 'username');

Где username - имя пользователя.

В БД может существовать несколько пользователей с одинаковым именем, поэтому, чтобы получить правильный user_id, можно обратиться к тексту самой ошибки: в нем указан user_id пользователя, у которого возникла проблема.