Ошибка сервера из-за отозванного доступа у приложения в избранном
Проблема
Если опубликованное приложение в десктоп-клиенте добавлено пользователем в избранное, а затем доступ к нему отозван администратором на уровне 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 пользователя, у которого возникла проблема.
|