Страницы

Поиск по вопросам

вторник, 7 января 2020 г.

Права доступа extjs

#extjs


Доброго времени суток. Столкнулся с задачей добавления прав доступа ко views extjs.
На уме только один вариант загружать json типа:
{
    view1: 1,
    view2: 0,
    view3: 0
}
Где 1 - write, 0 - read. И каждому view передавать параметром свой access. И уже
в initComponent ставить условие включать тот или иной элемент во view или нет. Есть
более красивые варианты? Может кто-то уже сталкивался с подобной задачей?    


Ответы

Ответ 1



Раз стоит задача, что каждый view может принимать разные вариации в зависимости от прав доступа к нему, то да — "разруливать" эти вариации следует в initComponent. Вот только информацию о правах доступа я бы передавал не параметрами, а реализовал бы глобально доступный метод (через синглтон), который бы принимал аргументом имя view (и ещё, может быть, его контекст) и давал бы ответы "read", "write", "none" и т.п. Каждый view в своём initComponent опрашивал бы этот метод и получал бы ответ о том, как ему самого себя представить юзеру. Такой подход позволит реализовать любую кастомную логику выдачи ответов "read", "write", "none" по имени view, и по умолчанию можно как раз настроить эту логику на опрос JSON из вашего примера, который в свою очередь придёт с сервера.

Ответ 2



Возможно, есть более правильные и тривиальные решения, но в нашей конторе это реализовано следующим образом. Авторизация в системе у нас проходит без участия ExtJS (4.2), потому что стандартные компоненты не позволяют работать функционалу автосохранения пароля в браузере. После авторизации, на странице мы создаем некий DOM элемент со статичным ID, в котором храним массив переменных с уровнем доступа, чтобы каждый раз не запрашивать их (в массиве более 500 значений). Для доступа к данным используем Ext.get('element_id'). В initComponent и уже прогруженных View мы или дизейблим элементы, или вовсе их не рендерим. Но на стороне API всегда сохраняется проверка прав доступа.

Комментариев нет:

Отправить комментарий