#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 всегда сохраняется проверка прав доступа.
Комментариев нет:
Отправить комментарий